I am trying to install Apache on Windows Server 2008. The installation ends with a warning that the IP address I configured Apache to listen on cannot be bound. When I use netstat -a -p tcp
to see if any processes are listening on the IP address and port I see several entires .. one of which shows as listening on 0.0.0.0:80. Here is a partial list of the output.
Proto Local Address Foreign Address State
TCP 0.0.0.0:80 MYSERVERNAME:0 LISTENING
This looks to be IIS7 listening on all IP addresses on port 80. The confusing thing is that I stopped IIS7. All websites are shown as stopped. I tried iisreset /STOP
as well as using the IIS7 Manager, yet something is still listening on 0.0.0.0:80. I have even made sure that every web site is bound to another IP address other than the one I want freed for Apache. Has anyone else run into this?
"Agile Jedi" set me on the right path. After searching for "disable socket pooling IIS7" I came across a great article that gave some step by step directions. I followed the directions and sure enough it worked! I was able to stop IIS7 from binding all IP addresses Basically, it boils down to the following commands (I copied and pasted these from the above article in case the article is taken down).
netsh
http
sho iplisten
. It should be blankadd iplisten ipaddress=192.168.0.90
(use the public IP address you WANT IIS7 to bind)You should get IP address successfully added
sho iplisten
againIt should should show 192.168.0.90 in the list
Type
exit
to get out of netshType type
netstat -an
.See if you notice 192.168.0.90:80 in the list. If you see 0.0.0.0:80, do an
iisreset
IIS does this for socket pooling performance. We have several APACHE/Windows instances running side by side. I don't think this is a problem in newer versions of IIS. Either way you need to disable socket pooling:
FOR IIS6
http://support.microsoft.com/kb/238131