您的位置:首页 > 运维架构 > Tomcat

Linux下Apache与Tomcat整合,请求转发【实践成功记录版本】

2014-08-30 23:36 615 查看
使用场景:

引文:

最近在项目中碰到一个问题,我们团队为了节约项目成本,从朋友那边借了一台服务器来跑我们的应用,但之前在这台服务器上面已经跑了一个tomcat的应用,占用了80端口,那么我们的应用就只能占用80以外的端口了,比如8080,这就导致了请求非常不友好,必须用类似http://www.bbb.com:8080来访问我们的应用。后来在Apache的功能支持下,实现了一台服务器上用同一个端口(80)分发到不同的应用,具体过程如下:

1、准备,下载需要的文件。

软件下载:

1. jdk1.6.x http://java.sun.com/javase/downloads/index.jsp

2. tomcat6.x http://tomcat.apache.org/download-60.cgi

3. apache2.x http://httpd.apache.org/download.cgi

4. jk_mod1.2.x http://tomcat.apache.org/download-connectors.cgi

到Apache官方网站下载所需要的文件:

httpd-2.2.27.tar.gz

apache-tomcat-6.0.18.tar.gz

tomcat-connectors-1.2.40-src.tar.gz

其中httpd和tomcat-connectors-1.2.40-src.tar.gz为源码包,apache-tomcat为二进制包。

2、安装Apache。

# tar xzvf httpd-2.2.27.tar.gz

# cd httpd-2.2.27

# ./configure --prefix=/usr/local/apache2 --enable-so

# make clean all

# make

# make install

【可参考】

3、安装Tomcat。

#
cp apache-tomcat-6.0.18.tar.gz /usr/local/

# cd /usr/local

# tar xzvf apache-tomcat-6.0.18.tar.gz

# ln -s apache-tomcat-6.0.18 tomcat6

【重要】

4、编译生成mod_jk。

#
tar xzvf
tomcat-connectors-1.2.40-src.tar.gz

# cdtomcat-connectors-1.2.40-src/native

# ./configure --with-apxs=/usr/local/apache2/bin/apxs

# make

# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/

5、配置。

在/usr/local/apache2/conf/下面建立两个配置文件mod_jk.conf和workers.properties。

#vi
mod_jk.conf

添加以下内容:

#设置Apache与Tomcat之间的连接,让Apache遇到jsp文件时,在后台将其交由Tomcat去处理
#加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so

#指定tomcat监听配置文件地址
JkWorkersFile conf/workers.properties

#指定日志存放位置
JkLogFile logs/mod_jk.log

#指定日志级别
JkLogLevel debug

# 指定 mod_jk 模块的日志格式
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]


#viworkers.properties

worker.list=tomcatA,tomcatB

# localhost tomcatA

worker.tomcatA.type = ajp13
worker.tomcatA.host = localhost
worker.tomcatA.port = 9009
worker.tomcatA.lbfactor = 50
worker.tomcatA.cachesize = 10
worker.tomcatA.cache_timeout = 600
worker.tomcatA.socket_keepalive = 1
worker.tomcatA.recycle_timeout = 300

# localhost tomcatB
worker.tomcatB.type = ajp13
worker.tomcatB.host = localhost
worker.tomcatB.port = 29009
worker.tomcatB.lbfactor = 50
worker.tomcatB.cachesize = 10
worker.tomcatB.cache_timeout = 600
worker.tomcatB.socket_keepalive = 1
worker.tomcatB.recycle_timeout = 300


修改httpd.conf,在最后添加

#add mod_jk.conf
Include /usr/local/apache2/conf/mod_jk.conf

#不可缺少,否则只有一个tomcat能运行
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.aaa.com
ServerAlias  www.aaa.com
ErrorLog logs/aaa-error_log.txt
CustomLog logs/aaa-access_log.txt common
JkMount /* tomcatA
</VirtualHost>

<VirtualHost *:80>
ServerName www.fff.com
ServerAlias  www.fff.com
ErrorLog logs/fff-error_log.txt
CustomLog logs/fff-access_log.txt common
JkMount /* tomcatB
</VirtualHost>


6、修改tomcat配置

修改tomcat下的server.xml
端口:
多个Tomcat的端口修改,为了避免占用情况:
端口1:关闭端口:<Server port="XXXX" shutdown="SHUTDOWN">
端口2:ajp11的端口: <Connector port="XXXX" protocol="AJP/1.3" redirectPort="8443" />
端口3:修改 http 的端口:<Connector port="XXXX" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000"  redirectPort="8443" />

engine设置:
Engine 主要是配置 jvmRoute 属性
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatB">


7、测试准备工作:

在host文件中设置本地域名:

#test

127.0.0.1 www.aaa.com

127.0.0.1 www.fff.com

8. 大功告成,可以用http://www.aaa.comhttp://www.fff.com分别访问两个不同的应用了。

小结:

windows和linux配置基本一样,本次实践最大区别在于linux下chongxin编译so文件。

主要参考文章:http://blog.chinaunix.net/uid-7530389-id-2050054.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: