Tomcat与Apache整合(mod_jk)



Tomcat与Apache整合(mod_jk)

url: http://myhat.blog.51cto.com/391263/784615/

2012-02-20 12:50:41


  1. Tomcat与Apache整合(mod_jk): 
  2.  
  3. 从Tomcat权威指南中的测试数据,我们不难发现,对于静态页面的数据,Tomcat的处理速度比Apache要快很多,
  4. 所以为什么要整合 apache?虽然在处理静态页面速度上比Apache快,但是Tomcat经不起大的并发量,容易死。为此,我们就需要Apache,虽然Apache的速度要慢一 
  5.  
  6. 些,但能承受的起大的并发量。因此,有了本文。 
  7.  
  8. 三种负载: 
  9. mod_proxy_http 是 APAHCE 的 HTTP proxy,对静态页面还好,对动态页面效果不佳。 
  10. mod_proxy_ajp ,  是 APACHE 的 AJP 的 proxy, 好像是 apache 2.2 以后的版本才有(最好还是去对文档看看),只支持 AJP 13 
  11. mod_jk ,是 tomcat 的 apache 扩展 module(tomcat-connectors),可支持 AJP 12/13,JNI 以及 Loadblance.
  12. 简单多就是跟proxy 效果虽然差不多但不是一个起跑线。 
  13.  
  14. 整个思路: 
  15. 1、安装Apache 
  16. 2、安装tomcat 
  17. 3、安装mod_jk 
  18. 4、加载mod_jk 
  19. 5、关闭tomcat的侦听端口 
  20. 6、应用分离(静态与动态页面分离) 
  21.  
  22.  
  23. 环境介绍: 
  24. OS:CentOS 5.7 
  25. SOFT:Tomcat 6.0+JDK 1.6+Apache 2.2 
  26.  
  27. 编译安装apache 
  28. # ./configure --prefix=/usr/local/apache2  --enable-proxy-balancer \ 
  29. --enable-proxy-http --enable-proxy-connect  --enable-proxy \ 
  30. --enable-rewrite --enable-proxy-ajp  
  31. 中间曾发生过,make失败的情况,最后发现是部分文件的所有者没有变为root,造成失败!
  32. # make && make install  
  33.  
  34. 编译模块mod_jk: 
  35.  
  36. # tar -xzf tomcat-connectors-1.2.32-src.tar.gz 
  37. # cd tomcat-connectors-1.2.32-src/ 
  38. # cd native/ 
  39. # ./configure --with-apxs=/usr/local/apache2/bin/apxs 
  40. # make && make install  
  41. # ll /usr/local/apache2/modules/mod_jk.so  
  42. -rwxr-xr-x 1 root root 1076923 Feb 20 19:14 /usr/local/apache2/modules/mod_jk.so 
  43.  
  44. 加载模块mod_jk: 
  45. # vim /usr/local/apache2/conf/httpd.conf 
  46. LoadModule jk_module modules/mod_jk.so 
  47. JkWorkersFile /usr/local/apache2/conf/workers.properties 
  48. JkMountFile   /usr/local/apache2/conf/uriworkermap.properties 
  49. JkLogFile /usr/local/apache2/logs/mod_jk.log 
  50. JkLogLevel info 
  51. JkLogStampformat "[%a %b %d %H:%M:%S %Y]" 
  52.  
  53. 建立相关定义的文件 
  54. # touch /usr/local/apache2/conf/workers.properties 
  55. # touch /usr/local/apache2/conf/uriworkermap.properties 
  56. # touch /usr/local/apache2/logs/mod_jk.log 
  57.  
  58. # cat workers.properties   #定义tomcat主机 
  59. worker.list=tomcat2 
  60. worker.tomcat2.type=ajp13 
  61. worker.tomcat2.host=localhost 
  62. worker.tomcat2.port=8009 
  63. worker.tomcat2.lbfactor=1 
  64.  
  65. # cat uriworkermap.properties  #定义tomcat处理的文件类型,tomcat不处理的由apache来处理。 
  66. /*=tomcat2   
  67. !/*.jpg=tomcat2  
  68. !/*.gif=tomcat2  
  69. !/*.png=tomcat2  
  70. !/*.bmp=tomcat2  
  71. !/*.html=tomcat2  
  72. !/*.htm=tomcat2  
  73. !/*.swf=tomcat2  
  74. !/*.css= tomcat2  
  75. !/*.js= tomcat2  
  76.  
  77. 关闭tomcat的侦听商品起见(主要是为安全考虑) 
  78.     <!-- 
  79.     <Connector port="8080" protocol="HTTP/1.1"  
  80.                connectionTimeout="20000"  
  81.                redirectPort="8443" />   
  82.     --> 
  83.  
  84. 应用分离: 
  85. 将apache的文档目录修改到/data/webapps,将tomcat的目录修改到/data/webapps 
  86.  
  87. Apache的修改文档目录位置: 
  88. DocumentRoot "/data/webapps" 
  89. ...... 
  90.  
  91. <Directory "/data/webapps"
  92.  
  93. tomcat修改的值: 
  94. <Host name="localhost"  appBase="/data/webapps" 
  95.             unpackWARs="true" autoDeploy="true" 
  96.             xmlValidation="false" xmlNamespaceAware="false"
  97.  
  98.  
  99. 完成以上部署之后,我们就可以启动apache、tomcat了。访问http://localhost来看看! 
  100. 如何判断,页面是真的分离了呢? 通过不存在的页面,来看报错信息就行了。
  101. 如何确认,mod_jk真正被加载了?
  102. 方法:查看mod_jk的日志。如果出现:
  103. [info] init_jk::mod_jk.c (3252): mod_jk/1.2.32 () initialized 就表明它已经被正常的加载了。
  104. 我不认为,安装完就结束了,其实它只是另一个开始而已。
  105.  
  106. 关于虚拟机的部分:
  107. 以上操作只是对一台机器的动静分离,如果是在某台机器上,有多个虚拟机,并且各自的路径不一样怎么办?
  108. 这个问题,只需要通过在每个虚拟机里定义相应的uriworkermap.properties文件就行了。
  109. <VirtualHost *> 
         ServerAdmin [email protected]  
         DocumentRoot /data/www  
         ServerName 192.168.1.8  
         ErrorLog logs/error_log  
         CustomLog logs/access_log common  
        JkMountFile conf/uriworkermap.properties  
    </VirtualHost> 
    

01.Tomcat与Apache整合(mod_jk):
02.
03.从Tomcat权威指南中的测试数据,我们不难发现,对于静态页面的数据,Tomcat的处理速度比Apache要快很多,
04.所以为什么要整合 apache?虽然在处理静态页面速度上比Apache快,但是Tomcat经不起大的并发量,容易死。为此,我们就需要Apache,虽然Apache的速度要慢一
05.
06.些,但能承受的起大的并发量。因此,有了本文。
07.
08.三种负载:
09.mod_proxy_http 是 APAHCE 的 HTTP proxy,对静态页面还好,对动态页面效果不佳。
10.mod_proxy_ajp ,  是 APACHE 的 AJP 的 proxy, 好像是 apache 2.2 以后的版本才有(最好还是去对文档看看),只支持 AJP 13
11.mod_jk ,是 tomcat 的 apache 扩展 module(tomcat-connectors),可支持 AJP 12/13,JNI 以及 Loadblance.
12.简单多就是跟proxy 效果虽然差不多但不是一个起跑线。
13.
14.整个思路:
15.1、安装Apache
16.2、安装tomcat
17.3、安装mod_jk
18.4、加载mod_jk
19.5、关闭tomcat的侦听端口
20.6、应用分离(静态与动态页面分离)
21.
22.
23.环境介绍:
24.OS:CentOS 5.7
25.SOFT:Tomcat 6.0+JDK 1.6+Apache 2.2
26.
27.编译安装apache
28.# ./configure --prefix=/usr/local/apache2  --enable-proxy-balancer \
29.--enable-proxy-http --enable-proxy-connect  --enable-proxy \
30.--enable-rewrite --enable-proxy-ajp 
31.中间曾发生过,make失败的情况,最后发现是部分文件的所有者没有变为root,造成失败!
32.# make && make install 
33.
34.编译模块mod_jk:
35.
36.# tar -xzf tomcat-connectors-1.2.32-src.tar.gz
37.# cd tomcat-connectors-1.2.32-src/
38.# cd native/
39.# ./configure --with-apxs=/usr/local/apache2/bin/apxs
40.# make && make install 
41.# ll /usr/local/apache2/modules/mod_jk.so 
42.-rwxr-xr-x 1 root root 1076923 Feb 20 19:14 /usr/local/apache2/modules/mod_jk.so
43.
44.加载模块mod_jk:
45.# vim /usr/local/apache2/conf/httpd.conf
46.LoadModule jk_module modules/mod_jk.so
47.JkWorkersFile /usr/local/apache2/conf/workers.properties
48.JkMountFile   /usr/local/apache2/conf/uriworkermap.properties
49.JkLogFile /usr/local/apache2/logs/mod_jk.log
50.JkLogLevel info
51.JkLogStampformat "[%a %b %d %H:%M:%S %Y]"
52.
53.建立相关定义的文件
54.# touch /usr/local/apache2/conf/workers.properties
55.# touch /usr/local/apache2/conf/uriworkermap.properties
56.# touch /usr/local/apache2/logs/mod_jk.log
57.
58.# cat workers.properties   #定义tomcat主机
59.worker.list=tomcat2
60.worker.tomcat2.type=ajp13
61.worker.tomcat2.host=localhost
62.worker.tomcat2.port=8009
63.worker.tomcat2.lbfactor=1
64.
65.# cat uriworkermap.properties  #定义tomcat处理的文件类型,tomcat不处理的由apache来处理。
66./*=tomcat2  
67.!/*.jpg=tomcat2 
68.!/*.gif=tomcat2 
69.!/*.png=tomcat2 
70.!/*.bmp=tomcat2 
71.!/*.html=tomcat2 
72.!/*.htm=tomcat2 
73.!/*.swf=tomcat2 
74.!/*.css= tomcat2 
75.!/*.js= tomcat2 
76.
77.关闭tomcat的侦听商品起见(主要是为安全考虑)
78.    <!--
79.    <Connector port="8080" protocol="HTTP/1.1" 
80.               connectionTimeout="20000" 
81.               redirectPort="8443" />  
82.    -->
83.
84.应用分离:
85.将apache的文档目录修改到/data/webapps,将tomcat的目录修改到/data/webapps
86.
87.Apache的修改文档目录位置:
88.DocumentRoot "/data/webapps"
89.......
90.
91.<Directory "/data/webapps">
92.
93.tomcat修改的值:
94.<Host name="localhost"  appBase="/data/webapps"
95.            unpackWARs="true" autoDeploy="true"
96.            xmlValidation="false" xmlNamespaceAware="false">
97.
98.
99.完成以上部署之后,我们就可以启动apache、tomcat了。访问http://localhost来看看!
100.如何判断,页面是真的分离了呢? 通过不存在的页面,来看报错信息就行了。
101.如何确认,mod_jk真正被加载了?
102.方法:查看mod_jk的日志。如果出现:

103.[info] init_jk::mod_jk.c (3252): mod_jk/1.2.32 () initialized  就表明它已经被正常的加载了。
01.我不认为,安装完就结束了,其实它只是另一个开始而已。
02.
03.关于虚拟机的部分:
04.以上操作只是对一台机器的动静分离,如果是在某台机器上,有多个虚拟机,并且各自的路径不一样怎么办?
05.这个问题,只需要通过在每个虚拟机里定义相应的uriworkermap.properties文件就行了。
06.
<VirtualHost *>
     ServerAdmin [email protected] 
     DocumentRoot /data/www 
     ServerName 192.168.1.8 
     ErrorLog logs/error_log 
     CustomLog logs/access_log common 
     JkMountFile  conf/uriworkermap.properties 
</VirtualHost>


你可能感兴趣的:(Tomcat与Apache整合(mod_jk))