/ 中存储网

在Windows服务器下集成Apache和Tomcat和IIS的方法

2013-09-13 15:43:39 来源:IT技术网

我在《Perl、PHP、ASP、JSP技术比较》 一文中曾经对四种流行的网站设计语言进行了评测和对比,常言道鱼与熊掌皆我所欲,两者不可兼得,那么有没有一种方法,可以做到鱼与熊掌兼得,同时支持这四 种语言的Web服务器呢,今天我就介绍一下基于Windows Server 2003的同时在一个80端口支持这四种语言的方法。

我们的策略是:安装三个Web服务器,Apache负责支持perl和php,IIS负责支持asp,Tomcat负责支持jsp,通过Apache的proxy_module将三个服务器集成到一个80端口。

安装的方法是,先安装IIS、Apache和Tomcat,配置Apache使用80端口,Tomcat使用8080端口,IIS使用8081端口。

接着在Apache中修改httpd.conf文件,启用proxy_module和proxy_http_module,修改的内容是:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

然后在Apache的httpd.conf文件中增加如下几行:

ProxyPass /php !

ProxyPass /asp/ http://localhost:8081/

ProxyPassReverse /asp/ http://localhost:8081/

ProxyPass /jsp/ http://localhost:8080/

ProxyPassReverse /jsp/ http://localhost:8080/

 然后在<Directory>中设置各个服务所在网站的目录权限,这样php目录即可跑apache,支持php和perl,而asp目录 则跑IIS,jsp目录跑Tomcat,全部都可共享80端口,一个端口同时支持Perl、PHP、ASP、JSP四种语言,兼容性很好,性能也不错。

 另外,将上述命令放在<VirtualHost>中,可以实现不同的虚拟主机使用不同的Web服务器,同一个端口同样可以跑多个Web Server,这对于那些出售虚拟主机的人来说很有用,如果你想在一台Windows服务器上配置不同的Web服务的话也可以尝试一下。

以上配置在Windows Server 2003、Apache 2.2.6、Tomcat 6.0.16、IIS 6.0的环境下调试通过,运行正常。

Win2003完美配置Apache+IIS+Tomcat多站点

本地只测试了一个asp站和一个jsp站,而实际情况是多个asp站和jsp站,又试了两次还是不行,终于在第三次尝试后搞定了,写下来做个纪念。

第一次尝试使用:

<VirtualHost *:80>

ServerAdmin [email protected]

ServerName www.5hope.com

DcumentRoot "G:5hope

DirectoryIndex index.html index.htm index.asp

ProxyPass / http://www.5hope.com:88/

ProxyPassReverse / www.5hope.com:88/

</VirtualHost>

<VirtualHost *:80>

ServerAdmin [email protected]

ServerName www.shundabanjia.com

DocumentRoot "G:wuyubingwww"

DirectoryIndex index.html index.htm index.asp

ProxyPass / http://www.shundabanjia.com:88/

ProxyPassReverse / http://www.shundabanjia.com:88/

</VirtualHost>

本以为这样设置多站点就搞定了,结果发现只识别第一个站点,访问别的站点都是这个站的内容,折腾了一上午,没成功。

第二次尝试使用:

<VirtualHost *:80>

#添加了这个属性**********

ProxyPreserveHost On

ServerAdmin [email protected]

ServerName www.shundabanjia.com

DocumentRoot "G:wuyubingwww"

DirectoryIndex index.html index.htm index.asp

ProxyPass / http://www.shundabanjia.com:88/

ProxyPassReverse / http://www.shundabanjia.com:88/

</VirtualHost>

LoadModule jk_module modules/mod_jk.so

JkWorkersFile "D:tomcat5.0.28confworkers.properties"

<VirtualHost *:80>

ServerAdmin [email protected]

ServerName www.openria.cn

DirectoryIndex index.html index.htm index.jsp

JkMount /* ajp13

JkAutoAlias "D:tomcat-5.0.28webappsria"

<Directory "D:tomcat-5.0.28webappsria">

Options Indexes FollowSymLinks

allow from all

</Directory>

</VirtualHost>

这回经过查官方资料,发现了一个属性,叫ProxyPreserveHost On,试了一下,是可以用实现多个虚拟的asp站点了,但是和我的tomcat站点定义冲突,访问不了jsp站,又不行,只好再找。

第三次尝试使用:

NameVirtualHost *:80

<VirtualHost *:80>

ProxyPreserveHost On

ServerAdmin [email protected]

ServerName www.shundabanjia.com

DocumentRoot "G:wuyubingwww"

DirectoryIndex index.html index.htm index.asp

ProxyPass / http://www.shundabanjia.com:88/

ProxyPassReverse / http://www.shundabanjia.com:88/

</VirtualHost>

LoadModule jk_module modules/mod_jk.so

JkWorkersFile "D:tomcat5.0.28confworkers.properties"

<VirtualHost *:80>

ServerAdmin [email protected]

ServerName www.openria.cn

DirectoryIndex index.html index.htm index.jsp

JkMount /* ajp13

JkAutoAlias "D:tomcat-5.0.28webappsria"

<Directory "D:tomcat-5.0.28webappsria">

Options Indexes FollowSymLinks

allow from all

</Directory>

</VirtualHost>

经过反复看文档,这回终于搞定了,原来是没有吧"Use name-based virtual hosting."打开,去掉NameVirtualHost *:80前面的#号就可以了,真是晕啊。

总算成功了,看来有问题还需要看官方资料,网友的资料还是不完整啊,通过自己的努力,发现新的线索:

ProxyPreserveHost On

NameVirtualHost *:80

这也是自己的收获啊,希望这些经历能帮助需要他的人。