网站的设计步骤,网络运营中心,广东企业网站建设哪家好,中山网站seo优化近日#xff0c;由于公司项目需要#xff0c;所以学习了apache整合tomcat以及集群的一些知识。 所以做下笔记日后回顾可以用到。 apache只有处理静态事物的能力#xff0c; 而tomcat的强项就是处理动态的请求#xff0c;所以apache和tomcat整合相互取长补短#xff0c;由a…近日由于公司项目需要所以学习了apache整合tomcat以及集群的一些知识。 所以做下笔记日后回顾可以用到。 apache只有处理静态事物的能力 而tomcat的强项就是处理动态的请求所以apache和tomcat整合相互取长补短由apache作为入口如果是请求静态页面或者是静态文件由apache直接提供如果是请求动态页面则让apache分发到tomcat由tomcat处理以后再响应给客户端。 apache和tomcat的整合需要准备的一些软件列表 图1 说明 1.首先安装apache服务httpd-2.2.25-win32-x86-no_ssl.msi默认是80端口的如果80端口被占用则无法安装成功 用一下命令可以查询80端口被哪个进程id占用netstat -aon|findstr 80 再用一下命令查询该进程id是代表哪个进程tasklist|findstr 2016 apache检查错误方法:进入cmd 然后进入 Apache安装目录(具体为你自己的安装目录)\bin httpd.exe -w -n Apache2 -k start 2.打开apache的安装目录下面的modules文件夹把图1中的mod_jk.so文件放入 3.在apache安装目录的conf文件夹下面配置mod_jk.conf文件如果没有则新增一个内容为 图2 图2中的第一行指定mod_jk的配置文件配置tomcat以及负载均衡 图2中的第二行和第三行表示当请求后缀我jsp或者是do的时候apache把请求转发给tomcat来处理 3.配置完上面的配置文件以后在apache的安装目录下的httpd.conf文件的末尾把mod_jk.so模块以及mod_jk.conf配置文件加载进去 图3 4.配置apache的安装目录下的workers.properties文件如果该文件不存在自己新增一个即可 图4 介绍下图4中的各个参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #server worker.list controller #控制器名称 #tomcat1 worker.tomcat1.port8009 #ajp协议的端口如果2个tomcat部署在同一个服务器中那个ajp端口需要不同 worker.tomcat1.host127.0.0.1 #tomcat的所在主机的ip如果是本机则写本机的ip即可 worker.tomcat1.typeajp13 #协议类型 worker.tomcat1.lbfactor1 #负载因子 #tomcat2 worker.tomcat2.port9009 worker.tomcat2.host127.0.0.1 worker.tomcat2.typeajp13 worker.tomcat2.lbfactor1 #如果2个tomcat该参数相同表示等比例如果想tomcat负载多一点只要把这个参数改的大一点即可具体多少还是得看情况 #controller,负载均衡控制器 worker.controller.typelb worker.controller.retries3 #请求失败以后重试次数 worker.controller.balance_workerstomcat1,tomcat2 #controller控制的tomcat的名称分别为tomcat1和tomcat2由tomcat中的server.xml中设值 worker.controller.sticky_sessionfalse #回话是否有粘性false表示无粘性同一个回话的请求会到不同的tomcat中处理 worker.controller.sticky_session_forcefalse #当一个节点蹦了如果设值为true那么服务器返回500错误给客户端如果设值为false,则转发给其他的tomcat但是会丢失回话信息 #更详细的参数说明http://tomcat.apache.org/connectors-doc/reference/workers.html 5.安装好apache服务以后再准备好tomcat两个tomcat作为例子 图5 tomcat需要配置server.xml文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ?xml version1.0 encodingutf-8? !--如果多个tomcat部署在同一台服务器中此处的关闭tomcat的端口需要更改不能冲突-- Server port8005 shutdownSHUTDOWN Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineon / Listener classNameorg.apache.catalina.core.JasperListener / Listener classNameorg.apache.catalina.core.JreMemoryLeakPreventionListener / Listener classNameorg.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener classNameorg.apache.catalina.core.ThreadLocalLeakPreventionListener / GlobalNamingResources Resource nameUserDatabase authContainer typeorg.apache.catalina.UserDatabase descriptionUser database that can be updated and saved factoryorg.apache.catalina.users.MemoryUserDatabaseFactory pathnameconf/tomcat-users.xml / /GlobalNamingResources Service nameCatalina Executor nametomcatThreadPool namePrefixcatalina-exec- maxThreads300 minSpareThreads4/ !--如果使用apache整合那么此配置可以注释因为apache是通过ajp协议来通信的tomcat并不会直接暴露出来-- Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 maxThreads300/ !-- Define an AJP 1.3 Connector on port 8009 --br !--如果多个tomcat部署在同一个服务器中此处的ajp协议端口必须不一样并且需要增加jvmRoute属性该属性的值即为workers.properties中的tomcat的名称-- Connector port8009 protocolAJP/1.3 redirectPort8443 jvmRoutetomcat1/ Engine nameCatalina defaultHostlocalhost Cluster classNameorg.apache.catalina.ha.tcp.SimpleTcpCluster/ Realm classNameorg.apache.catalina.realm.LockOutRealm Realm classNameorg.apache.catalina.realm.UserDatabaseRealm resourceNameUserDatabase/ /Realm Host namelocalhost appBasewebapps unpackWARstrue autoDeploytrue Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log. suffix.txt pattern%h %l %u %t %r %s %b / /Host /Engine /Service /Server 另外就是在web项目的web.xml中添加属性distributable/用于告诉web容器该项目属于分布式项目,不然无法session replication 6. 静态文件直接由apache响应所需需要把部署的项目中的静态文件放在apache的安装目录下的htdocs文件夹下偷懒的方法就是直接把tomcat的webapps中的项目拷贝一份放到htdocs中所以htdocs的作用与tomcat的webapps类似 7.部署的时候经常会出现一些错误当遇到错误的时候我经常需要查看日志文件我经常查看的日志有apache的日志以及tomcat的日志 图6 apache安装目录下的logs文件夹下就存放这apache的相关日志 access.log文件用于记录apache接收到请求以及响应状态的日志 error.log文件用于记录apache的运行错误 httpd.pid文件用于记录进程pid mod_jk.log文件用于记录请求转发给tomcat的日志 图7 tomcat的日志 localhost_access_log.日期.txt文件用于记录tomcat接收到的请求以及响应的状态等作用于apache的access.log类似 catalina.日期.txt文件用于记录tomcat启动时候控制台的一些信息以及服务端错误信息 localhost.日期.txt文件用于记录站点访问信息Tomcat下内部代码丢出的日志文件名localhost.日期.logjsp页面内部错误的异常org.apache.jasper.runtime.HttpJspBase.service类丢出的日志信息就在该文件 8.官方文档中对于集群中session repliction的要求 图8 总共8点 1).session中的属性必须全部为实现Serializable 2).tomcat的server.xml配置文件中的Cluster节点的注释去掉 3).就是用于用于检测当前的响应是否涉及Session数据的更新如果是则启动Session拷贝操作这个属性后面会有一个filter属性filter即过滤不需要Session拷贝操作的内容 4).如果tomcat在同一个机器上的那么确保tcpListenerPort端口的唯一性 5).web.xml中必须添加distributable/属性 6).如果使用mod_jk,那么需要在server.xml中的Engine/节点中添加jvmRoute“tomcat1”属性事实证明在ajp端口那边添加也是可行的 7).确保所有的tomcat时钟同步使用ntp服务器来达成 8).确保负载均衡器的sticky_sessionfalse已经设置即设置为非粘性 参考 1.https://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html 2.http://www.cnblogs.com/dennisit/p/3370220.html 3.http://502245466.blog.51cto.com/7559397/1280152 转载博客原博客地址http://www.cnblogs.com/God-froest/p/apache_tomcat.html转载于:https://www.cnblogs.com/rainy-shurun/p/5211020.html