|
apache和IIS共用80端口为了PHP与ASP各自的执行效率,要在服务器上安装iis与Apache,但是无法同时使用80端口,否则其中必定有一个启动不了。让它们共存的并且访问网站不需要加端口号,解决方法有如下: 方法一: IIS5,多IP下共存,IIS为 127.0.0.1,apache为 127.0.0.1c:\Inetpub\Adminscripts cscript adsutil.vbs set w3svc/disablesocketpooling true 该命令反馈如下disablesocketpooling : (BOOLEAN) True 重启IIS Inetpub\AdminScripts>cscript adsutil.vbs set w3svc/disablesocketpooling true 由于 DisableSocketPooling 在 IIS 6.0 元数据库架构 (MBSchema.xml) 中被定义为有效属性,所以,仍然可以使用 Adsutil.vbs 设置该属性,但这种设置不起作用。IIS 6.0 中的功能是新增的核心级别驱动程序 HTTP.sys 的一部分。要配置 HTTP.sys,必须使用 Httpcfg.exe 方法二: IIS6,多IP下共存,IIS为 127.0.0.1,apache为 127.0.0.1到2003的CD下的 support/tools/Support.cab。解压出httpcfg.exe文件,COPY到windows/system32/目录下,用法看帮助 命令行 绑定到某IP: httpcfg set iplisten -i 127.0.0.1即命令使用IIS的只监听指定的IP及端口 查看绑定: httpcfg query iplisten 删除绑定: httpcfg delete iplisten -i 127.0.0.1命令行 net stop Apache2 net stop iisadmin /y net START Apache2 net START w3svc 保证iis下的ip设置为全局默认,Apache中httpconf设置listen 127.0.0.1:80,就应该可以两个服务同时运行,相互不冲突了。 IIS的访问地址为http://127.0.0.1,Apache访问地址为http://127.0.0.2 方法三: 将apache设为使用80端口,IIS使用其它端口,比如81,然后将apache作为IIS的代理。速度有影响. 在httpd.conf里面,取消下面四行的注释: 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_ftp_module modules/mod_proxy_ftp.so 然后建立一个虚拟主机,将该域名的所有访问转向81端口。 <VirtualHost *:80> ServerName www.abd.com ProxyPass / http://localhost:81/ ProxyPassReverse / http://localhost:81/ </VirtualHost> 这样,对外就可以只需要一个端口,即可同时使用apache和IIS的功能了 使用第二种方法,可以在IIS上配置PHP4,Apache2中配置PHP5,只需要IIS中安装PHP4,把php.ini复制到\windows目录即可,Apache2中,只要把PHP5的php.ini放在PHP5安装目录里面就行了 配置Apache以支持PHP5: LoadModule php5_module "D:/PHPServer/PHP5/php5apache2.dll" AddType application/x-httpd-php .php DirectoryIndex index.html index.php PHPIniDir "D:/PHPServer/PHP5" 其中最重要的一条就是 PHPIniDir,用来指明php.ini文件所在位置,即PHP5的安装目录,注意所有目录的应该改为D:/PHPServer/PHP5这种格式,而非D:\PHPServer\PHP5,IIS的访问地址为http://127.0.0.1,Apache访问地址为http://127.0.0.2一台服务器共存jps、asp、php、asp.net也可以按照上面的思路,让apache、tomcat、IIS共存
8 v/ U" i- I; W! N1 s1 D0 o7 ]5 V& N我测试了下,按照上述的配置,访问是有问题的,也就是说我在本机访问localhost是不行的,由于这里的请求都被转发到了80端口。对于有两个域名的外网主机来说是可以实现的,个人认为。 由于没有测试,成功,所以有找了另外一种方法: 关于方法三,网络上还有另外一种说法: 1、apache 对php的支持很好,iis对php的支持也不错。但是apache对asp支持(除非装一个低效率的asp插件)几乎很烂。2 ]& R O$ ?/ e, H3 r7 h+ R2 o
2、iis对虽然能同时支持asp/php,但对于现在流行的urlrewrite 也就是静态网址就不如apache 的url重写效率高。虽然iis能装个rewrite插件(也是低效率),但不支持iis上的虚拟主机的url重写,只能对根网站、或者默认网站支持。apache的杀手锏就是支持虚拟主机的.htaccess 。所以apache的虚拟主机就可以随意支持url重写了。说了上面这么多废话。直接切入正题:实现服务器同时支持asp/php 并支持上面的虚拟主机的url重写。而且对外的端口都是80。
% A% {$ p5 Z, _* x8 X2 q& C+ D. I# F' ]4 [: c: H
1、安装iis 配置iis(注意:iis里面的网站千万别用80端口)。效果如下:
6 a& E ]2 S9 F* H1 W#虚拟主机1" n/ S" ]$ l9 u1 @# _# v
主机头 www.abc.com 绑定地址:127.0.0.1 端口8080(也可以是其它端口) 这时候可以用http://www.abc.com:8080访问此网站了(已支持asp)1 n* p- M9 ^7 r& e% Q& x0 M3 J
#虚拟主机2
: c0 b- l7 g9 r8 x% R主机头 www.abd.com 绑定地址:127.0.0.1 端口8080.。。同上 这时候可以用http://www.abd.com:8080访问此网站了。
- P3 P$ I) r, c) K- {& P, v1 C( j' _: `2 E! O) U: r
2、安装apache 选择端口号:80
, Y& j- w' U8 Q6 ~3 _% ^, }
9 m* c% H' n: E1 N' h, bapache的虚拟主机,相信大家都会配置,配置好php的运行。安装好后的部分虚拟主机配置如下
% x: B5 d, r- O9 `9 `4 t1 c3 w! Y1 ~; ~+ m- H0 h
#新加的代理服务器(在http.conf配置文件里面找到下面四个把前面的#去掉,这是打开代理功能.); T5 [* U: r, ^; O3 v
LoadModule proxy_module modules/mod_proxy.so
3 g9 Z/ L* U! L* c; HLoadModule proxy_connect_module modules/mod_proxy_connect.so
5 ?7 G' \9 k7 b3 _LoadModule proxy_http_module modules/mod_proxy_http.so
* Q0 h& w' Z7 Q: e4 ?LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
4 K: l1 V L+ l+ k( F2 m+ A#虚拟主机32 w, ]8 W( d% r0 [/ o, U
, _8 o" O0 L" b+ Q<VirtualHost 127.0.0.1>
& O* l0 }1 ^, I s5 m, z#这是虚拟主机目录) f: a" d& Q2 y0 ^2 I6 C5 N! t; F
DocumentRoot "e:/www/ghi" T) R: a! {6 k3 I# I& A6 ]
ServerName www.abd.com
) ?7 _# h" x- K' U</VirtualHost>- l. f) j, w l6 E! ?
% Y# d {2 G. d" w
1 A4 j; T1 F5 d- S! }5 H/ p- @#虚拟主机1的代理指向" ?/ [( r7 l7 m" i! Y# B; C
#asp虚拟主机' q! _1 |$ @% \) ]+ t
<VirtualHost 127.0.0.1>
; l9 [" J" Q4 GServerName www.abc.com
7 `. ~, [, P# [& G# @ProxyPass / http://www.abc.com:8080/
% P+ n) o4 s7 L9 O4 {- h% qProxyPassReverse / http://www.abc.com:8080/5 s' t$ E2 H' ]5 l5 H
</VirtualHost>
9 `4 v" y* n0 m# F M2 z$ A8 L2 s; S, i" K8 ]
- F$ n9 h. s9 O0 {: |
------------------最终效果9 h+ }# k: X( e" s; ^+ f
输入http://www.abc.com 访问到结果与http:/www.abc.com:8080一样的(但地址栏并不显示8080),这是由于apache代理到iis了。7 b' y& Q2 c! L' }7 I: c) p
输入http://www.abd.com 是访问不了的 因为没有在apache里面做代理 而只能输入http://www.abd.com :8080才有结果
z( H4 \, V* b$ j* B输入http://www.abc.com 则直接由apache提供web服务。
# R# V8 R! C1 y8 ^: J
/ U2 P, d5 A# Tapache的url重写大家应该知道怎么配置吧(不会上网搜,不是本文重点)。对虚拟主机做urlrewrite ,打开.htaccess支持功能就可以了。3 c4 v) u" ^1 h( @3 ~! g. ]
" Q) D8 `% d3 N! G. i/ a
上面的结果已经很清楚了。如果www.abc.com 是asp网站。则在apache配置里面做代理就行了。 x$ Y' N5 t2 o% Y8 z" _0 I
如果www.abd.com 是php网站,则直接在 apache里面开虚拟主机。iis不会起到任何作用。/ R, g! r' x' @7 l
7 V8 ^; F0 h, r" W8 g' u4 {$ t* i7 y- z
$ s p# R& W; q- Q: o2 X/ @ |