Bug 13368 - IIS prevents Apache from starting (missing -w option, workaround provided)
Summary: IIS prevents Apache from starting (missing -w option, workaround provided)
Status: RESOLVED INVALID
Alias: None
Product: Apache httpd-2
Classification: Unclassified
Component: All (show other bugs)
Version: 2.0.42
Hardware: PC All
: P3 major with 1 vote (vote)
Target Milestone: ---
Assignee: Apache HTTPD Bugs Mailing List
URL:
Keywords: FAQ
Depends on:
Blocks:
 
Reported: 2002-10-07 16:35 UTC by Brian Stewart
Modified: 2005-03-10 05:40 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Brian Stewart 2002-10-07 16:35:53 UTC
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.
Comment 1 Brian Stewart 2002-10-07 20:20:29 UTC
****
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.
Comment 2 Joshua Slive 2002-10-07 21:22:26 UTC
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?
Comment 3 William A. Rowe Jr. 2002-10-07 22:00:50 UTC
  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.


Comment 4 Brian Stewart 2002-10-08 14:49:18 UTC
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.
Comment 5 John Corniel 2003-01-27 20:06:22 UTC
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.
Comment 6 Andris 2003-03-20 10:37:28 UTC
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.
Comment 7 Joe Orton 2005-03-10 14:40:04 UTC
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.