Personal tools
You are here: Home Textos Configurando um Virtual Host no Apache para acessar um site Plone
Document Actions

Configurando um Virtual Host no Apache para acessar um site Plone

by Rafael Oliveira last modified 2008-11-25 18:18

Tutorial.

Data:03sep2008
Autor:Rafael Oliveira <rafaelbco@gmail.com>

Configurando um Virtual Host no Apache para acessar um site Plone

Introdução

Muitas vezes necessário configurar o Apache para acessar um site Plone. Uma razão para fazer isso é permitir que o site seja acessado na porta 80 (padrão do protocolo HTTP), uma vez que:

  • Por padrão o Zope não pode ser iniciado como root.
  • No Linux apenas o usuário root pode escutar nas portas com número menor que 1024.

Este tutorial foi testado na seguinte configuração:

  • Debian Lenny
  • Apache 2.2.8
  • Zope 2.10

Entendendo a configuração do Apache no Debian

No Debian o Apache vem configurado de forma diferente de outras distribuições, principalmente das Red Hat-like.

A primeira diferença é a seguinte: o arquivo de configuração principal do apache é /etc/apache2/apache2.conf. Em outras distribuições normalmente esse arquivo se chama httpd.conf.

O arquivo apache2.conf vem configurado para usar virtual hosts por padrão. Este arquivo inclui todos os arquivos contidos no diretório /etc/apache2/sites-enabled. Esse diretório, por sua vez, contém symlinks para arquivos do diretório /etc/apache2/sites-available.

Um site chamado default (arquivo /etc/apache2/sites-available/default com um symlink em /etc/apache2/sites-enabled/000-default) é incluído por padrão. Esse site é o que vem configurado normalmente nas outras distribuições, usando como diretório raiz /var/www.

Para criar um novo site (ou virtual host), portanto, deve-se criar um arquivo em /etc/apache2/sites-available e criar um symlink na pasta /etc/apache2/sites-enabled.

A configuração dos módulos é feita de modo semelhante. O apache2.conf inclui todos os arquivos em /etc/apache2/mods-enabled, que, por sua vez, contém symlinks para arquivos no diretório /etc/apache2/mods-available.

Portanto, o controle de quais módulos estão ativos é feito adicionando e removendo symlinks ao diretório /etc/apache2/mods-enabled, para os arquivos NOME_DO_MODULO.load e NOME_DO_MODULO.conf existentes no diretório /etc/apache2/mods-available.

Criando um novo virtual host

Attention!

Todos os comandos e edições de arquivo abaixo devem ser feitos como root.

Será criado um novo virtual host escutando na porta 80, que redirecionará para um site Zope.

Algumas variáveis que serão mencionadas no restante do tutorial:

  • [HOST_ADDR]: Número do IP ou nome de domínio do servidor onde está o

    Apache. Exemplos: 201.166.17.3 ou www.empresa.com.

  • [ZOPE_ADDR]: Número do IP ou nome de domínio onde está o Zope. Pode ser igual a [HOST_ADDR].

  • [ZOPE_PORT]: Número da porta que o Zope escuta. Exemplo: 8080.

  • [PLONE_SITE]: Id do Plone Site.

Deve-se substituir o valor apropriado no lugar dessas variáveis nos trechos de arquivos ou comandos a seguir.

A primeira coisa a se fazer é desabilitar o site default:

rm /etc/apache2/sites-enabled/000-default

Em seguida crie o arquivo /etc/apache2/sites-available/meu_site com o seguinte conteúdo:

<VirtualHost *:80>
    ServerName [HOST_ADDR]
    RewriteEngine on
    RewriteRule ^/(.*) http://[ZOPE_ADDR]:[ZOPE_PORT]/VirtualHostBase/http/[HOST_ADDR]:80/[PLONE_SITE]/VirtualHostRoot/$1 [L,P]

    <Directory />
        AllowOverride None
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost> 

Attention!

Se o Zope e o Apache estiverem na mesma máquina substitua [ZOPE_ADDR] no arquivo acima por 127.0.0.1.

Para ativar o virtual host:

ln -s /etc/apache2/sites-available/meu_site /etc/apache2/sites-enabled

Configuração do módulo Proxy

Para que a configuração acima funcione é preciso que o módulo Proxy esteja ativado. Para isto execute o seguinte:

ln -sf /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled
ln -sf /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled
ln -sf /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled

Além disso é necessário diminuir a segurança na configuração do módulo. Edite o arquivo /etc/apache2/mods-available/proxy.conf. Altere a seção <Proxy *> para ficar da seguinte forma:

<Proxy *>
        AddDefaultCharset off
        Order allow,deny
        Allow from all
</Proxy>

Reiniciando o Apache

Após feitas as configurações reinicie o Apache:

/etc/init.d/apache2 restart

Pronto !

Solução de problemas

O arquivo /var/log/apache2/error.log pode ser inspecionado para solucionar problemas.

Se ao tentar acessar o site Plone a seguinte mensagem aparecer no browser, verifique o arquivo de log.

You don't have permission to access / on this server.

Normalmente uma das duas situações abaixo está ocorrendo:

  • O log contém uma mensagem do tipo:

    [Wed Sep 03 08:20:50 2008] [error] [client 127.0.0.1] client denied by server configuration: proxy:http://[...]
    

    Nesse caso a configuração de segurança do módulo Proxy pode estar errada.

  • O log contém uma mensagem do tipo:

    [Wed Sep 03 08:00:18 2008] [error] [client 192.168.1.101] attempt to make remote request from mod_rewrite without proxy enabled: proxy:http://[...]
    

    Nesse caso o módulo Proxy pode não estar corretamente habilitado.

Uma técnica útil para isolar o problema é mudar o redirecionamento para um site conhecido, ao invés de redirecionar para o site Zope. Altere o arquivo /etc/apache2/sites-available/meu_site para algo como:

<VirtualHost *:80>
    ServerName [HOST_ADDR]
    RewriteEngine on
    RewriteRule ^/(.*) http://www.google.com [L,P]
    
 [...]

Dessa forma você poderá verificar se o problema está na configuração do virtual host ou no Zope.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: