/ 中存储网

Apache+tomcat环境下配置多个应用

2015-11-18 13:24:26 来源:itjs.cn
最近在服务器上需要配置多个应用,使用apache+tomcat搭配,采用mod_jk进行分配。

刚开始在同一个tomcat中配置了多个应用,后来感觉效果不好,改为每个tomcat对应一个应用。

1. 安装apache2.2

2.需求概况:

有2个服务:www.test.com, bbs.test.com。分别对应2个tomcat下的2个web应用。由apache httpd作为互联网接入服务器,在80端口接收对这2个服务的请求。apache httpd再将这2个请求分别对应到不同的后端web服务器(Tomcat)处理。

3.配置域名映射到本机即127.0.0.1,同时配置service域名

127.0.0.1    localhost www.test.com www.service.test.com bbs.test.com bbs.service.test.com  

127.0.0.1    localhost www.test.com www.service.test.com bbs.test.com bbs.service.test.com

4. 分别在2个tomcat里分别部署一个非常简单的应用。

第一个tomcat :端口:8080

编辑$TOMCAT_HOME/conf/server.xml

添加一个Host

<Host name="www.service.test.com" unpackWARs="true" autoDeploy="true"  

xmlValidation="false" xmlNamespaceAware="false"/>  

<Host name="www.service.test.com" unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false"/>

再在$TOMCAT_HOME/conf/Catalina下建立一个目录:www.service.test.com

然后在www.service.test.com目录下建立一个ROOT.xml,内容为:

<Context docBase="/home/mahaibo/app/test"  

privileged="true" antiResourceLocking="false" antiJARLocking="false">   

</Context>  

<Context docBase="/home/mahaibo/app/test"

privileged="true" antiResourceLocking="false" antiJARLocking="false">

</Context>

docBase指向具体的项目路径

同理第二个tomcat(端口8088)也是一样的做法:

编辑$TOMCAT_HOME/conf/server.xml

添加一个Host:

<Host name="bbs.service.test.com" unpackWARs="true" autoDeploy="true"  

xmlValidation="false" xmlNamespaceAware="false"/>  

<Host name="bbs.service.test.com" unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false"/>

然后在$TOMCAT_HOME/conf/Catalina下建立一个目录:bbs.service.test.com

再在bbs.service.test.com目录下建立一个ROOT.xml,内容为:

<Context docBase="/home/mahaibo/app/bbs"  

privileged="true" antiResourceLocking="false" antiJARLocking="false">   

</Context>  

<Context docBase="/home/mahaibo/app/bbs"

privileged="true" antiResourceLocking="false" antiJARLocking="false">

</Context>

5. 分别启动tomcat,可以通过http://www.service.test.com:8080和http://bbs.service.test.com:8088访问

6. 配置apache httpd.conf文件。

找到apach/conf/httpd.conf文件,确认下面这些文字行前面没有"#"注释号:

LoadModule proxy_module modules/mod_proxy.so   

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so   

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   

LoadModule proxy_connect_module modules/mod_proxy_connect.so   

LoadModule proxy_http_module modules/mod_proxy_http.so   

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so  

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

并增加虚拟主机配置:

NameVirtualHost *:80  

<VirtualHost *:80>   

ServerName www.test.com   

ProxyIOBufferSize 8192  

ProxyRequests Off   

ProxyVia Full   

ProxyPass / http://www.service.test.com:8080/ smax=5 max=20 ttl=120 retry=300   

</VirtualHost>   

<VirtualHost *:80>   

ServerName bbs.test.com   

ProxyIOBufferSize 8192  

ProxyRequests Off   

ProxyVia Full   

ProxyPass / http://bbs.service.test.com:8088/ smax=5 max=20 ttl=120 retry=300   

</VirtualHost>  

NameVirtualHost *:80

<VirtualHost *:80>

ServerName www.test.com

ProxyIOBufferSize 8192

ProxyRequests Off

ProxyVia Full

ProxyPass / http://www.service.test.com:8080/ smax=5 max=20 ttl=120 retry=300

</VirtualHost>

<VirtualHost *:80>

ServerName bbs.test.com

ProxyIOBufferSize 8192

ProxyRequests Off

ProxyVia Full

ProxyPass / http://bbs.service.test.com:8088/ smax=5 max=20 ttl=120 retry=300

</VirtualHost>

7.启动apache

./apache ctl start  

8 可以通过访问http://www.test.com和http://bbs.test.com来分别访问2个不同tomcat下的不同应用了。