Tomcat与Apache整合(mod_jk)
[*]Tomcat与Apache整合(mod_jk):
[*]
[*]从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修改的值:
[*]
[*]
[*]
[*]完成以上部署之后,我们就可以启动apache、tomcat了。访问http://localhost来看看!
[*]如何判断,页面是真的分离了呢? 通过不存在的页面,来看报错信息就行了。
[*]如何确认,mod_jk真正被加载了?
[*]方法:查看mod_jk的日志。如果出现:
[*] 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
JkMountFileconf/uriworkermap.properties
页:
[1]