设为首页 收藏本站
查看: 1200|回复: 0

[经验分享] apache tomcat

[复制链接]

尚未签到

发表于 2018-11-22 06:08:21 | 显示全部楼层 |阅读模式
  apache
  别名
  
  ServerAdmin webmaster@dummy-host.example.com
  DocumentRoot /data/httpd
  ServerName node144.xy.com
  ServerAlias  beta.xy.com
  ErrorLog  /data/logs/httpd/node144.xy.com-error_log
  CustomLog /data/logs/httpd/node144.xy.com-access_log common
  

  alias /test/ "/data/httpd/zabbix/" #最后的/前面加了后面也要加,不加都不加
  

  #ErrorDocument 403 http://www.xy.com/403.html 定义错误码页面
  ErrorDocument 403 /403.html
  ErrorDocument 404 /404.html
  

  RewriteEngine on
  #RewriteRule ^/$     http://www.xy.com/pg/index.html   [R=301]
  RewriteRule ^/$     /test   [R=301]  #把/重写,访问/就是访问/test
  

  RewriteEngine on
  RewriteMap  hosts-deny txt:/data/tomcat/xy.blacklist
  RewriteMap  hosts-allow txt:/data/tomcat/xy.whitelist
  RewriteCond     ${hosts-allow:%{REMOTE_ADDR}|NOT-FOUND}  NOT-FOUND
  RewriteCond     ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}  !=NOT-FOUND
  RewriteRule ^(.*)$   -   [F,L]
  #允许和拒绝某些ip访问,两个 RewriteCond 是且关系。只有两个同时满足才重写拒绝
  如果改成或 [OR] 则只有当allow有deny没有的ip才能访问
  [root@node144 conf.d]# tail /data/tomcat/xy.whitelist
  192.168.113.47  allow   ## xf
  [root@node144 conf.d]# tail /data/tomcat/xy.blacklist
  192.168.113.60 deny # 20141203 456 xy
  ######
  RewriteEngine on
  RewriteCond %{HTTP_USER_AGENT} ^(.*)Googlebot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^Baiduspider [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^Sosospider [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^Sogou [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^YodaoBot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^YoudaoBot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^mvtech-spider [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^FyberSpider  [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^bjspider [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^Nutch [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^Tasapspider [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^(.*)IEShow [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ^Gecko [NC]
  RewriteRule ^(.*)$ - [F]
  RewriteCond指令可以在RewriteRule中使用,没有匹配的将被RewriteRule忽略
  格式:RewriteCond TestString CondPattern
  NC:忽略大小写
  OR:或关系
  ######
  #
  #DirectoryIndex index.html index.html.var
  #Options Indexes FollowSymLinks  #不加默认关闭,没index.html时列目录,和软连接跟随
  #        AllowOverride AuthConfig FileInfo
  #       Order allow,deny
  #       Allow from all
  #   
  
  

  安装tomcat
  vi /etc/profile.d/java.sh
  JAVA_HOME=/usr/java/latest
  PATH=/usr/java/latest/bin:$PATH
  CATALINA_HOME=/usr/local/tomcat
  export JAVA_HOME CATALINA_HOME PATH
  

  启动脚本
  #!/bin/sh
  # Tomcat init script for Linux.
  #
  # chkconfig: 2345 96 14
  # description: The Apache Tomcat servlet/JSP container.
  # JAVA_OPTS='-Xms64m -Xmx128m'
  JAVA_HOME=/usr/java/latest
  CATALINA_HOME=/usr/local/tomcat
  export JAVA_HOME CATALINA_HOME
  

  case $1 in
  start)
  exec $CATALINA_HOME/bin/catalina.sh start ;;
  stop)
  exec $CATALINA_HOME/bin/catalina.sh stop;;
  restart)
  $CATALINA_HOME/bin/catalina.sh stop
  sleep 2
  exec $CATALINA_HOME/bin/catalina.sh start ;;
  configtest)
  exec $CATALINA_HOME/bin/catalina.sh configtest ;;
  *)
  exec $CATALINA_HOME/bin/catalina.sh * ;;
  esac
  

  建立一个testapp
  
  
  TomcatA
  
  TomcatA.magedu.com
  
  
  Session ID
  
  
  
  
  Created on
  
  
  
  
  
  

  
  
  TomcatB
  
  TomcatB.magedu.com
  
  
  Session ID
  
  
  
  
  Created on
  
  
  
  
  
  -------------------------------------
  apache反向代理tomcat
  

  ProxyPreserveHost {On|Off}:如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器,而不再使用ProxyPass指定的服务器地址。如果想在反向代理中支持虚拟主机,则需要开启此项,否则就无需打开此功能。
  

  ProxyVia  {On|Off|Full|Block}:用于控制在http首部是否使用Via:,主要用于在多级代理中控制代理请求的流向。默认为Off,即不启用此功能;On表示每个请求和响应报文均添加Via:;Full表示每个Via:行都会添加当前apache服务器的版本号信息;Block表示每个代理请求报文中的Via:都会被移除。
  

  ProxyRequests {On|Off}:是否开启apache正向代理的功能;启用此项时为了代理http协议必须启用mod_proxy_http模块。同时,如果为apache设置了ProxyPass,则必须将ProxyRequests设置为Off。
  

  ProxyPass  [path]  !|url  [key=value key=value ...]]:将后端服务器某URL与当前服务器的某虚拟路径关联起来作为提供服务的路径,path为当前服务器上的某虚拟路径,url为后端服务器上某URL路径。使用此指令时必须将ProxyRequests的值设置为Off。需要注意的是,如果path以“/”结尾,则对应的url也必须以“/”结尾,反之亦然。
  另外,mod_proxy模块在httpd 2.1的版本之后支持与后端服务器的连接池功能,连接在按需创建在可以保存至连接池中以备进一步使用。连接池大小或其它设定可以通过在ProxyPass中使用key=value的方式定义。常用的key如下所示:
  ◇ min:连接池的最小容量,此值与实际连接个数无关,仅表示连接池最小要初始化的空间大小。
  ◇ max:连接池的最大容量,每个MPM都有自己独立的容量;都值与MPM本身有关,如Prefork的总是为1,而其它的则取决于ThreadsPerChild指令的值。
  ◇ loadfactor:用于负载均衡集群配置中,定义对应后端服务器的权重,取值范围为1-100。
  ◇ retry:当apache将请求发送至后端服务器得到错误响应时等待多长时间以后再重试。单位是秒钟。
  

  如果Proxy指定是以balancer://开头,即用于负载均衡集群时,其还可以接受一些特殊的参数,如下所示:
  ◇lbmethod:apache实现负载均衡的调度方法,默认是byrequests,即基于权重将统计请求个数进行调度,bytraffic则执行基于权重的流量计数调度,bybusyness通过考量每个后端服务器的当前负载进行调度。
  ◇ maxattempts:放弃请求之前实现故障转移的次数,默认为1,其最大值不应该大于总的节点数。
  ◇ nofailover:取值为On或Off,设置为On时表示后端服务器故障时,用户的session将损坏;因此,在后端服务器不支持session复制时可将其设置为On。
  ◇ stickysession:调度器的sticky session的名字,根据web程序语言的不同,其值为JSESSIONID或PHPSESSIONID。
  上述指令除了能在banlancer://或ProxyPass中设定之外,也可使用ProxySet指令直接进行设置,如:
  
  BalancerMember ajp://172.16.100.1:8009 loadfactor=10 route=TomcatA
  BalancerMember ajp://172.16.100.2:8009 loadfactor=10 route=TomcatB
  
  

  集群配置修改后一定要重启apache,不能从读配置文件,不然负载会不均衡,而且有很多问题
  

  apache配置文件
  [root@node144 conf.d]# cat virt.conf
  
  ServerAdmin webmaster@dummy-host.example.com
  DocumentRoot /data/httpd
  ServerName node144.xy.com
  ServerAlias beta.xy.com
  #ErrorDocument 403 http://www.ule.com/403.html
  ErrorDocument 403 /403.html
  ErrorDocument 404 /404.html
  ErrorLog  /data/logs/httpd/node144.xy.com-error_log
  CustomLog /data/logs/httpd/node144.xy.com-access_log common
  ProxyVia On
  ProxyRequests Off
  ProxyPreserveHost On
  
  BalancerMember ajp://192.168.211.147:8009 loadfactor=10 route=TomcatA
  BalancerMember ajp://192.168.211.146:8009 loadfactor=10 route=TomcatB
  
  ProxyPass / balancer://lbcluster1/
  ProxyPa***everse / balancer://lbcluster1/
  
  
  RewriteEngine on
  #RewriteRule ^/$     http://www.xy.com/pg/index.html   [R=301]
  RewriteRule ^/$     /test   [R=301]
  
  当一个掉了后,后面的请求都只会到另一台上,起来后又会负载均衡。相当于高可用
  

  ---------------
  配置Session绑定
  
  ServerAdmin webmaster@dummy-host.example.com
  DocumentRoot /data/httpd
  ServerName node144.xy.com
  ServerAlias beta.xy.com
  #ErrorDocument 403 http://www.ule.com/403.html
  ErrorDocument 403 /403.html
  ErrorDocument 404 /404.html
  ErrorLog  /data/logs/httpd/node144.xy.com-error_log
  CustomLog /data/logs/httpd/node144.xy.com-access_log common
  ProxyVia On
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass / balancer://lbcluster1/  stickysession=JSESSIONID
  ProxyPa***everse / balancer://lbcluster1/
  
  BalancerMember ajp://192.168.211.147:8009 loadfactor=10 route=TomcatB
  BalancerMember ajp://192.168.211.146:8009 loadfactor=10 route=TomcatA
  
  
  
  
  或者这样
  ProxyPass / balancer://lbcluster1/
  ProxyPa***everse / balancer://lbcluster1/
  
  BalancerMember ajp://192.168.211.147:8009 loadfactor=10 route=TomcatB
  BalancerMember ajp://192.168.211.146:8009 loadfactor=10 route=TomcatA
  ProxySet stickysession=JSESSIONID
  
  

  后端tomcat
  
  jvmRoute="TomcatA" 要与在apache上配置的对应
  

  mod_jk
  

  worker.list=router17
  worker.jvm1.port=8009
  worker.jvm1.host=192.168.112.251
  worker.jvm1.type=ajp13
  worker.jvm1.lbfactor=1
  #worker.jvm1.redirect=jvm2
  worker.jvm1.connection_pool_timeout=3
  worker.jvm1.socket_timeout=3
  worker.jvm2.port=8009
  worker.jvm2.host=192.168.112.32
  worker.jvm2.type=ajp13
  worker.jvm2.lbfactor=1
  #worker.jvm2.redirect=jvm1
  worker.jvm2.connection_pool_timeout=3
  worker.jvm2.socket_timeout=3
  worker.router17.type=lb
  worker.router17.sticky_session=1
  worker.router17.balance_workers=jvm1,jvm2
  

  LoadModule  jk_module  modules/mod_jk.so
  JkWorkersFile  /etc/httpd/workers.properties
  JkLogFile  logs/mod_jk.log
  JkLogLevel  debug
  JkMount  /*  router17
  

  JkUnMount /index.html router17
  --------------
  基于内存session复制集群
  1,修改项目下的WEB-INF目录下的web.xml在里面添加
  
  

  2,修改tomcat server.xml的engine,也可以改在hosts,注意不同的版本不同,去tomcat官网看
  
  

  
  

  
  

  
  
  
  

  
  
  
  
  
  
  

  
  
  

  
  

  
  
  
  

  3,在各节点为使用组播地址添加组播路由,格式:
  route add -net $MCAST_ADDRESS netmask 255.255.255.255 dev eth0
  一般可以不用添加的
  -----------------------
  tomcat连接线程配置
  
  1) address:指定连接器监听的地址,默认为所有地址,即0.0.0.0;
  2) maxThreads:支持的最大并发连接数,默认为200;
  3) port:监听的端口,默认为0;
  4) protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3;
  5) redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;
  6) connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;
  7) enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true;
  8) acceptCount:设置等待队列的最大长度;通常在tomcat所有处理线程均处于繁忙状态时,新发来的请求将被放置于等待队列中;
  

  
  

  别名配置
  
  cart.ulechina.tom.com
  cart.xy.tom.com
  cart.xy.cn.com
  
  

  日志配置
  catalina.sh
  $CATALINA_OUT
  

  在第一次调用之后,JSP会被编译成一个servlet类,在后续的操作中则可以直接使用此类,从而避免了对每一次调用的都要重新分析和编译。因此,类似servlet,JSP的执行需要在container中完成。JSP的container跟servlet的container基本相同,但在JSP执行之前,需要一些额外的步骤如与servlet代码建立会话等。Tomcat包含了一个叫做Catalina的Servlet container(执行servlet和编译过的JSP)和一个JSP编译器(Jasper编译器)。事实上,一个包含了JSP编译器和Servlet容器的应用程序组合通过被称作Web容器。
  

  JSP和Servlet的最大区别在于,Servlet通常需要事先编译好,而JSP则并非必须事先编译。这意味着Servlet通常放置于私有资源区域,而JSP则通常以嵌入代码的方式包含于HTML页面文件中,这些HTML文件通常放置在公开资源区域。
  

  MVC架构:
  Controller,Model和View各自独立,一个流行的开源实现是Apache Structs框架;目今,设计优良的Web应用程序通常用相就的技术实现相应的功能,比如:
  1、Servlet用于实现应用逻辑;
  2、JSP用于内容展示;
  3、标签库和JSP扩展语言用于替换在JSP内部嵌入Java代码,进而降低了HTML维护的复杂度;
  4、MVC框架用于实现展示和应用逻辑的分离
  

  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637892-1-1.html 上篇帖子: Kali Linux SSH 开机自启动、Apache启动 下篇帖子: Apache 同一IP 配置多个https虚拟主机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表