本人一直都是用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這個服務。就一切正常了。
資料來源:http://blog.sina.com.cn/s/blog_a68ed3da01010ad3.html