apache使用mod_jk模块整合tomcat

| 阅读数:--次| 作者:小猪仔
摘要:apache使用mod_jk模块整合tomcat
从Tomcat权威指南中的测试数据,我们不难发现,对于静态页面的数据,Tomcat的处理速度比Apache要快很多,
所以为什么要整合 apache?虽然在处理静态页面速度上比Apache快,但是Tomcat经不起大的并发量,容易死。为此,我们就需要Apache,虽然Apache的速度要慢一 
 
些,但能承受的起大的并发量。因此,有了本文。 
 
三种负载: 
mod_proxy_http 是 APAHCE 的 HTTP proxy,对静态页面还好,对动态页面效果不佳。 
mod_proxy_ajp ,  是 APACHE 的 AJP 的 proxy, 好像是 apache 2.2 以后的版本才有(最好还是去对文档看看),只支持 AJP 13 
mod_jk ,是 tomcat 的 apache 扩展 module(tomcat-connectors),可支持 AJP 12/13,JNI 以及 Loadblance.
简单多就是跟proxy 效果虽然差不多但不是一个起跑线。 
 
整个思路: 
1、安装Apache 
2、安装tomcat 
3、安装mod_jk 
4、加载mod_jk 
5、关闭tomcat的侦听端口 
6、应用分离(静态与动态页面分离) 
 
 
环境介绍: 
OS:CentOS 5.7 
SOFT:Tomcat 6.0+JDK 1.6+Apache 2.2 
 
编译安装apache 
# ./configure --prefix=/usr/local/apache2  --enable-proxy-balancer \ 
--enable-proxy-http --enable-proxy-connect  --enable-proxy \ 
--enable-rewrite --enable-proxy-ajp  
中间曾发生过,make失败的情况,最后发现是部分文件的所有者没有变为root,造成失败!
# make && make install  
 
编译模块mod_jk: 
 
# tar -xzf tomcat-connectors-1.2.32-src.tar.gz 
# cd tomcat-connectors-1.2.32-src/ 
# cd native/ 
# ./configure --with-apxs=/usr/local/apache2/bin/apxs 
# make && make install  
# ll /usr/local/apache2/modules/mod_jk.so  
-rwxr-xr-x 1 root root 1076923 Feb 20 19:14 /usr/local/apache2/modules/mod_jk.so 
 
加载模块mod_jk: 
# vim /usr/local/apache2/conf/httpd.conf 
LoadModule jk_module modules/mod_jk.so 
JkWorkersFile /usr/local/apache2/conf/workers.properties 
JkMountFile   /usr/local/apache2/conf/uriworkermap.properties 
JkLogFile /usr/local/apache2/logs/mod_jk.log 
JkLogLevel info 
JkLogStampformat "[%a %b %d %H:%M:%S %Y]" 
 
建立相关定义的文件 
# touch /usr/local/apache2/conf/workers.properties 
# touch /usr/local/apache2/conf/uriworkermap.properties 
# touch /usr/local/apache2/logs/mod_jk.log 
 
# cat workers.properties   #定义tomcat主机 
worker.list=tomcat2 
worker.tomcat2.type=ajp13 
worker.tomcat2.host=localhost 
worker.tomcat2.port=8009 
worker.tomcat2.lbfactor=1 
 
# cat uriworkermap.properties  #定义tomcat处理的文件类型,tomcat不处理的由apache来处理。 
/*=tomcat2   
!/*.jpg=tomcat2  
!/*.gif=tomcat2  
!/*.png=tomcat2  
!/*.bmp=tomcat2  
!/*.html=tomcat2  
!/*.htm=tomcat2  
!/*.swf=tomcat2  
!/*.css= tomcat2  
!/*.js= tomcat2  
 
关闭tomcat的侦听商品起见(主要是为安全考虑) 
     
 
应用分离: 
将apache的文档目录修改到/data/webapps,将tomcat的目录修改到/data/webapps 
 
Apache的修改文档目录位置: 
DocumentRoot "/data/webapps" 
...... 
 
 
 
tomcat修改的值: 

            unpackWARs="true" autoDeploy="true" 
            xmlValidation="false" xmlNamespaceAware="false"> 
 
 
完成以上部署之后,我们就可以启动apache、tomcat了。访问http://localhost来看看! 
如何判断,页面是真的分离了呢? 通过不存在的页面,来看报错信息就行了。
如何确认,mod_jk真正被加载了?
方法:查看mod_jk的日志。如果出现:
[info] init_jk::mod_jk.c (3252): mod_jk/1.2.32 () initialized  就表明它已经被正常的加载了。
我不认为,安装完就结束了,其实它只是另一个开始而已。
 
关于虚拟机的部分:
以上操作只是对一台机器的动静分离,如果是在某台机器上,有多个虚拟机,并且各自的路径不一样怎么办?
这个问题,只需要通过在每个虚拟机里定义相应的uriworkermap.properties文件就行了。

 
     ServerAdmin admin@example.com  
     DocumentRoot /data/www  
     ServerName 192.168.1.8  
     ErrorLog logs/error_log  
     CustomLog logs/access_log common  
     JkMountFile  conf/uriworkermap.properties  
 
返回顶部
学到老代码浏览 关闭浏览