Como rodar Apache e IIS lado a lado no Windows

Trilhos paralelos

Sumário

Meu ambiente

  • Windows Vista Ultimate 32bits en-us (alguns ajustes serão
    necessários para win2k3 server ou xp)
  • Interfaces de rede: 1 ethernet 100/1000 e 1 wifi ambas usando dhcp,
    nas redes que eu costumo usar elas pegam ips 192.168.0.0/16; adaptadores
    virtuais do vmware (os ips desses adaptadores são computados a partir
    dos ips das interfaces reais, então não deve ocorrer nenhum problema de
    conflito)
  • IIS7 (a interface de configuração do IIS no vista é
    consideravelmente diferente dos outros windows, mas no geral as opções
    são as mesmas)
  • Xampp (mas o mesmo procedimento deve aplicar a qualquer WAMP)

[Sumário]

1. Antes de começar

  1. Escolha dois endereços ip que não vão conflitar com as interfaces
    de rede já existentes, para isso eu sugiro que você escolha dois ip em
    uma máscara de rede completamente diferente da(s) máscara(s) de rede
    que seu(s) adaptadores físicos costumam residir. No meu caso, como meus
    adaptadores físicos residem em máscaras 192.168.0.0/16 (ou subconjuntos dessa máscara),
    escolhi os ips e máscaras 10.0.0.1/255.255.255.0 e 10.0.0.2/255.255.255.0 para os meus adaptadores
    virtuais.
  2. Pare os serviços do apache e/ou IIS, caso você tenha que reiniciar
    o computador durante o processo de configuração, deverá parar os
    serviços novamente.
  3. No meu caso não precisei do CD de instalação do windows, mas
    windows é windows então não custa nada ter o CD por perto
  4. Firewall do Windows e antivirus: se você usa o firewall do windows
    ou seu antivirus controla suas portas de rede você vai ter que
    adicionar excessões para os serviços do apache e do iis nos ips e
    interfaces novos que vamos criar. Para facilitar o processo de
    instalação é mais conveniente simplesmente desabilitar o firewall e o
    antivirus durante o processo de configuração e adicionar as excessões
    ao final do processo.
  5. Skype e msn: são como vírus, se por algum motivo (firewall, nat,
    etc) esses programas não consegue estabelecer comunicação nas suas
    portas próprias ele tendem a escutar como fallback nas portas 443 e 80
    respectivamente, impedindo que o apache ou o iis iniciem normalmente.
    Isso só é um problema se o apache e/ou o iis são iniciados após o msn
    ou o skype, então, durante o processo vale a pena deixar o skype e o
    msn desligados.

[Sumário]

2. Adicione os adaptadores de rede virtuais

  1. Vá ao painel de Controle -> Adicionar Novo Hardware, o windows
    vai tentar detectar novo hardware, não vai conseguir e vai te dar a
    opção de selecionar qual hardware a ser instalado a partir de uma lista
  2. Escolha Adaptadores de rede -> Microsoft -> Microsoft
    Loopback Adapter (ou algo semelhante)
  3. Clique até o final do wizard, se o Windows te pedir para reiniciar,
    não reinicie ainda
  4. Repita os passos acima para o segundo adaptador, desta vez, se o
    Windows pedir para reiniciar pode deixar

[Sumário]

3. Configure os adaptadores de rede virtuais

Esse passo no vista deve ser um pouco difernte dos outros
Windows, mas não é difícil adaptar…

  1. Navegue até as configurações de rede, no vista o caminho é
    Iniciar -> Configurações -> Rede
  2. Encontre os dois adaptadores de rede virtuais que você
    configurou, renomei-os para qualquer coisa que faça sentido para
    você, eu usei “vlan-1″ e “vlan-2″
  3. Clique com o botão direito no “vlan-1″ para abrir as propriedades
    do adpatador
  4. Nos serviços e protocolos associados ao adaptador (parte inferior da janela) certifique-se que todos os itens exceto “Internet Protocol Version 4 (TCP/IPv4)” estão desmarcados
    1. Se “Internet Protocol Version 4 (TCP/IPv4)” não estiver
      disponível na lista clique em Instalar -> Protocolo ->
      Internet Protocol Version 4 (TCP/IPv4)
  5. Clique com o botão direito em “Internet Protocol Version 4
    (TCP/IPv4)” para configurar suas propriedades
  6. Marque [x] Especificar um endereço IP; no endereço e máscara de
    rede coloque um dos valores que você escolheu no passo 1.1; deixe o
    gateway padrão em branco assim como os servidores de DNS
  7. Clique OK para fechar a janela, se o Windows quiser reiniciar,
    não deixe ainda
  8. Repita os passos acima para o segundo adaptador, deixa o Windows
    reiniciar se necessário

[Sumário]

4. Configure entradas de nome para os adaptadores virtuais

Esse passo é opcional, mas o resultado é bom

  1. Escolha qual ip cada servidor irá responder, no meu casso
    escolhei deixar o apache no adaptador vlan-1 (10.0.0.1) e o iis no
    vlan-2 (10.0.0.2)
  2. Encontre seu arquivo de hosts, no vista ele fica em
    %SystemRoot%\System32\drivers\etc\hosts
  3. Abra o arquivo com o notepad e ao final adicione as linhas:
    10.0.0.1 xampp 10.0.0.2 iis7
  4. Salve e feche o notepad
  5. Teste suas configurações pingando os hosts xammp e iis7, que
    devem mostrar agora os ips 10.0.0.1 e 10.0.0.2 respectivamente

[Sumário]

5. Configure o apache

  1. Localize o arquivo de configuração principal do apache, no meu
    caso é c:\xampp\apache\conf\httpd.conf e abra este arquivo com o
    bloco de notas. Note que é comum em várias distribuições do
    apache que os arquivos de configuração sejam divididos em vários
    arquivos separados se são incluídos pelo arquivo principal.
    Normalmente as diretivas que estamos procurando estão: 1) no
    arquivo principal (no meu caso c:\xampp\apache\conf\httpd.conf), 2)
    nos arquivos de configuração dos vhosts (no meu caso
    c:\xampp\apache\conf\extra\httpd-vhosts.conf) 3) no arquivo de
    configuração do ssl (no meu caso
    c:\xampp\apache\conf\httpd-ssl.conf).
  2. Por padrão o apache vem configurado para escutar no endereço
    0.0.0.0:80 e
    0.0.0.0:443, ou
    :80 e :443 ou *:80 e *:443. Qualquer uma dessas opções quer dizer
    que o servidor vai tentar se associar a todos os ips e interfaces
    disponíveis nas portas 80 e 443. O que precisamos fazer é
    restringir o servidor a um único ip.
  3. Pesquise nos arquivos de configuração pela diretiva Listen,
    cada vez que encontrá-la substitua pelo ip escolhido para o apache,
    mantendo a porta original, então Listen 0.0.0.0:80 (ou :80 ou *:80) vira Listen
    10.0.0.1:80 e
    Listen 0.0.0.0:443 (ou :443 ou *:443) vira Listen 10.0.0.1:443.
    Se você usa vhosts baseados em nome as diretivas NameVirtualHost e
    <VirtualHost> podem (e devem) ser mantidas como
    NameVirtualHost *:80 e <VirtualHost *:80>, facilitando a
    manutenção caso você precise algum dia trocar o ip designado ao
    apache. Note que no caso de vhosts baseados em nome você deve
    incluir no seu arquivo de hosts as entradas de nomes para estes
    hosts apontando para o ip designado ao apache.
  4. Salve os arquivos de configuração editados e inicie o apache.
  5. Navegue para o endereço do seu servidor do apache e
    certifique-se que tudo estã respondendo como deve, somente no ip
    (ou host) designado ao apache, ie http://xampp/ ou http://10.0.0.1/ devem retornar o conteúdo do seu
    servidor apache enquantohttp://iis7/ ou http://10.0.0.2/ devem dar timeout

[Sumário]

6. Configure o iis

A interface de gerenciamento do iis7 no vista é consideravelmente
diferente das outras versões do iis e do windows. As opções são as
mesmas mas o caminho para chegar até elas não, então se você não está
usando o iis7 no vista vai ter que dar uma procurada pelo mmc do iis
pelas opções de configuração.

  1. Abra a interface de gerenciamento do iis
  2. Encontre a entrada do site principal do iis, “Default Web
    Site”, na árvore de sites ativos na coluna de navegação da esquerda
    clique com o botão direito sobre sua entrada
  3. Escolha a opção “Edit bindings”
  4. Para cada entrada disponível (normalmente deve ser só uma, a
    entrada padrão que faz com que o iis escute em todos os ips),
    selecione a entrada e clique em editar.
  5. Nos campos do diálogo selecione o ip correspondente à interface
    designada ao iis, se você criou uma entrada de hosts para o iis
    preencha o campo “Hostname” com este nome.
  6. Confirme as opções até retornar à tela principal do iis.
  7. Se você tem outros sites configurados, edite os bindings desses
    sites, desta vez alterne o hostname para o valor desejado
    (lembrando de alterar a entrada correspondente no arquivo de hosts)
  8. Confirme as opções até retornar à tela pricipal do iis e inicie
    o serviço.
  9. Navegue para o endereço do seu servidor iis e certifique-se que
    tudo estã respondendo como deve, somente no ip (ou host) designado
    ao iis, ie http://iis7/
    ou http://10.0.0.2/
    devem retornar o conteúdo do seu servidor iis enquanto http://xampp/ ou http://10.0.0.1/ devem
    continuar exibindo o conteúdo do apache

[Sumário]

7. Divirta-se!

[Sumário]

Atualização para o windows 7

Recentemente migrei para o windows 7 e e lamentavelmente essa solução parou de funcionar. O iis rodando no windows 7 parece ser bem mais fominha e insiste em escutar em todas as interfaces, enão há nenhuma configuração no iis manager para previnir isto. Mas há males que vêm para o bem, o resultado é que há um forma mais elegante de resolver isto usando o netsh.

  1. Siga os passos 1 a 5 normalmente
  2. Abra um prompt de comando em modo administrador
  3. Configure uma entrada iplisten no contexto http para cada interface que iis deve escutar:
    	C:\>netsh http add iplisten ipaddress=10.0.0.2

A boa notícia é que o netsh está disponível no Windows XP, 2000, Server 2003, Server 2008 e 7, e é uma solução bem mais elegante que editar os bindings individuais pelo iis manager
[Sumário]

Postado: janeiro 21st, 2010
Categorias: sysadmin, tutoriais
Tags: ,
Comentários Nenhum Comentário.

Hello World!

Blogging

Por que é tão difícil começar?
Em dezembro de 2008 estava decido a começar tardiamente, diga-se de passagem, a blogar. Registrei o domínio, instalei o wordpress no meu servidor e comecei a procurar um tema legal para usar no blog.  Na época eu participava ativamente de algumas listas de discussão técnicas (AsteriskBrasil, CakePHP, CakePHP Tuga, Lista PHP e PHP MG) e imaginei que seria legal documentar algumas dúvidas recorrentes do pessoal em um blog. Naturalmente a lei de Murphy do ciclismo – “Não importa para onde você vai; é sempre morro acima e contra o vento” -  foi implacável, o trabalho apertou, o tempo ficou curto, e o blog foi ficando para depois e a participação nas listas de discussão degradaram para o modo readonly.

Dois anos e três major realeases do Wordpress depois…

Apareceu uma dúvida legal na  Lista PHP que eu resolvi responder, o que acabou gerando um passo-a-passo razoável e algumas reações positivas (valeu Paulo Diovani!) para dar kick off no blog. Bom, hora de renovar a resolução de ano novo atrasada, abandonar a procastinação, e começar a blogar.

Aproveitem!

Postado: janeiro 21st, 2010
Categorias: meta, sobre
Tags:
Comentários Nenhum Comentário.