DevSecOps

17 dez, 2012

Pow e Apache lado a lado

Publicidade

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/