把Tomcat和Apache整合起来有如下几点好处:
1,利用Apache做负载均衡和容错;
2,Apache专注做静态网页解析,tomcat专注做动态网页解析,这样能提高服务器的效率;
3,应用程序可以无缝升级。
首先安装apache和tomcat以及安装mod_jk(sudo apt-getinstall 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 选项 JkOptions +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> |
在tomcat 的应用目录/var/lib/tomcat6/webapps/ROOT/建立一个test.jsp,启动Apache和Tomcat,用浏览器访问http://localhost/test.jsp,应该可以看到正确的页面了。
test.jsp 的例子
Hello! The time is <%= new java.util.Date() %>
到此整合成功。
apache模块mod_limitipconn安装配置
下载wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2
tar xvf mod_limitipconn-0.24.tar.bz2
为Apache编译安装扩展模块时需要apxs工具 安装apxs
apt-get install apache2-dev
编辑“Makefile”文件,修改内容如下:
APXS=apxs
改为:
APXS=/usr/bin/apxs2
保存后继续安装:
make && make install
在/etc/apache2/mods-available/ 建立limitipconn.conf
根据需求输入内容:
<IfModule mod_limitipconn.c>
# 这里表示限制根目录,即全部限制,可以根据需要修改
<Location />
# 每个IP的最大连接数
MaxConnPerIP 3
#表示image目录不受限制
NoIPLimit image/*
</Location>
</IfModule>
apache模块mod_bandwidth 安装配置
wget http://ivn.cl/files/source/mod_bw-0.9.tgz
tar -xvf mod_bw-0.9.tgz
/usr/bin/apxs2 -a -c mod_bw.c
cp ./lib/mod_bw.so /usr/lib/apache2/modules/
在“/etc/apache2/mods-available/”文件夹中建立新文件:bw.load
输入以下内容:
BandWidthModule On
LoadModule bw_module /usr/lib/apache2/modules/mod_bw.so
在“/etc/apache2/conf.d/”文件夹中建立新文件:bw.conf
输入以下内容:
<IfModule mod_bw.c>
BandwidthModule On
ForceBandWidthModule On
#限制用户的下载速度为每秒50K,这里是设置所有的,这个 module设定也可安插在virtual host 或 directory
Bandwidth all 51200
MinBandwidth all -1
</IfModule>
激活模组:
a2enmod bw
重启服务 service apache2 restart
详细配置可参考:
Bandwidth Module 的 module,模块说明文档,点击查看mod_bw-0.说明文档9.0