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

来源:互联网 发布:剑三初始捏脸数据 编辑:程序博客网 时间:2024/06/03 12:50

使用场景:


引文:

最近在项目中碰到一个问题,我们团队为了节约项目成本,从朋友那边借了一台服务器来跑我们的应用,但之前在这台服务器上面已经跑了一个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 tomcatAworker.tomcatA.type = ajp13worker.tomcatA.host = localhostworker.tomcatA.port = 9009worker.tomcatA.lbfactor = 50worker.tomcatA.cachesize = 10worker.tomcatA.cache_timeout = 600worker.tomcatA.socket_keepalive = 1worker.tomcatA.recycle_timeout = 300# localhost tomcatBworker.tomcatB.type = ajp13worker.tomcatB.host = localhostworker.tomcatB.port = 29009worker.tomcatB.lbfactor = 50worker.tomcatB.cachesize = 10worker.tomcatB.cache_timeout = 600worker.tomcatB.socket_keepalive = 1worker.tomcatB.recycle_timeout = 300

修改httpd.conf,在最后添加

#add mod_jk.confInclude /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.com和http://www.fff.com分别访问两个不同的应用了。



小结:


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


主要参考文章:http://blog.chinaunix.net/uid-7530389-id-2050054.html



0 0
原创粉丝点击