众所周知,Apache处理动态页面的能力非常稳定,而且由于apache发展早,社区活跃,Linux SA青睐使用Apache来均衡Tomcat,处理JSP动态语言。
而我们熟知的Nginx Web服务器则是处理静态能力非常强悍的WEB服务器,最近又有一种新的架构性能也很强劲(Linux+Nginx+Apache+Mysql+PHP),有时间可以一起探讨。
今天我们来学习Apache+tomcat如何来整合,此架构已用于线上。
一、系统版本:
|
1
2
3
4
|
Centos 5.3 64位系统
Nginx版本为:httpd-2.2.13.tar.bz2
Jdk版本为:1.6.0_18
Tomcat版本为:Apache Tomcat/6.0.30
|
二、安装Apache:
|
1
2
3
4
5
6
7
|
cd
/usr/src
&&
tar
-jxvf httpd-2.2.13.
tar
.bz2
cd
httpd-2.2.13
/srclib/apr
&&.
/configure
--prefix=
/usr/local/apr
&&
make
&&
make
install
cd
..
/apr-util/
&& .
/configure
--prefix=
/usr/local/apr-util
--with-apr=
/usr/local/apr
make
&&
make
install
cd
../../ && .
/configure
--prefix=
/usr/local/apache2
--
enable
-mods-shared=all --with-mpm=worker --
enable
-deflate --
enable
-cache --
enable
-disk-cache --
enable
-mem-cache --
enable
-
file
-cache --
enable
-proxy --
enable
-proxy-ajp --
enable
-proxy-balancer --
enable
-proxy-http --
enable
-rewrite --with-apr=
/usr/local/apr
--with-apr-util=
/usr/local/apr-util
|
注*这里安装mod_proxy处理Tomcat jsp页面模块,安装apr、apr-util增加Tomcat处理性能,当然也可以用mod_jk的方式,如果是mod_jk的方式的话,可以参考这篇文章:
|
1
|
http:
//bbs
.linuxtone.org
/thread-1195-1-1
.html
|
三、Tomcat安装配置:
安装Tomcat之前需要安装JAVA JDK,chmod o+x jdk* && ./jdk* ;程序包会提示按回车键,我们根据提示安装即可,解压完毕,会在当前目录生成 jdk1.6.0_18 文件夹,如果jdk是tar文件,可以执行tar -xzf jdk.xxx.tar.gz 解压,然后移动到/usr/java/下:
|
1
2
3
4
5
6
7
8
|
mkdir
-p
/usr/java
&&
mv
jdk1.6.0_18
/usr/java/
下
#vi /etc/profile 最后面加入以下语句:
export
JAVA_HOME=
/usr/java/jdk1
.6.0_18
export
CLASSPATH=$CLASSPATH:$JAVA_HOME
/lib
:$JAVA_HOME
/jre/lib
export
PATH=$JAVA_HOME
/bin
:$JAVA_HOME
/jre/bin
:$PATH:$HOMR
/bin
#source /etc/profile //使环境变量马上生效
java --version
//
查看java版本,显示版本是1.6.0_18,并且是64位的证明安装成功!
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b10, mixed mode)
|
然后解压tomcat软件包:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
cd
/usr/src
&&
tar
xzf apache-tomcat-6.0.30.
tar
.gz
mv
apache-tomcat-6.0.30
/usr/local/tomcat1
cp
-r
/usr/local/tomcat1
/usr/local/tomcat2
#1.分别给两个tomcat创建发布目录
mkdir
-p
/usr/webapps/
{www_1,www_2}
#2.修改Tomcat1的 server.xml文件如下内容,设置route ID:
<Enginename=
"Catalina"
defaultHost=
"localhost"
jvmRoute=
"tomcat1"
>
#3.然后在</Host>前面加入如下内容,设置自定义发布目录:
<Context path=
""
docBase=
"/usr/webapps/www1"
reloadable=
"true"
/>
#4.同样的道理设置tomcat2:
<Enginename=
"Catalina"
defaultHost=
"localhost"
jvmRoute=
"tomcat2"
>
<Contextpath=
""
docBase=
"/usr/webapps/www_2"
reloadable=
"true"
/>
#5.分别设置两个tomcat的jvmroute名称为tomcat1和tomcat2,一会跟apache整合会用到。
|
四、整合Apache+Tomcat:
在vi /usr/local/apache2/conf/vhosts.conf添加如下内容:(新建)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin wgkgood@163.com
DocumentRoot
"/usr/webapps/www"
ServerName 192.168.2.79
<Directory
"/usr/webapps/www "
>
AllowOverride None
Options None
Order allow,deny
Allow from all
<
/Directory
>
ProxyRequests Off
RewriteEngine On
ProxyPreserveHost On
RewriteRule ^$ balancer:
//wwwCluster/
[P,L,NC]
RewriteRule ^/(.*)$ balancer:
//wwwCluster/
$1 [P,L,NC]
<Proxy balancer:
//wwwCluster
>
BalancerMember ajp:
//localhost
:8411 route=tomcat1
BalancerMember ajp:
//localhost
:8412 route=tomcat2
<
/Proxy
>
<
/VirtualHost
>
|
如上,8411和8412是两个tomcat的AJP端口,可以根据实际情况修改,这样的话,所有配置都完毕了!启动apache ok!
在两个tomcat发布目录分别创建index.jsp文件,Tomcat1内容如下:
|
1
2
3
4
5
6
7
|
<html>
<body>
<h1> TOMCAT_1 JSP Test Page<
/h1
>
<%=new java.util.Date()
%>
<
/body
>
<
/html
>
|
Tomcat1内容如下:
|
1
2
3
4
5
6
7
|
<html>
<body>
<h1>TOMCAT_2 JSP Test Page<
/h1
>
<%=new java.util.Date()
%>
<
/body
>
<
/html
>
|
然后直接访问 http://192.168.2.79 ,会出现两个tomcat发布的不同页面,则表示Apache+Tomcat整合完毕!
附:如果要测试tomcat性能,使用LoadRunner,开启Tomcat Jconsole连接配置:
|
1
2
3
|
JAVA_OPTS="-server -Xms2048m -Xmx2048m -Djava.library.path=/usr/local/apr/lib -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=192m
-XX:MaxNewSize=384m -Xloggc:/usr/local/tomcat/logs/gc.out -Djava.rmi.server.hostname=192.168.0.18 -Dcom.sun.management.jmxremote.po
rt=10000 -Dcom.sun.management.jmxremote.ssl=
false
-Dcom.sun.management.jmxremote.authenticate=
false
|