2008年8月20日星期三

整合Apache2.2和Tomcat5.5

自从Apache2.2出来后,apache开始支持proxy-ajp.大家知道Apache里的proxy模块,可以实现双向代理功能,功能非常强大。其实从连接器的实现原理上来说,用proxy模块来实现是非常自然的。proxy模块的功能无非就是把相关的请求发给特定的主机再返回结果。那连接器的功能需求就是要把所有对Servlet/JSP的请求都转给后台的Tomcat。
1.安装包
jdk-1_5_0_09-linux-i586.bin
apache-tomcat-5.5.26.tar.gz
httpd-2.2.9.tar.gz

2.开始安装
a)首先安装jdk,直接拷贝到/usr/local下执行

cd /usr/local
./jdk-1_5_0_09-linux-i586.bin
ln -s /usr/local/jdk1.5.0_09 java

b)解压tomcat到/data/app/tomcat
修改/data/app/tomcat/bin/catalina.sh,在开始添加一行:
JAVA_OPTS='-Xms512m -Xmx1024m'

修改/data/app/tomcat/bin/startup.sh和shutdown.sh,添加java环境变量:
export JAVA_HOME=/usr/local/java

c)最关键的就是安装apache了

# tar zxvf httpd-2.2.9.tar.gz
# cd httpd-2.2.9
# ./configure --prefix=/data/app/apache --enable-proxy
\ --enable-proxy-ajp --enable-proxy-connect
\ --enable-proxy-http --enable-proxy-balancer
\ --enable-so --enable-deflate --enable-headers
\ --enable-include --enable-modules=most
\ -enable-mods-shared=all --enable-rewrite
# make
# make install


d)配置httpd.conf

#加载解析模块(前面我们的linux编译时把下面的模块嵌入到了apache中,所以不用再加载)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

#禁止使用proxy_ajp代理的目录:
ProxyPass /images/ !

#使用proxy_ajp代理;下面的配置,是把所有目录全用代理(当然,还会跟上面的禁用配置组合成完整的规则)
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/

ProxyRequests Off

ProxyPass /admin balancer://tomcatcluster/admin lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3

ProxyPassReverse /admin balancer://tomcatcluster/admin


BalancerMember ajp://localhost:8009 route=tomcat8080
BalancerMember ajp://localhost:10009 smax=10 route=tomcat10080
BalancerMember ajp://localhost:11009 route=tomcat11080
BalancerMember ajp://localhost:12009 smax=10 route=tomcat12080


e)配置虚拟主机
修改httpd.conf
找到以下内容

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

将第二行前面的”#”去除。
编辑conf/extra/httpd-vhosts.conf


ServerAdmin 127.0.0.1
DocumentRoot “/data/app/tomcat/webapps“
ServerName 127.0.0.1
CustomLog logs/dummy-127.0.0.1-access_log common
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
ServerName localhost
ServerAlias 127.0.0.1


对应的修改/data/app/tomcat/conf/server.xml
另外继续配置tomcat的oracle连接池:/data/app/tomcat/conf/context.xml

至此apache和tomcat的整合就基本结束了。

阅读全文...