设为首页 收藏本站
查看: 1573|回复: 0

[经验分享] 浅谈apache与tomact的整合

[复制链接]

尚未签到

发表于 2018-11-25 14:36:16 | 显示全部楼层 |阅读模式
  一般来讲,配置apache和tomcat的整合有三种方式,mod_proxy,mod_ajp和mod_jk等三种方式,前2种配置步骤类似且相对容易,且只支持apache2.2以后的版本,mod_jk则配置相对复杂,但强在稳定性和性能方面,因为没有系统的写过这方面的文档,故在此简要的记录下使用mod_proxy和mod_jk两种方式来整合apache和tomcat!
  三种方式的对比,具体请参考:http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/
  本文环境介绍:
os版本:centos5.4 64bit
jdk版本:jdk-6u2-linux-i586.bin
tomcat版本:7.0.29
apache版本:2.4.2
apache服务器IP:192.168.123.110/24
tomcat实例一IP:192.168.123.110/24 (端口默认)
tomcat实例二IP:192.168.123.20/24 (端口默认)
  一:mod_proxy方式的整合
1:编译安装apache,需要编译proxy相关的模块,这里采用目前最新版的apache2.4.2


  • [root@db1 ~]# tar -zxvpf httpd-2.4.2.tar.gz   
  • [root@db1 ~]# cd httpd-2.4.2  
  • [root@db1 httpd-2.4.2]# ./configure --prefix=/usr/local/apache --enable-proxy --enable-proxy-ajp  --enable-rewrite --enable-so  --enable-headers --enable-expires  --enable-modules-shared=most --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/  
  • [root@db1 httpd-2.4.2]# make   
  • [root@db1 httpd-2.4.2]# make install

  若启动apache出现下面的错误,基本上属于apr的问题,要么apr没安装,要么版本不对!
  [root@db1 ~]# /usr/local/apache/bin/apachectl -t
httpd: Syntax error on line 113 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/mod_proxy.so into
server: /usr/local/apache/modules/mod_proxy.so: undefined symbol: apr_global_mutex_lockfile
  [root@db1 ~]# yum remove apr
[root@db1 ~]# /usr/local/apache/bin/apachectl -t
Syntax OK

  [root@db1 ~]# /usr/local/apache/bin/apachectl -t -D DUMP_MODULES |grep proxy
proxy_module (shared)
proxy_connect_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_fcgi_module (shared)
proxy_scgi_module (shared)
proxy_ajp_module (shared)
proxy_balancer_module (shared)
proxy_express_module (shared)




  2:配置apache的虚拟主机


  • [root@db1 ~]# /usr/local/apache/bin/apachectl -t -D DUMP_VHOSTS  
  • VirtualHost configuration:  
  • *:80                   is a NameVirtualHost  
  •          default server 192.168.123.110 (/usr/local/apache/conf/extra/httpd-vhosts.conf:23)  
  •          port 80 namevhost 192.168.123.110 (/usr/local/apache/conf/extra/httpd-vhosts.conf:23)  
  •          port 80 namevhost 192.168.123.110 (/usr/local/apache/conf/extra/httpd-vhosts.conf:23)  
  •          port 80 namevhost www.yang.com (/usr/local/apache/conf/extra/httpd-vhosts.conf:31)  
  •          port 80 namevhost www.yang.com (/usr/local/apache/conf/extra/httpd-vhosts.conf:31)

  若启动apache报错如下,则需要加载mod_slotmem_shm.so模块,之前在使用apache中很少用到mod_proxy模块,所以遇到的问题多多!
  [root@db1 ~]# /usr/local/apache/bin/apachectl -k start
[root@db1 ~]# echo $?
0
[root@db1 ~]# netstat -ntpl |grep :80
[root@db1 ~]# cat /usr/local/apache/logs/error_log
[Fri Aug 10 18:32:25.298436 2012] [proxy_balancer:emerg] [pid 7859:tid 47937562389216] AH01177: Failed to lookup provider
'shm' for 'slotmem': is mod_slotmem_shm loaded??
[Fri Aug 10 18:32:25.298650 2012] [:emerg] [pid 7859:tid 47937562389216] AH00020: Configuration Failed, exiting
[Fri Aug 10 18:34:04.717801 2012] [proxy_balancer:emerg] [pid 7876:tid 47508265659104] AH01177: Failed to lookup provider
'shm' for 'slotmem': is mod_slotmem_shm loaded??
[Fri Aug 10 18:34:04.717951 2012] [:emerg] [pid 7876:tid 47508265659104] AH00020: Configuration Failed, exiting

  [root@db1 ~]# grep 'slotmem' /usr/local/apache/conf/httpd.conf
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

  [root@db1 ~]# /usr/local/apache/bin/apachectl -k start
[root@db1 ~]# netstat -ntpl |grep :80
tcp        0      0 :::80                       :::*                        LISTEN      7898/httpd




  注意:2.4.2版本的apache中需要在目录下面添加 Require all granted,否则无论怎么访问都是403,悲了个催的!具体报错如下:
  [Fri Aug 10 19:07:13.263893 2012] [authz_core:error] [pid 8918:tid 1126259008] [client 192.168.123.102:53420] AH01630: client  denied by server configuration: /tmp


  • [root@db1 ~]# grep -v '^#' /usr/local/apache/conf/extra/httpd-vhosts.conf |grep -v '^$'  

  •     ServerName 192.168.123.110   
  •      
  •     Order deny,allow  
  •     Deny from all  
  •      


  •     ServerName   www.yang.com  
  •     DocumentRoot /tmp  
  •      
  •      Options +indexes  
  •      Order allow,deny  
  •      Allow from all  
  •      Require all granted   
  •      


DSC0000.png

DSC0001.png

DSC0002.png

  3:安装jdk和tomcat,并启动tomcat


  • [root@db2 ~]# java -version  
  • java version "1.6.0"  
  • OpenJDK  Runtime Environment (build 1.6.0-b09)  
  • OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode)  

  • [root@db2 ~]# /usr/local/tomcat7/bin/startup.sh   
  • Using CATALINA_BASE:   /usr/local/tomcat7  
  • Using CATALINA_HOME:   /usr/local/tomcat7  
  • Using CATALINA_TMPDIR: /usr/local/tomcat7/temp  
  • Using JRE_HOME:        /usr/local/java  
  • Using CLASSPATH:       /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar  

  • [root@db2 ~]# netstat -ntpl |grep java  
  • tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      7601/java            
  • tcp        0      0 :::8009                     :::*                        LISTEN      7601/java            
  • tcp        0      0 :::8080                     :::*                        LISTEN      7601/java  

DSC0003.png

  4:使用mod_proxy转发jsp的请求,test目录,tomcat.css,tomcat.png请求使用apache处理



  •     ServerName   www.yang.com  
  •     DocumentRoot /tmp  
  •      
  •      Options +indexes  
  •      Order allow,deny  
  •      Allow from all  
  •      Require all granted  
  •      
  •     Proxypass /test !  
  •     Proxypass /tomcat.css !  
  •     Proxypass /tomcat.png !  
  •     Proxypass / http://192.168.123.20:8080  


  5:mod_proxy配置集群



  •     ServerName   www.yang.com  
  •     DocumentRoot /tmp  
  •      
  •      Options +indexes  
  •      Order allow,deny  
  •      Allow from all  
  •      Require all granted   
  •      
  •     Proxypass /test !  
  •     Proxypass /tomcat.css !  
  •     Proxypass /tomcat.png !  
  •     Proxypass / balancer://yang  
  •      
  •     BalancerMember http://192.168.123.20:8080/  
  •     BalancerMember http://192.168.123.110:8080/  
  •      


  6:测试
DSC0004.png

DSC0005.png

  二:mod_jk方式整合
1:下载并编译安装mod_jk模块


  • [root@db1 ~]# wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz  
  • [root@db1 ~]# tar -zxvf tomcat-connectors-1.2.37-src.tar.gz   
  • [root@db1 ~]# cd tomcat-connectors-1.2.37-src/native/  
  • [root@db1 native]# ./configure --with-apxs=/usr/local/apache/bin/apxs   
  • [root@db1 native]# make && make install  

  • [root@db1 ~]# grep 'mod_jk' /usr/local/apache/conf/httpd.conf   
  • Include conf/extra/mod_jk.conf

  2:修改mod_jk配置文件如下


  • [root@db1 ~]# grep -v '^#' /usr/local/apache/conf/extra/mod_jk.conf   
  • LoadModule jk_module modules/mod_jk.so  
  • JkWorkersFile conf/extra/workers.properties  
  • JkLogFile "logs/mod_jk.log"  
  • JkLogLevel info  
  • JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"  
  • JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories  
  • JkRequestLogFormat "%w %V %T"  
  • JkShmFile logs/jk.shm  
  • HostnameLookups Off

  3:配置workers.properties,指定ajp连接tomcat的信息


  • [root@db1 ~]# cat /usr/local/apache/conf/extra/workers.properties   
  • worker.list=yang,jkstatus  
  • #110   
  • worker.server110.port=8009
  • worker.server110.host=192.168.123.110  
  • worker.server110.type=ajp13
  • worker.server110.lbfactor=0  
  • worker.server110.socket_keepalive=1  
  • worker.server110.socket_timeout=0  
  • worker.server110.retries=3

  • #20  
  • worker.server20.port=8009
  • worker.server20.host=192.168.123.20  
  • worker.server20.type=ajp13
  • worker.server20.lbfactor=9
  • worker.server20.socket_keepalive=1
  • worker.server20.socket_timeout=0  
  • worker.server20.retries=3

  • worker.yang.type=lb
  • worker.retries=3
  • worker.yang.balance_workers=server110, server22  
  • worker.yang.sticky_session=true
  • worker.yang.sticky_session_force=true

  • worker.jkstatus.type=status  
  • worker.jkstatus.read_only=true

  4:配置虚拟主机,jkmount_yang.conf文件指定了客户端http请求的走向,test目录下的请求交给apache处理



  •     ServerName   www.yang.com  
  •     DocumentRoot /tmp  
  •     Include  conf/extra/jkmount_yang.conf  
  •      
  •      Options +indexes  
  •      Order allow,deny  
  •      Allow from all  
  •      Require all granted   
  •      


  • [root@db1 ~]# cat /usr/local/apache/conf/extra/jkmount_yang.conf   
  • JkMount   /*              yang  
  • JkMount   /status         jkstatus  
  • JkunMount /test/*         yang

  5:重启apache


  • [root@db1 ~]# /usr/local/apache/bin/apachectl -t  
  • Syntax OK  
  • [root@db1 ~]# /usr/local/apache/bin/apachectl -k restart

  6:修改tomcat配置文件如下,重启tomcat实例,文件中主要修改jvmroute参数,同workers.properties中的一致
  [root@db1 ~]# cat sr/local/tomcat7/conf/server.xml

    
  
  
  
  
  
  
   
  

    
   
     
   

    
           
            
            
            
            
            
              
            
            
            
            
         
         
         
         
         
  

      
            
      

        
        

        
   
  




  7:测试
DSC0006.png

DSC0007.png

DSC0008.png

  [root@db1 ~]# tail -f  /usr/local/apache/logs/mod_jk.log
[Thu Aug 16 16:45:23 2012]yang www.yang.com 0.017531
[Thu Aug 16 16:45:23 2012]yang www.yang.com 0.003080
[Thu Aug 16 16:45:23 2012]yang www.yang.com 0.001009
[Thu Aug 16 16:45:23 2012]yang www.yang.com 0.001876




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639484-1-1.html 上篇帖子: Apache下实现ssi的配置方法 下篇帖子: apache虚拟主机搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表