有过服务器搭建经验的人都知道,如果做J2EE开发,把Tomcat和Apache整合起来有如下几点好处:1,利用Apache做负载均衡和容错;2,Apache专注做静态网页解析,tomcat专注做动态网页解析,这样能提高服务器的效率;3,应用程序可以无缝升级。
最近用Ubuntu12.04做服务器(原理上不应该用最新版本而应该用稳定版本),看了很多关于apache与tomcat整合的书,最后发现书上的内容对ubuntu12.04来说有点出入。下面总结一下经验供大家参考:
安装apache和tomcat以及安装mod_jk(sudo apt-get install libapache2-mod-jk)这个就不说了,这是大前提。
一、AJP连接器
Tomcat6为AJP协议提供了作为java类的AJP连接器实现,他包含在Tomcat发布版本中。首先你应该在$CATALINA_HOME/server.xml中定义连接器:
代码如下 | 复制代码 |
<-- Define an AJP1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP1.3" redirectPort="8443" /> |
一般把注释去掉即可,没有的自己添加。
二、编写workers.properties文件
workers.properties文件是用来定义与tomcat连接的一些变量,你不需要自己创建,在安装libapache2-mod-jk软件包的时候已经在/etc/libapache2-mod-jk/目录下创建了一个,你直接修改他就可以了:
代码如下 | 复制代码 |
?$ sudo nano /etc/libapache2-mod-jk/workers.properties |
下面找到相应的行对其进行修改:
代码如下 | 复制代码 |
?worker.list=myworker worker.myworker.port=8009 worker.myworker.host=localhost //如果你是放在其他服务器上的请修改成对应主机ip worker.myworker.type=ajp13 worker.myworker.lbfactory=1 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=myworker |
三、配置/etc/apache2/apache2.conf(这里比较推荐到/etc/apache2/conf.d/目录下创建mod_jk文件,在其中编写本步骤内容也是一样的)
?#告诉JK到哪里去找workers.properties
JkWorkersFile /etc/libapache2-mod-jk/workers.properties #重启apache后如果出现allow once 提示,请注释掉此行
代码如下 | 复制代码 |
#定义JK日志位置 JkLogFile /var/log/apache2/mod_jk.log #设置JK日志的级别(debug/error/info) JkLogLevel info 设置Log 的格式 JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JK 选项 JkOption +ForwardKeySize +ForwardURICompat -ForwardDirectories #设置请求格式 JkRequestLogFormat "%w %V %T" |
四、配置虚拟主机
代码如下 | 复制代码 |
$ sudo nano /etc/apache2/sites-available/default |
在最后加入下面代码:
代码如下 | 复制代码 |
? ..... </Directory> JkMount /*.jsp myworker #把所以jsp页面请求都交给myworker处理 JkUnMount /*.php myworker #所有的php页面请求都不交给myworker处理 </VirtualHost> |
五、应该注意的:
很多书上都说要添加mod_jk.so到apache的module目录下,但如果你通过sudo apt-get install libapache2-mod-jk成功安装的话是不需要的,而且还自动帮你写入LoadModule了~