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
- Linux下Apache与Tomcat整合,请求转发【实践成功记录版本】
- linux下apache与tomcat整合
- linux 下apache 与tomcat整合
- linux下Apache与tomcat整合;
- linux下apache与tomcat整合
- Linux下Apache与tomcat的整合
- Linux下Apache与Tomcat 整合
- Linux下Apache与Tomcat整合调试
- 在 Linux 下整合 Apache 与 Tomcat
- Linux下Apache与tomcat的整合
- Linux下Apache整合Tomcat
- linux下tomcat与apache web服务器的整合
- Linux下Tomcat与Apache Web服务器整合
- Linux下Tomcat与Apache Web服务器整合
- Linux下Apache与Tomcat整合的简单方法
- Linux 下 Apache 与 Tomcat 整合的简单方法
- Linux系统下Apache与Tomcat整合的简单方法
- Linux下Apache与Tomcat整合的方法
- LeetCode N-Queens
- Leetcode 链表 Linked List Cycle II
- codeforces 463E Caisa and Tree 栈+dfs
- C# 基类 派生类 方法隐藏 方法重写
- python小工具:批量替换某个目录下的文件名
- Linux下Apache与Tomcat整合,请求转发【实践成功记录版本】
- C++ 练习笔记
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 
- STL之multiset中equal_range,multimap中的equal_range,bitset容器,string字符串操作,lambda表达式
- 数组与malloc、new与malloc的区别
- 法雷级数
- 黑马程序员------IO操作总结(三)
- codeforce 263 div2D Gargari and Permutations
- 【开源Libevent篇章四】缓存的运用