Você provavelmente já ouviu falar do Pow. Ele é impressionante. No entanto, ele não funciona bem com Apache rodando no mesmo box. O Pow redireciona todo o tráfego de localhost na porta 80 para o seu próprio servidor de aplicativos escutando em uma porta diferente. Isso é péssimo para qualquer um – incluindo eu – que também desenvolve aplicativos web não-Ruby usando hosts virtuais do Apache.
Felizmente, existe uma solução elegante para esse problema e que vem do futuro: o IPv6.
Tenho certeza de que você sabe que o IPv6 não é realmente do futuro, mas sua adoção generalizada certamente é!
Ao configurar o Apache para usar o IPv6 e o Pow para usar IPv4, ambos podem viver em harmonia e se ligam à porta 80 para o conteúdo principal. O Pow já está em IPv4, portanto, só temos de obter o Apache em IPv6. Veja como:
1) Faça-o escutar
Defina (ou altere) a diretiva Listen na sua configuração do Apache (provavelmente /etc/apache2/httpd.conf) para usar a sintaxe de endereço do IPv6:
Listen [::]: 80
O :: significa ligar-se em todos os endereços IPv6 disponíveis (semelhante a 0.0.0.0 do IPv4). Temos que envolvê-lo em colchetes para distinguir a parte do todo que diz respeito ao endereço e que precede a atribuição da porta. Se você tiver suas diretivas NameVirtualHost e VirtualHost definidas para usar *: 80, então você não deve precisar de quaisquer outras alterações. Reinicie o Apache e deve estar tudo certinho.
2) Adicionar hosts
Você precisa adicionar os hosts que deseja que o Apache sirva para /etc/hosts com endereços IPv6 para que o navegador seja roteado corretamente. ::1 é o endereço de loopback padrão, então adicione-os assim:
::1 localhost ::1 wp30.local ::1 wp31.local
Uma coisa que você precisa notar é que é necessário colocá-los em linhas separadas, como mostrado. Com endereços IPv4, você pode empilhá-los em uma única linha, mas por alguma razão isso não funciona com IPv6.
Para ter certeza de que o roteamento está funcionando corretamente, faça ping nos hosts usando a versão IPv6 do ping:
jerod@mbp:~$ ping6 wp30.local PING6(56=40+8+8 bytes) ::1 --> ::1 16 bytes from ::1, icmp_seq=0 hlim=64 time=0.076 ms
3) Navegue por isso
Neste ponto, você deve ser capaz de acessar os hosts vituais do Apache e do Pow em seu navegador.
Notas e desvantagens
Algumas coisas para observar sobre esta solução:
Primeiro, o Chrome parece não determinar os hosts IPv6 corretamente, o que é estranho, porque o Safari 5 e Firefox 4 o fazem. Eu estou no canal dev, então talvez isso tenha algo a ver.
Em seguida, você deve adicionar os hosts a /etc/hosts. Ferramentas como o meu aplicativo Detours não registram corretamente os endereços IPv6 para pesquisa (vou ver se consigo consertar isso depois).
Finalmente, se o IPv6 já não está implementado no mainstream, o Pow pode adotá-lo e estaremos de volta onde começamos. Eu não acho que temos que nos preocupar com isso por enquanto.
Aproveite.
***
Texto original disponível em http://blog.jerodsanto.net/2011/04/pow-and-apache-side-by-side/