windows系统下apache和IIS共用80端口的安装调试实录

windows系统使用php不仅效率不高,而且总容易出问题,终于下决心在windows下安装apache环境,不过由于仍然有ASP程序,因此IIS还得保留。我安装apache后折腾了很久查了不少资料,才终于调通,这里将我的安装配置记录说明下,希望能给其他也出现问题的朋友一个参考。

安装环境:
系统原本环境是windows2003+IIS+php+mysql系统,apache使用的是xampp集成安装包,目前的版本包含了Apache HTTPD 2.2.11, MySQL 5.1.33, PHP 5.2.9, Openssl 0.9.8i。安装后apache下的网站使用80端口,IIS使用8081端口,通过apache代理转发为80端口。

安装调试:

首先将IIS的所有网站端口改为8081端口重启IIS,然后下载xampp的windows安装包安装到D盘xampp目录,运行后提示mysql被占用,apache也无法启动。mysql被占用是因为原有的mysql服务并没有卸载,停掉xampp然后重启,发现mysql已经提示可以使用了(此时使用的是原有的mysql系统,这样就不用倒腾数据库了,真是方便,这样IIS的php也照样能用,apache的PHP使用的是xampp自带的配置)。而apache无法启动的原因通常来说这都是80端口被占用,于是将迅雷的TCP端口从80改成其他任意一个端口。

再次重启xampp,apache仍然无法启用,依旧提示busy。于是检查80端口占用情况,在cmd命令行环境输入以下命令:netstat -nao | find “LISTEN” | find “:80″,发现80端口还和一个进程建立了联系,在任务管理器->查看->选择列->勾选PID进程,显示被system占用。在系统服务里关闭world wide web publishing service,重启xampp后apache就可以使用了。看来还是IIS的问题,备份好IIS之后,将IIS所有网站都删除,然后重启IIS仍然不行。看了许多资料都没办法,只有卸载IIS重新安装,然后导入之前的备份并将所有网站关闭。再次查看端口占用情况,发现0.0.0.0:80被pid为4的system进程监听,于是检查所有IIS下的网站,发现确实有一个网站的端口没有更改默认80端口,更改之后,重启IIS和xampp,apache还是显示busy,80端口仍然被IIS监听。

估计是恢复IIS备份恢复后,还是保留了原有的状态,于是再次卸载和安装IIS,这次不再恢复备份,而是直接新建tcp端口为8081的网站,这下apache终于可以启用了。当然还得重新设置apache和配置虚拟主机,才可以访问apache和IIS下的网站。

修改在apache下conf目录的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

另外检查下是否要包含httpd-vhosts.conf文件,如果下述文字前方有#,就把他去掉
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

接着在conf的子目录extra下的httpd-vhosts.conf文件,添加apache和IIS下的虚拟主机信息:

apache下的虚拟主机配置范例:

<VIRTUALHOST *:80>

    ServerAdmin [email protected]
    ServerName    www.kuangfeng.cn
    ServerAlias kuangfeng.cn *.kuangfeng.cn
    DocumentRoot  “d:/kuangfeng”
</VirtualHost>

IIS下的虚拟主机配置范例:

<VIRTUALHOST *:80>
    ProxyPreserveHost On
    ServerAdmin [email protected]
    ServerName www.dothetask.cn
    ServerAlias     dothetask.cn  *.dothetask.cn
    DefaultLanguage zh-CN
    AddDefaultCharset GB2312
    ProxyPass / http://www.dothetask.cn:8081/ 
    ProxyPassReverse / http://www.dothetask.cn:8081/
</VirtualHost>

记住IIS下应建立tcp端口为8081的同一域名网站,才能实现转发。当然上述配置修改保存后,要重启IIS和XAMPP才能生效。

以上是我不得己的办法,如果你只是想本地测试或者有多余的IP还可以用下述的方法让apache和IIS共存:

1:服务器有两个IP:

你可以让IIS和apache使用不同的IP,这样两个系统都可以用80端口,而不需要使用代理功能了。

这种情况下只需要在httpd.conf文件中的监听端口设置处将下述文字对应修改就可以了

默认设置:
#Listen 12.34.56.78:80
Listen 80

修改后:
listen 192.168.0.2:80

2.本地测试

这种最简单,你可以让IIS用81端口,apache使用默认80端口,就可以同时使用了。

希望以上的文字能给大家有所帮助,也希望大家安装调试顺利成功!

你可能感兴趣的:(windows)