本文共 10722 字,大约阅读时间需要 35 分钟。
一般来讲,配置apache和tomcat的整合有三种方式,mod_proxy,mod_ajp和mod_jk等三种方式,前2种配置步骤类似且相对容易,且只支持apache2.2以后的版本,mod_jk则配置相对复杂,但强在稳定性和性能方面,因为没有系统的写过这方面的文档,故在此简要的记录下使用mod_proxy和mod_jk两种方式来整合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若启动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的虚拟主机
若启动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
3:安装jdk和tomcat,并启动tomcat
4:使用mod_proxy转发jsp的请求,test目录,tomcat.css,tomcat.png请求使用apache处理
5:mod_proxy配置集群
6:测试
二:mod_jk方式整合
1:下载并编译安装mod_jk模块2:修改mod_jk配置文件如下
3:配置workers.properties,指定ajp连接tomcat的信息
4:配置虚拟主机,jkmount_yang.conf文件指定了客户端http请求的走向,test目录下的请求交给apache处理
5:重启apache
6:修改tomcat配置文件如下,重启tomcat实例,文件中主要修改jvmroute参数,同workers.properties中的一致
[root@db1 ~]# cat sr/local/tomcat7/conf/server.xml <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost" jvmRoute="server110"> <!-- 配置集群session 同步相关 --> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.5" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.123.110" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> <!-- 配置集群session 同步相关 --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server> |
7:测试
[root@db1 ~]# tail -f /usr/local/apache/logs/mod_jk.log
[Thu Aug 16 16:45:23 2012]yang 0.017531 [Thu Aug 16 16:45:23 2012]yang 0.003080 [Thu Aug 16 16:45:23 2012]yang 0.001009 [Thu Aug 16 16:45:23 2012]yang 0.001876转载地址:http://tqyoa.baihongyu.com/