Apache & IIS on the same machine

Decidi republicar este post de um blog meu antigo visto que acho que a sua utilidade é extrema:

Já era algo curioso que andava a investigar a algum tempo para tentar resolver um pequeno problema que existe lá numa aplicação na empresa, e a verdade é que é mesmo possivel.

Aparentemente tudo apontava para ser possivel por cada um deles “em escuta” no porto 80 de um ip diferente. Infelizmente pelos testes realizados não o é. O nosso amigo IIS apodera-se de tudo o que é IP mesmo no IIS Admin especificando apenas o IP desejado.

De qualquer das formas após algum googling a resposta veio aqui:
http://p2p.wrox.com/topic.asp?TOPIC_ID=13366

Como geralmente estas coisas desaparecem passo a citar:
After installing Windows 2003, I configured IIS then turned off the service. Then I installed Apache and configured it to listen on the proper IP and port.

In this case the problem was that IIS 6.0 has a feature called Socket Pooling that claims all ports for all loaded IP addresses, even if not configured in IIS.

So, IIS was hogging port 80 on the IP address I’d designated as the Apache address and causing it to not run.

What I had to do was:

1- Extract the httpcfg.exe utility from the support tools area on the Win2003 CD.
2 – stop all IIS services: net stop http /y
3 – have IIS listen only on the IP address I’d designated for IIS: httpcfg set iplisten -i 192.168.1.253
4 – make sure: httpcfg query iplisten (the ip’s listed are the only ip addresses that IIS will be listening on and no other)
5- restart IIS Services: net start w3svc

Voila! Apache is listening on its default ports on 192.168.1.254 and IIS is listening on its default ports on 192.168.1.253.

E assim foi, apesar de não ter dado à primeira (não sei bem porquê o httpcfg devolveu um resultado 0 (como não o sei interpretar fiquei na dúvida), experimentei e o comportamente era o mesmo.
Lá fiz novamente o Stop ao w3svc, reconfigurei com o httpcfg, obtive um resultado 183 (deve ser melhor que 0, pensei eu), e um novo start aos serviços.

Testando lá temos o apache no Ip 1, e o IIS no IP 2. O Firefox não engana ! 🙂

E assim parece que ficam resolvidos os problemas de páginas com scriptings diferentes na mesma máquina. Nada de chamar php com IIS, e deixar a “natural performance” do apache tratar a “heavy load” bem como os php’s.

Claro que para os asp’s nada melhor que de quem deles sabe… IIS.

Leave a Reply

Your email address will not be published. Required fields are marked *