Chinaunix首页 | 论坛 | 博客
  • 博客访问: 597141
  • 博文数量: 70
  • 博客积分: 3219
  • 博客等级: 中校
  • 技术积分: 1197
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-13 12:20
个人简介

谢谢您的对我的博客的关心,同时希望这个站点真的能够对您有所帮助。 如果可以请告诉我你的联系方式(可能的话告诉我两个或更多,我不希望失去任何一个关注本主页人士的联系,不论你是我的老友,或是一位新朋友,对于我来说您十分重要)

文章分类
文章存档

2021年(1)

2020年(13)

2018年(1)

2013年(12)

2012年(2)

2009年(2)

2008年(6)

2007年(20)

2006年(13)

分类: 系统运维

2012-12-11 14:47:37

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) |
给主人留下些什么吧!~~