前两篇已经写了Apache和Tomcat的安装,本文主要探讨Apache和Tomcat的整合。
〇、为什么要整合
Tomcat也有webserver的功能,但一般只用作调试,其强项还是在于处理动态网页,静态网页不如Apache这种专业的webserver。
一、整合是什么意思
整合就是所有访问都先经过Apache,Apache经过筛选,把符合一定规则的请求转发给Tomcat进行处理。
Apache中有一个模块叫module_jk,专门负责做转发的工作,该模块以动态库的形式存在,需要的时候才进行加载。Tomcat在Apache端叫做worker,module_jk一般通过8009的TCP端口跟Tomcat使用AJP协议进行通信。
二、安装mod_jk.so并配置
1.安装mod_jk
# apt-get install libapache2-mod-jk
安装完后,在/etc/apache2/mods-enabled下会多出一个jk.load文件,重启apache2后,apache自动装载这个文件以加载mod_jk
2.找到worker配置文件
# vi jk.conf
找到JkWorkersFile:
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
说明了jk_worker的配置文件为/etc/libapache2-mod-jk/workers.properties,要将tomcat作为一个worker就得修改这个文件。
3.在Apache端设置worker
# vi /etc/libapache2-mod-jk/workers.properties
(1)修改worker名称为mytomcat
a.找到worker.list:
worker.list=ajp13_worker
b.将文件中所有ajp13_worker替换成mytomcat
(2)设置mytomcat运行环境
tomcat和jdk的安装目录,以便worker能正常运行
workers.tomcat_home=/usr/share/apache-tomcat-8.5.35
workers.java_home=/usr/share/jdk1.8.0_131
(3)设置转发规则
vi /etc/apache2/sites-available/000-default.conf
在VirtualHost标签末尾添加:JkMount /examples/* mytomcat
...
JkMount /examples/* mytomcat
意思是凡是/examples/开头的链接请求都交给mytomcat处理,如:http://192.168.1.155/examples/index.html
examples的路径位于tomcat目录下:/usr/share/apache-tomcat-8.5.35/webapps/examples
/**到此Apache端的配置完成,需要修改的文件:
jk.load (mod_jk加载设置,可能要改)
jk.conf (mod_jk设置,可能要改)
workers.properties (worker设置,必须要改)
sites-available/000-default.conf (转发规则设置,必须要改)**/
三、在tomcat端设置worker
#vi /usr/share/apache-tomcat-8.5.35/conf/server.xml
1.修改worker名称
修改Engine标签为:
这样Apache和tomcat就能通过8009端口,使用AJP1.3协议进行通信了!
2.检查监听端口是否是8009,协议是否跟Apache端设置一样(AJP1.3(apache端为ajp13))
四、功能验证
1.重启apache
# /etc/init.d/apache2 restart
2.重启tomcat
# /usr/share/apache-tomcat-8.5.35/bin/shutdown.sh
# /usr/share/apache-tomcat-8.5.35/bin/startup.sh
3.浏览器请求
浏览器分别输入:
http://192.168.1.155/index.html
成功访问说明Apache功能正常。
http://192.168.1.155:8080/
成功访问说明tomcat功能正常
http://192.168.1.155/examples/index.html
成功访问说明Apache整合tomcat完成(后面的index.html不能省略!!!)。
五、出错排查:
1.排查mod_jk
# vi /var/log/apache2/mod_jk.log
2.排查apache
# vi /var/log/apache2/access.log
# vi /var/log/apache2/error.log
3.排查tomcat
# vi /usr/share/apache-tomcat-8.5.35/logs/catalina.2018-11-17.log
# vi /usr/share/apache-tomcat-8.5.35/logs/host-manager.2018-11-17.log
# vi /usr/share/apache-tomcat-8.5.35/logs/manager.2018-11-17.log