We are currently running both MS IIS5 and Apache 1.3.27 simulatenously on several Windows 2000 Advanced Servers (W2K,sp3,current on all service/hotfixes as of 10/04), each web server has its own dedicated IP address. Now we are trying to upgrade to the new 2.x series of Apache and it is not working. FYI: Even with the 1.3.x series, we always have to start MS IIS first, then the Apache service, but at least it works this way, but not at all with 2.x. We have two IPs bound to the same NIC in the machines. I have configured IIS to bind specifically to its own IP in both the FTP and IIS settings within the MS Console. ------------- IIS is bound to 165.xxx.xxx.237 Apache is bound to 165.xxx.xxx.238 ------------- Starting Apache2 from command-line for the moment (starting via services yields the same failure) yields the following: D:\Apache2\bin\Apache.exe -w -n "Apache2" -k start (730048)Only one usage of each socket address (protocol/network address/port) i s normally permitted. : make_sock: could not bind to address 165.xxx.xxx.238:80 no listening sockets available, shutting down Unable to open logs *Please NOTE that is says 238 is occupied and unusable... IIS is bound to 237 not 238. This works fine on 1.3.27 The only change I have made at this point to the stock httpd.conf is around line #124 regarding the LISTEN directive: Listen 165.xxx.xxx.238:80 If I change the LISTEN directive to use a non-80 port, then it fires up just fine with IIS5 running. Once again I repeat, IIS5 is on IP#1 (237), Apache is on IP#2 (238). ------------- If I take a stock Apache 1.3.27 httpd.conf, then I apply the following to the LISTEN and BIND directives: Listen 165.xxx.xxx.238:80 BindAddress 165.xxx.xxx.238 I can run Apache 1.3.x and IIS5 at the same time without any problems. I can replicate this problem on 3 different servers (W2K Server, and (2) W2K Advanced Servers) ------------- My guess is that Apache 2.x is "incorrectly" detecting IIS's bind to the OTHER IP address on port 80, and then failing.... something in the startup bind/logic which was changed in the 2.x seems to be the blame at this point. I have not seen anyone else having similar issues when I have run Google web/group searches, and posting to the HTTP mailing list has yielded no one with a similar setup. -------------- I have confirmed this as working with Apache 1.3.24/26/27 and NOT working with Apache 2.0.42/43. I am using the PRE-compiled binaries provided by Apache.org and at the moment using PURE vanilaa stock httpd.conf setups just to prove the bug.
**** Additional information: It was suggested that I run Apache 2.0.43 by itself to see if it "bound" correctly. 1) I tried: Listen 165.xxx.xxx.238:80 (with IIS _NOT_ running) It correctly answered on 238, but did not answer on 237 2) I then tried: Listen 80 (with IIS _NOT_ running) It correctly answered on 237 and 238 To add flame to the fire. When option #1 was running bound to only 1 IP, IIS refused to start claiming "port in use". When in reality Apache was only answering on 1 IP, which leads me to believe Apache 2.x.x is incorrectly binding to all IPs even when instructed NOT to.
All the symptoms you describe are equally consistent with IIS trying to bind to both ports. Are you absolutely sure you have IIS configured correctly to bind only to the single port?
IIS ALWAYS attempts to bind to all ports (e.g. 0.0.0.0:80) upon startup. There is no clean way to disable this behavior. Apache 1.3 added the -W svc argument to specify additional services that Apache needs to be run 'W'ith before that service can be started. Apache 2.0 doesn't support this arg yet. Once it supports that arg, apache -k config -W w3svc would force IIS to glom all adapters, release them, glom the correct adapters, and then Apache can start.
Joshua: Yes. I am 100% sure that all the IP binding are set to the specific IP address. Will: Thanks for the additional information on the -W. Hell, I have been using Apache on Win32 for 4 years and didn't realize that option was there. I added the dependency to my 1.3 Apache and that helped a bit. I hacked a registry entry for the Apache2 series with the following regedit: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2] "DependOnService"=hex(7):54,00,63,00,70,00,69,00,70,00,00,00,41,00,66,00,64,00,\ 00,00,57,00,33,00,53,00,56,00,43,00,00,00,00,00 This added the W3SVC as a dependency for Apache2... but you are right apparently the 2.x series does not support the -W params yet. -- So would this be considered a bug? (since it works on 1.3) or an enhancement request, since 2.0 is missing the -W function? I really would like to move on to 2.x, but I'm afraid I am stuck with IIS on the same box and everything has to be on standard 80/443 ports, otherwise I would go with an altnerate 8000 port and move on.
Gentlemen, I would like to add my situation with running Apache 2.0 and IIS 5.0 on the same computer. Backgroud: I have a W2KPro setup with IIS 5.0 and Apache 2.0 installed. I had problems with installation because IIS was holding on to 0.0.0.0 when Apache was trying to bind to it. I stopped IIS and reinstalled, everything ok. Since it is a Windows machine, I let IIS start automatically on boot up and Apache on Manual. The Problem: I would like to switch when I need to between IIS and Apache. I would normally do this by stopping one service and starting the other. I know this is odd to some but I am lazy and an elementary developer. I am sure there is a better way. Anywho, when I go to the Windows 'Services' window Apache is stopping but gets "frozen" and then in few seconds, it will completely reboot my computer. This is big pain and I am not sure why this happens.
I had the same problem. IIS binds to ALL IP addreses even there is no web site or Host Header Name configured to it. Have you read this? http://support.microsoft.com/default.aspx?scid=kb;en-us;Q238131 I run IIS and Apache 2.0 about year on Win2k server without conflicting problems.
From reading all above it doesn't seem like there's any real httpd bug which can be fixed here, just IIS issues. Marking INVALID.