1、为什么要整合Apache与Tomact?
Apache与Tomact工作在不同端口,整合Apache与Tomact可以让服务器工作在http端口,让静态网页和动态网页(jsp)分别由Apache与Tomact来处理,提高性能。
2、如何实现Apache与Tomact的整合?
配置apache和tomcat的整合有三种方式,mod_proxy,mod_ajp和mod_jk等三种方式。
使用apache已经内置的模块(如mod_proxy)或第三方模块(mod_jk)进行判断,如果客户端请求的是动态页面就将请求发送到tomcat服务器,否则就由apache自己来处理。
本文就是用mod_jk将客户端对jsp文件的请求转发到tomcat来实现的。
本文使用RHEL5.8的光盘制作yum命令的安装源来安装所依赖的软件包,关于如何使用光盘制作yum源,请参考:
http://blog.chinaunix.net/uid-20346344-id-3264166.html
所需第三方软件包都可从官方网站下载,安装前将软件包放在/home/share/下,或如何您喜欢的目录。
一、安装apache服务器和php
yum -y install gcc gcc-c++ make libtool ctags
yum -y install php53 php53-gd php53-mysql php53-xml php53-devel
yum -y install httpd gd httpd-devel
如果系统已经安装了以上软件包可跳过上面步骤。
mkdir /var/www/ROOT
sed -i '/^DocumentRoot/s/.*/DocumentRoot "\/var\/www\/ROOT"/' /etc/httpd/conf/httpd.conf
(注1)
service httpd start
echo 'phpinfo();
?>' > /var/www/ROOT/index.php
访问,即可显示php的配置信息,说明apache和php安装成功。
二、安装jdk和tomcat
cd /home/share/
sh jdk-6u37-linux-i586-rpm.bin
tar -zxf apache-tomcat-7.0.33.tar.gz
mv apache-tomcat-7.0.33 /usr/local/apache-tomcat
/usr/local/apache-tomcat/bin/startup.sh
访问,即可显示tomcat的欢迎界面,说明tomcat安装成功。
三、编译安装mod_jk模块,生成/home/share/tomcat-connectors-1.2.37-src/native/apache-2.0/mod_jk.so文件
cd /home/share/
tar -zxf tomcat-connectors-1.2.37-src.tar.gz
cd tomcat-connectors-1.2.37-src/native/
./configure --with-apxs=/usr/sbin/apxs
make
四、配置apache,让apache加载mod_jk模块
cp /home/share/tomcat-connectors-1.2.37-src/native/apache-2.0/mod_jk.so /usr/lib/httpd/modules/
echo 'LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf.d/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* worker1
JkUnMount /*.php worker1
JkUnMount /*.html worker1
HostnameLookups Off' > /etc/httpd/conf.d/mod_jk.conf
(注2)
五、配置mod_jk的参数
echo '# Defining a worker named worker1 and of type ajp13
worker.list=worker1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300' > /etc/httpd/conf.d/workers.properties
service httpd restart
cp -rf /usr/local/apache-tomcat/webapps/examples/jsp/jsp2/el /usr/local/apache-tomcat/webapps/ROOT/
访问,界面不变,说明apache和php运行正常。
访问,显示正常界面,说明tomcat正常运行,且apache通过http端口接受请求,并将jsp文件交给tomcat处理。
到此apache和tomcat的整合其实已经结束。
但是还有个问题,服务器上所有的jsp文件需要放在/usr/local/apache-tomcat/webapps/ROOT/文件夹中,而不是apache的根目录/var/www/ROOT。
为了维护方便我们还需要将tomcat的根目录改为/var/www/ROOT(注1);对于这步骤有没有必要,可以根据实际环境自己决定。
sed -e '/appBase/s/webapps/\/var\/www/' /usr/local/apache-tomcat/conf/server.xml
#####################################################################
注1:
上文有2处(注1),是为了将apache和tomcat的根目录统一为一个目录,即/var/www/ROOT/。
为什么apache和tomcat都要改呢?为什么不只改apache或者只改tomcat呢?
因为只改tomcat,tomcat还是会去找指定目录下的ROOT作为自己的根目录。
虽然有办法将tomcat的根目录改为apache的默认根目录,但方法相对复杂,所以本文将apache的根改为/var/www/ROOT/。
注2:
/etc/httpd/conf.d/mod_jk.conf文件的说明:
JkMount /* router
JkUnMount /*.php router
JkUnMount /*.html router
上面三句中“router”是在mod_jk模块中定义的一个过程。
第一句就是将来自web的请求全交给“router”来处理;后面两句是排除.php和.html文件。
其实就是将来自web的除了.php和.html文件以外的请求交给“router”来处理,而.php和.html仍旧由apache自己处理。
这里当然还可以添加其他的文件让apache来处理。
然后router根据workers.properties文件的定义将任务交给tomcat。
最后,在实际使用中,我将上面的三句改为:
JkMount /*.jsp router
就是将所有来自web的对.jsp文件的请求转发给tomcat,其他的请求全部由apache自己处理。
阅读(2911) | 评论(0) | 转发(4) |