windows 系统中 apache 配置多个 tomcat 服务
在实际工作中,可能会有这种情况出现,一台服务器中需要部署两个或多个WEB应用,一个WEB应用对应一个tomcat服务器。
下面我们就来通过对apache 与 tomcat 进行配置 来实现这种功能。
首先:我们假设:
第一个应用服务名为:123,对应域名:www.123.com (也可以是公网注册的域名)
第二个应用服务名为:abc,对应域名:www.abc123.com (也可以是公网注册的域名)
把两个WEB应用放入E:\web目录下
这里我们用到apache2.2 和tomcat6
tomcat6 下载地址:http://download.csdn.net/detail/wng1978/6708647
apache2.2 下载地址:http://download.csdn.net/detail/wng1978/6708609
安装apache2.2 到 D:\server
一)、windows中开启两个tomcat,
要在同一系统中开启多个tomcat ,只需要修改几个端口
a ) 假设有两个tomcat : tomcat1,tomcat2
tomcat1 配置为 WEB应用123的服务器,对应域名:www.123.com
tomcat2 配置为 WEB应用abc的服务器,对应域名:www.abc123.com
解压两份tomcat 如,解压到D:\server\tomcat1,D:\server\tomcat2
b) 打开 D:\server\tomcat1\conf\server.xml (需要修改五个地方)
一、 修改:server 标签中的,port 值,如:<Server port="8015" shutdown="SHUTDOWN">
二、 修改:Connector标签中,port值,如:<Connector port="8099" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
三、 修改:另一个Connector标签中的,port 值,如: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
四 、 修改:Engine标签中的,defaultHost值,如:<Engine name="Catalina" defaultHost="www.123.com">
五、 修改:Host标签中的内容,如:
<Host name="www.123.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
在Host 中增加:
<Context path="" docBase="E:\web\123\" reloadable="true" crossContext="true"/>
c) 打开 D:\server\tomcat2\conf\server.xml (需要修改五个地方)
一、 修改:server 标签中的,port 值,如:<Server port="8006" shutdown="SHUTDOWN">
二、 修改:Connector标签中,port值,如:<Connector port="8098" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
三、 修改:另一个Connector标签中的,port 值,如: <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
四 、 修改:Engine标签中的,defaultHost值,如:<Engine name="Catalina" defaultHost="www.abc123.com">
五、 修改:Host标签中的内容,如:
<Host name="www.abc123.com" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
在Host 中增加:
<Context path="" docBase="E:\web\abc\" reloadable="true" crossContext="true"/>
二)、apache2.2 配置
a) 修改:D:\server\Apache2.2\conf\extra\httpd-vhosts.conf 文件
在最后增加以下配置:()
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.abc123.com
ProxyPass / http://www.abc123.com:8098/
ProxyPassReverse / <a target=_blank href="http://www.abc123.com:8098/">http://www.abc123.com:8098/
</a> </VirtualHost>
<VirtualHost *:80>
ServerName www.123.com
ProxyPass / http://www.123.com:8099/
ProxyPassReverse / <a target=_blank href="http://www.123.com:8099/">http://www.123.com:8099/
</a> </VirtualHost>
需要注意的是,如果是有公网IP地址(如:)和公网域名(www.xxx.com,www.xxx1.com)的,则要修改成这样:
NameVirtualHost 201.101.67.98:80
<VirtualHost 201.101.67.98:80>
ServerName www.xxx.com
ProxyPass / http://www.xxx.com:8098/
ProxyPassReverse / <a target=_blank href="http://www.xxx.com:8098/">http://www.xxx.com:8098/
</a> </VirtualHost>
<VirtualHost 201.101.67.98:80>
ServerName www.xxx1.com
ProxyPass / http://www.xxx1.com:8099/
ProxyPassReverse / <a target=_blank href="http://www.xxx1.com:8099/">http://www.xxx1.com:8099/
</a> </VirtualHost>
如:
b) 修改:D:\server\Apache2.2\conf\httpd.conf 文件
找到以下配置行,去掉前面的“#”(启用http 代理功能)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
找到以下配置行,去掉前面的“#“(引入httpd-vhosts.conf)
Include conf/extra/httpd-vhosts.conf
四)、配置本地域名解晰:
因为我们两个web应用使用的域名:
tomcat1 配置为 WEB应用123的服务器,对应域名:www.123.com
tomcat2 配置为 WEB应用abc的服务器,对应域名:www.abc123.com
并没有经过公网DNS注册,因此需求在本地解晰:
打开: C:\WINDOWS\system32\drivers\etc 文件夹中的:hosts文件(可用记事本打开)
在最后面增加以下两行:
127.0.0.1 www.abc123.com
127.0.0.1 www.123.com
如图:
四)、启动
a) 双击运行 D:\server\tomcat1\bin\startup.bat
b) 双击运行 D:\server\tomcat2\bin\startup.bat
c) 点击系统栏中apache 图栏,打开apache服务窗口,点击restart 按钮重启apache 服务
在IE中分别输入:http://www.123.com 和 http://www.abc123.com