要求:
PHP服务器,两个Tomcat服务器。不做负载平衡。
安装 :
1、Apache安装略过。
2、Apache+PHP略过。
3、Apche+2Tomcat配置。ajp13协议,需要下载tomcat连接器:mod_jk.so (注意:需要与Apache,Tomcat版本匹配,否则你就惨了)。
配置:
1、在Apache\conf下配置httpd.conf
在http.conf中配置,mod_jk
配置如下:
#加载mod_jk
LoadModule jk_module modules/mod_jk.so
#配置
<IfModule mod_jk.c>
#设置mod_jk的配置
JkWorkersFile conf/workers.properties
#设置日志位置
JkLogFile logs/mod_jk.log
#设置日志级别
JkLogLevel info
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
</IfModule>
#注释不能与配置在同一行,会报如下图错误。我就掉这个坑花了点时间。
JkWorkersFile conf/workers.properties #设置mod_jk的配置
如果向上面这样,它把注释也看作了一个参数了。所以报错。
2、在Apache\conf下新建一个配置文件。名称必须是:workers.properties。配置内容如下:
#让mod_jk模块知道Tomcat的安装路径
workers.tomcat_home="D:/cdjhserver/apache-tomcat8081,D:/cdjhserver/apache-tomcat-8.5.32"
#让mod_jk模块知道jdk路径
workers.java_home="C:/Java/jdk1.7.0_07"
#当前目录
ps=/
#这里是关键,名字要和httpd.conf的一致。如果这里改了httpd.conf也要改
worker.list=tom8080,tom8081
#工作端口,tomcat的jk监听端口,可以查看Server.xml中有port="8009"
worker.tom8080.port=8009
#Tomcat所在机器,如果安装在与apache不同的机器则需要设置IP
worker.tom8080.host=localhost
#协议类型,不能改变,会出问题
worker.tom8080.type=ajp13
#负载平衡因子
worker.tom8080.lbfactor=1
#======第二个tomcat==========
worker.tom8081.port=8010
worker.tom8081.host=localhost
worker.tom8081.type=ajp13
worker.tom8081.lbfactor=1
#===end====================
特别注意:
1、workers.properties文件编码。里面不能出现不认识的字符。
2、配置属性和值,只能是字母和数字。
3、属性值后面不能有空格。我在这儿栽过,会报下在的错误:
mod_jk.log报错:
[Sat Jan 12 11:55:48.158 2019] [17844:31268] [error] wc_create_worker::jk_worker.c (138): Unknown worker type ajp13 for worker tom8080
[Sat Jan 12 11:55:48.158 2019] [17844:31268] [error] build_worker_map::jk_worker.c (261): failed to create worker tom8080
3、Apache\conf\httpd.conf里面配置主机:
#第一个主机tom8080
<VirtualHost *:80>
DocumentRoot 【你的项目路径】
ServerName XXX.XXX.com
DirectoryIndex index.jsp index.html index.html.var index.php
#以下根据自己的情况确定
JkMount /*WEB-INF tom8080
JkMount /*.jsp tom8080
JkMount /servlet/* tom8080
JkMount /*.do tom8080
JkMount /*.action tom8080
JkMount /Javenmy/* tom8080
</VirtualHost>
#第二个主机tom8081
<VirtualHost *:80>
DocumentRoot D:/phpStudySpace/demojeecg
ServerName demo.cdjh.com.cn
DirectoryIndex index.jsp index.html index.html.var index.php
JkMount /*WEB-INF tom8081
JkMount /*.jsp tom8081
JkMount /servlet/* tom8081
JkMount /*.do tom8081
JkMount /*.action tom8081
JkMount /Javenmy/* tom8081
</VirtualHost>
4、配置Tomcat\conf\server.xml
注意:两个Tomcat同时运行,需要注意端口配置不同。有这几个:8080(启动),8009(ajp连接),8005(tomcat关闭),8443(ajp转发)。
配置环境变量,两个tomcat配置须不同。再修改tomcat启动startup.bat,shutdown.bat,catalina.conf文件中的 Tomcat_HOME,Tomcat_Base与你配置的环境变量一致,目的:启动和关闭时找到各自的配置,使两个Tomcat各自能独立运行。
Tomcat的其他配置略过。
打开server.xml配置文件,找到AJP/1.3的连接配置。如下:
配置:<Engine name="Catalinademo" defaultHost="demo.cdjh.com.cn" jvmRoute="tom8081">
jvmRoute的值要和你在workers.properties中的worker.list属性值里面名称一致。
两个Tomcat都配置好后,配置就结束了。
分别启动两个tomcat,再启动Apache。
如果不能正常运行,就查看日志,看错误在哪儿 。
遇到的几个错误截图(这几个错误在上面都已说到):
错误一:
错误二:
让查看mod_jk.log日志文件,结果如下 :
这个错,是因为ajp13后面有空格。错误时是这样:“ajp13 ”。