为调试程序,本机安装iis与apache,无法同时使用80端口,现给出解决方法:
, _; ^+ P$ a _' ~% M- C5 a$ Q
% D# O: f9 z' U$ a& Z E: \/ o: C 方法一:
, I+ B2 S) j3 } ?- q1 N4 ~
" F. o/ X7 g& M. B S% N IIS5,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2 原文地址
& S' j$ ]; `3 G; w- X. ]+ p
3 n5 [- H5 R1 V, o7 S- I c:\Inetpub\Adminscripts
h( {' ^% U: p- b
% c6 D6 n9 v- Z+ e cscript adsutil.vbs set w3svc/disablesocketpooling true
& @: v' Q* f O( A
" W( F8 w" G/ i4 O
该命令反馈如下disablesocketpooling : (BOOLEAN) True
+ @5 t! |/ {/ g6 S& }& e" D Y0 \$ p+ `
重启IIS
* K: _. _/ o x1 g Z' U7 u: V6 \( X" c! U* C: p& ]
Inetpub\AdminScripts>cscript adsutil.vbs set w3svc/disablesocketpooling true
# }# \* X! ?" F! d* u1 }6 U l/ Y/ n0 \6 [ a. |1 p7 y
由于 DisableSocketPooling 在 IIS 6.0 元数据库架构 (MBSchema.xml) 中被定义为有效属性,所以,您仍然可以使用 Adsutil.vbs 设置该属性,但这种设置不起作用。IIS 6.0 中的功能是新增的核心级别驱动程序 HTTP.sys 的一部分。要配置 HTTP.sys,您必须使用 Httpcfg.exe
: g! Z/ a/ Y$ F' b0 R* ?5 U
% H5 ]0 f$ {/ \8 H- H 方法二:
' T; m9 o! E* o ?7 i* R
" K5 a k( h9 K: R4 K
IIS6,多IP下共存,IIS为192.168.0.1,apache为192.168.0.2 原文地址
# I2 `) m( R2 ~2 v. w/ D
( A( @2 J j( `/ A$ H& g9 j 到2003的CD下的 support/tools/Support.cab。解压出httpcfg.exe文件,COPY到windows/system32/目录下,用法自己看帮助
; H6 d O% G# W; ?* t2 a. Z! z. C4 V2 W6 Z
命令行
4 U/ w/ G6 O5 v5 E i) m! _/ C9 x1 E% j- s \1 y' H4 `4 z6 `
绑定到某IP: httpcfg set iplisten -i 192.168.0.1
! c+ b* E% n) b
& Q* K' E: x7 t$ y% ?
即命令使用IIS的只监听指定的IP及端口
7 l! q; [' \4 ^' c% u# \% O6 r
! v `# f- _3 k: n 查看绑定: httpcfg query iplisten
/ k1 |- T7 c+ }& i
; j4 q0 f9 L; J& ~! t, m
删除绑定: httpcfg delete iplisten -i 192.168.0.1
4 Y% y) V2 l3 L' X
! W; A5 q% ~1 C' O# C' q9 A: v
命令行
* t- ^# I/ H$ h9 ?& n9 S$ ^7 @: z1 e; {4 S2 Z M ]
net stop Apache2
, n; a0 E! {0 J0 k
y3 p3 b" J" K
net stop iisadmin /y
8 c% k. ?' D0 ^& L
4 R# C" H1 {* F8 L
net START Apache2
* O, {) H% F& W2 z4 y
- x, P8 H+ R: P | net START w3svc
$ x+ C- I" F0 p" c
! _( e+ P) x* M6 O/ Y. U; e 保证iis下的ip设置为全局默认,Apache中httpconf设置listen 192.168.0.2:80,就应该可以两个服务同时运行,相互不冲突了。
2 F3 E# \* ^- N1 O1 N e4 g0 R+ E
! D# m" o& p1 U( M2 w IIS的访问地址为
http://192.168.0.1,Apache访问地址为
http://192.168.0.22 B& ` q% W4 H3 ^2 Z
! L4 e1 D5 a. h6 p5 s
方法三:
+ ]4 ~( v. g a% K- m3 C& X# b0 g
2 ` s! ~' L6 i+ M1 a. S( @ 网上常用的单IP共用80端口方法,不过不推荐,只是使用Apache的代理,速度有影响将apache设为使用80端口,IIS使用其它端口,比如81,然后将apache作为IIS的代理。
& x7 F$ u3 ]# h& a1 o. h6 ^" n3 O
4 B1 `/ f7 @& r& Q3 z* N: k/ d 在httpd.conf里面,取消下面四行的注释:
' Z6 A6 g1 s: u. w1 I
3 D& x' g7 L* g8 C6 F9 |! h LoadModule proxy_module modules/mod_proxy.so
6 H1 X) W% J3 K: c" {0 `, H
& |3 |0 d% X9 s LoadModule proxy_connect_module modules/mod_proxy_connect.so
( j% l4 R# T2 Y6 n* ?4 C
" ^, ]! Z% O* g, D4 B; j2 q. `' A LoadModule proxy_http_module modules/mod_proxy_http.so
" @0 }% Q( K9 {9 k" S+ d. P
/ e9 S& A. F& v LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
$ Q# g$ q& F: \2 o3 f1 y
' S8 E9 q0 ?# x6 ] 然后建立一个虚拟主机,将该域名的所有访问转向81端口。
2 j# D6 `6 h. y# S% a+ s; B& n3 _7 l5 E r' F* i1 @( D
ServerName iloves.vicp.net
2 n8 r; `% f3 k
; g. s# O: b) B2 X1 o ProxyPass / http://localhost:81/
# u1 J% O- i! J4 M7 L
: t: H( @$ E" `5 E3 T$ D
ProxyPassReverse / http://localhost:81/
, F9 C1 N. V7 U Q
5 t- z1 l9 n/ S R3 ~
这样,对外就可以只需要一个端口,即可同时使用apache和IIS的功能了
+ R; u3 f* X6 X8 q4 k/ _: D1 x4 h
; ^6 ]! _/ q( c2 z* p$ D 类推,使用第二种方法,你可以在IIS上配置PHP4,Apache2中配置PHP5,只需要IIS中安装PHP4,把php.ini复制到\ windows目录即可,这个就不用说了吧,Apache2中,只要把PHP5的php.ini放在PHP5安装目录里面就行了
$ T8 Z9 y3 B3 I% m* H8 m, d& e; \
. n3 z: J! J6 u
配置Apache以支持PHP5:
5 R# f2 q9 p# q9 x' k* d0 `, o8 }& [6 k! O/ H, D
LoadModule php5_module "D:/PHPServer/PHP5/php5apache2.dll"
6 ^% x$ v8 `$ x' m, r; Q
2 l# w) k9 t9 ~$ t& c, [ AddType application/x-httpd-php .php
; T& r i4 e& C, E+ Y; L: z' b1 b7 j+ Y; V+ W5 o. Q
DirectoryIndex index.html index.php
# @2 A) @' Q* D) P. [6 x2 k/ D7 L
~$ g+ v$ ]6 H- C4 O1 b; B
PHPIniDir "D:/PHPServer/PHP5"
. M: E% G/ v" O+ l6 X
- e v2 g# Z: A& m$ l, g+ N& M
其中最重要的一条就是 PHPIniDir,用来指明php.ini文件所在位置,即PHP5的安装目录,注意所有目录的应该改为D:/PHPServer/PHP5这种格式,而非D:\PHPServer\PHP5,IIS的访问地址为
http://192.168.0.1,Apache访问地址为http: //192.168.0.2