本人一直都是用APMServ在winxp中搭建本地服务器测试网站,但最近换了win2003系统,结果本来在XP正常使用的APMServ启动时死活都提示80端口被占用,换成8080端口,虽然提示服务启动了,但是本地网站却打不开,在cmd中用命令查找时,发现提示system占用了80端口。
如何查看端口
在win03的cmd命令窗口输入netstat -abn ->c:/port80.txt 然后到c盘port80.txt文件中找到占用80端口的程序pid,记下pid。打开任务管理器,点击“查看”/选择列,勾选“PID(进程标识符)”,然后单击“进程”标签,找到80端口对应的pid。
如本人的命令结果输入显示为
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
其中4为进程pid
打开任务管理器,发现pid为4的是System进程
============================================
查了很长时间。从网上也找了不少原因。
总结起来,无非有几点:
1、装有sqlserver2008的系统,会有一个sqlserver reporting services服务会占掉这个端口。
查看结果:我查了一下,这个服务早就被我停了。
2、迅雷,QQ旋风等一些下载工具会占用这个端口,尤其是迅雷在开着的时候。
检查结果:我在之前也碰到过这个情况,把迅雷停了就可以了,可现在还是不行,于是,把迅雷卸掉。结果发现还是不行。
3、iis可能会占用这个端口。
检查结果,虽然我的机器上也装有iis。但是,我现在所有的iis服务都是用着8080端口,而且还没有开启。也基本上排除了。
4、World Wide Web Publishing Service这个服务也有可能,
检查结果,这个服务是iis启动的必备服务,倒也有可有,但关了后,再看,80端口依然被占。重启还是不行。
可能的一些问题,全被排除了,再然后,发现有人推荐如下的解决方法。 去注册表中修改一个值。
============================================
打开RegEdit:
找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP
找到一个DWORD值Start,将其改为0
重启电脑,System进程将不会占用80端口
============================================
照做了,还是不行,当然,网上是说的是win7系统。
同样的,还有用命令行来做以上操作的
============================================
1. sc config http start= demand
2. Reboot
3. Run the command (netsh http show servicestate) as administrator
After you have run this command, you can disable http.sys as follows:
1. net stop http
2. Sc config http start= disabled
Please let me know if you face any issues in the process.
============================================
试了一下,还是一点用都不管,其实,命令行的这个操作,和改注册表的效果是一样的。
实在没辙,这时,已经重启了机器十几回,因为是远程 控制服务器,每一次重启得十几分钟,可把我折腾坏了。
想起有一些软件是可以监控进程以及进程中包含的线程的,于是我去下载了一个线程查看器。procexp。
装上之后,再看system进程。发现有两个线程很可疑。
第一个就是:World Wide Web Publishing Service,这个服务刚才停过,发现没有效果,我就又起来了。
第二个一个internet的线程,再看这个线程,是由iis admin services这个服务引起的,其他没什么了,这个服务应该也是iis启动的一个必备服务。停掉后,再看,果然80端口不再被占,可以顺利的使用。
最后总结原因。原来是即使 iis里部署的网站都不用80端口,在启动时,仍然会被iis admin services 和World Wide Web Publishing Service,这几个iis必备服务抢到80端口,所以,就一直报80端口被占。把这个服务停掉后,先启动apmserv.然后再启动iis admin这个服务。就一切正常了。