Apache HTTP Server与Tomcat整合
个人环境:Windows10,JDK8,Tomcat8.5,Apache2.4,JK模块1.2.4
前言? 其实网上有很多教程,但问题是得每次找个正确率很高的却很难 。所以在此做个简单的记录,方便快速查找 。
注意:
- 关于JDK环境配置在此不多赘述 。
- Tomcat9版本配置中将AJP的配置注释了,所以很多人整合不合适
- 下面会用到cmd命令窗口,一定要以管理员身份打开,否则权限不够 。

文章插图
第二步:配置文件打开conf文件夹,修改其中“httpd.conf”文件配置;更改为自己的文件安放路径

文章插图

文章插图
第三步:安装用管理员身份打开cmd,进入文件bin目录所在位置,并输入以下命令
# 服务名可以自定义,这里我的是Apache24httpd -k install -n "Apache24"# 卸载httpd -k uninstall -n "Apache24"
文章插图
同时可以打开同级目录下的ApacheMonitor程序
第四步:启动
# 启动 Apache 服务httpd.exe -k start -n "Apache24"# 重启 Apache 服务httpd.exe -k restart -n "Apache24"# 停止 Apache 服务httpd.exe -k stop -n "Apache24"并查看是否启动成功,如果可以成功访问localhost:80或者ApacheMonitor程序中按钮亮起说明安装启动成功二、下载安装Tomcat在此也不做多余赘述,只需去官网下载解压即可
第一步:下载解压缩下载地址:https://tomcat.apache.org/download-80.cgi
第二步:进入bin目录,双击startup.bat即可注意:个人是未修改原始文件配置信息,所以不是从原始文件开始更改的,可能问题在自己的配置上 。
三、整合-下载JK模块第一步:下载解压缩下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
注意:根据自己的需求版本匹配进行下载,个人这里是下载的1.2.40版本

文章插图
第二步:复制mod_jk.so【Apache HTTP Server与Tomcat整合学习记录】解压缩后,找到mod_jk.so文件,然后将文件复制到Apache下的modules文件夹下

文章插图
第三步:新建“mod_jk.conf”文件步骤图

文章插图
在Apache下的conf文件夹下新建
输入以下文件内容
#加载mod_jk ModuleLoadModule jk_module modules/mod_jk.so#指定 workers.properties文件路径JkWorkersFile conf/workers.properties#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器JkMount /*.do controllerJkMount /*WEB-INF controllerJkMount /*j_spring_security_check controllerJkMount /*.action controllerJkMount /servlet/* controllerJkMount /*.jsp controllerJkMount /*.do controllerJkMount /*.action controllerJkMount /* controller第四步:修改httpd.conf文件去Apache下,找到该配置文件,在文件末尾添加一段代码,引入mod_jk.conf配置文件Include conf/mod_jk.conf第五步:新建“workers.properties”worker.list =controller,tomcat1,tomcat2#server 列表#========tomcat1========worker.tomcat1.port=8009#ajp13 端口号,在tomcat下server.xml配置,默认8009worker.tomcat1.host=localhost#tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat1.type=ajp13worker.tomcat1.lbfactor = 1#server的加权比重,值越高,分得的请求越多 #========tomcat2========#worker.tomcat2.port=8019#worker.tomcat2.host=localhost#worker.tomcat2.type=ajp13#worker.tomcat2.lbfactor = 1#========controller,负载均衡控制器========worker.controller.type=lb#指定分担请求的tomcat worker.controller.balanced_workers=tomcat1,tomcat2#回话是否有粘性,false表示无粘性,同一个回话的请求会到不同的tomcat中处理worker.controller.sticky_session=false#当一个节点蹦了,如果设值为true,那么服务器返回500错误给客户端,如果设值为false,则转发给其他的tomcat,但是会丢失回话信息worker.controller.sticky_session_force=false建议看网上有人说先启动Apache再去启动Tomcat这样不会出问题,这个点可以注意一下,虽然我个人没遇到 。如果其中会碰到问题,可以参考该博文https://blog.csdn.net/dongdong9223/article/details/64921439
关于Tomcat中AJP的配置

文章插图
<!-- Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 --><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />第一个连接器监听8080端口,负责建立HTTP连接 。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器 。第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接 。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器 。AJP连接器可以通过AJP协议和一个web容器进行交互 。
关于proxy、proxy_blancer和mod_jk的比较
- proxy的缺点是,当其中一台tomcat停止运行的时候,apache仍然会转发请求过去,导致502网关错误 。但是只要服务器再启动就不存在这个问题 。
- mod_jk方式的优点是,Apache 会自动检测到停止掉的tomcat,然后不再发请求过去 。
缺点就是,当停止掉的tomcat服务器再次启动的时候,Apache检测不到,仍然不会转发请求过去 。 - proxy和mod_jk的共同优点是.可以只将Apache置于公网,节省公网IP地址资源 。
可以通过设置来实现Apache专门负责处理静态网页,让Tomcat专门负责处理jsp和servlet等动态请求 。
共同缺点是:如果前置Apache代理服务器停止运行,所有集群服务将无法对外提供 。 - proxy和mod_jk对静态页面请求的处理,都可以通设置来选取一个尽可能优化的效果 。
mod_proxy_balancer和mod_jk都需要修改tomcat的配置文件配合<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> - 这三种Tomcat集群方式对实现最佳负载均衡都有一定不足,mod_proxy_balancer和mod_jk相对好些,mod_jk的设置能力更强些 。lbfactor参数来分配请求任务 。
- apache自带mod_proxy功能模块中目前只可以实现两种不同的负载均衡集群实现方式,第一种是分工合作的的形式,通过各台主机负责不同的任务而实现任务分工 。第二种是不同的机器在担任同样的任务,某台机器出现故障主机可以自动检测到将不会影响到客户端,而第一种却不能实现但第一种实现方式的优点在于他是主服务器负担相应没第二种大因为台只是提供跳转指路功能,形象的说他不给你带路只是告诉你有条路可以到,但到了那是否可以看到你见的人他已经不会去管你了 。相比之下第二种性能要比第一种会好很多;但他们都有个共同点都是一托N形式来完成任务的所以你的主机性能一定要好 。
Tomcat优化(未亲测)
在service.xml文件里加入
maxThreads="800" minSpareThreads="25" maxSpareThreads="700" enableLookups="false" acceptCount="1200"
maxThreads=”150” 表示最多同时处理150个连接
minSpareThreads=”25” 表示即使没有人使用也开这么多空线程等待
maxSpareThreads=”75” 表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的 。
acceptCount=”100” 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接
Apache+Tomcat配置测试
测试Tomcat
首先空项目跑一下,看tomcat能否正常启动
然后加项目跑一下,看tomcat能否正常启动
测试Apache
Tomcat启动后重启一下Apache服务,看能否启动
注意:Apache有可能启动不起来,那么解决方式是查看Apache安装目录下的logs目录下的error.log文件,
根据log文件解决可能存在的问题 。直到Apache可以正常启动,至此Apache就可以正常启动了 。
测试负载均衡
写一个测试jsp放置于项目中,运行一下,看控制台输出
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
Insert title here<%System.out.println("===========================");%>经测试1. workers.properties配置为worker.controller.sticky_session=1,且tomcat的server中Cluster未打开时,同一浏览器多次访问均进同一tomcat,换浏览器后会进另一个tomcat 。2. workers.properties配置为另一种方式时为负载均衡,请求均匀分布在两个tomcat 。最后虽然技术在不断的更替,但是有时间的话可以多了解一点是一点 。
傲不可长,欲不可纵,乐不可极,志不可满
作者:余月七 (yuyueq)出处:http://www.cnblogs.com/yuyueq
警言: 无论人生上到哪一层台阶,阶下有人在仰望你,阶上亦有人在俯视你 。你抬头自卑,低头自得,唯有平视,才能看见真实的自己 。
转载请注明原文链接:https://www.cnblogs.com/yuyueq/p/14711086.html
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢你的支持!
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
