日期:2014-05-16  浏览次数:21472 次

windows下整合Apache+IIS+Resin
前提:Apache使用80端口,iis和resin都使用Apache的虚拟主机映射,来完成三者的合并。

第一步:Apache与IIS整合

1.修改Apache的配置文件httpd.conf

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

找到上两行代码,去掉前面的#号;

2.添加映射iis的虚拟主机

在httpd.conf最后面加上下面一段代码:

<VirtualHost *:80>
ServerName 61.168.21.208----------------------服务ip
DocumentRoot d:/www----------------------------apache的发布目录
</VirtualHost>

<VirtualHost  *:80>

ServerName blovesky.51vip.biz
ProxyPass / http://blovesky.51vip.biz:81/
ProxyPassReverse / http://lovesky.51vip.biz:81/

</VirtualHost>


注释:blovesky.51vip.biz是iis发布项目的域名,iis在这里使用的是81端口。

关于iis配置域名和端口这里不做陈述。

第二步:Apache和Rsin的整合

修改http.conf文件:

1。找到LoadModule代码块,在后面添加下面这行代码:

LoadModule caucho_module "E:/zjd/resin/win32/apache-2.0/mod_caucho.dll"

2.resin的虚拟主机:

在配置文件最后面添加如下代码:

<IfModule mod_caucho.c>
  ResinConfigServer localhost 6802
  CauchoStatus yes
</IfModule>

 

<VirtualHost *:80>
ServerName zjdlove.51vip.biz

# 别名,当有二级域名存在时,这个别名应该取消
ServerAlias zjdlove.51vip.biz  *.zjdlove.51vip.biz
DocumentRoot  E:/zjd/resin/deploy/51dw
AddHandler caucho-request jsp
<LocationMatch /*>
      SetHandler caucho-request
</LocationMatch>
<LocationMatch "/WEB-INF/">
AllowOverride None
deny from all
</LocationMatch>

<Directory "E:/zjd/resin/deploy/51dw">
Allow from all
</Directory>

</VirtualHost>


注释:zjdlove.51vip.biz为配置resin下发布项目的域名,resin的端口可以为非80的其他端口,如:8080

E:/zjd/resin/deploy/51dw 这个路径是resin下发布的51dw的项目跟目录。

3.修改resin的配置文件resin.conf

打开文件,找到document-directory这个标签,把值改为要发布的这个项目的跟目录,如:51dw的根目录E:/zjd/resin/deploy/51dw,域名不需要在这里配置。

备注:这样做,resin就只能发布一个项目,目前先暂时这样解决(听说用apache代理,和resin合并,可以用resin发布多个项目使用apache的80端口)。resin为版本为3.0.23,apahce版本为2.0.59

保存后重新启动服务(apache,resin,iis)

(后续)

配置过程中,iis出现的问题:

一、asp不能访问:

在win2003(iis6.0)下面,有个Web服务扩展,在里面有个几个选项,其中,有一项Active Server Pages默认为禁止,这里需要改为允许。

二、访问网站出现这样的错误:

Active Server Pages ?? 'ASP 0131'

???Э???·??

/news/include/config.asp??А 1

???./include/skin.asp' ???? '..' ????????

Asp 0131错误:路径问题,由于asp文件里使用了父路径,所以在iis6.0里应该设置启用父路径。

方法:打开IIS网站管理,到相关网站:右键---属性-----主目录----配置----选项---启用父路径(打勾)即可。

三、在iis下的二级域名站点,在apache配置下面不能访问(访问总是回到顶级域名下的网站)问题:

在apache,http.conf文件中,虚拟主机配置如下:


<VirtualHost  *:80>

ServerName www.xxx.cn

ServerAlias xxx.cn *.xx.cn

ProxyPass / http://www.xxx.cn:81/

ProxyPassReverse / http://www.xxx.cn:81/

</VirtualHost>

#二级域名网站

<VirtualHost  *:80>

ServerName bbs.xxx.cn

ProxyPass / http://bbb.xxx.cn:81/

ProxyPassReverse / http://bbs.xxx.cn:81/

</VirtualHost>

问题是现在访问bbs.xxx.cn却总是回到www.xxx.cn的网站上,最后终于发现是别名的问题,把红色字体部分去掉,问题解决,困扰了大半天的问题终于解决。




2009-08-26


再续:关于上面写的apache下只能代理一个resin下的web项目,最近找到了解决的办法,可以同时代理resni下的多个web项目。

方法:在上面说的基础上,不修改resin的根目录,即document-directory标签的值,默认还是resin的Root,在Apache配置文件中,代理映射在上面的基础上只需要修改:

<VirtualHost *:80>
ServerName zjdlove.51vip.biz
ServerAlias zjdlove.51vip.biz  *.zjdlove.51vip.biz
DocumentRoot  D:/resin/webapps/51dw
AddHandler caucho-request jsp
<LocationMatch /*>
      SetHandler caucho-request
</LocationMatch>
<LocationMatch "/WEB-INF/">
AllowOverride None
deny from all
</LocationMatch>

<Directory "D:/resin/webapps/51dw">

只需要修改为:


<VirtualHost *:80>
ServerName zjdlove.51vip.biz
ServerAlias zjdlove.5