26.2. Configurando o Apache

O Apache no SUSE Linux pode ser configurado de duas maneiras diferentes: com o YaST ou manualmente. A configuração manual oferece um nível maior de detalhes, mas não tem a conveniência da interface gráfica de usuário do YaST.

[Important]Mudanças de configuração

As mudanças em quase todos os valores de configuração do Apache somente são efetuadas depois que o Apache é reiniciado ou recarregado. Isso ocorre automaticamente ao usar o YaST e concluir a configuração com a opção Habilitado selecionada para o Serviço HTTP. O reinício manual é descrito na Seção 26.3, “Iniciando e parando o Apache”. A maioria das mudanças de configuração somente requerem um recarregamento com rcapache2 reload.

26.2.1. Configurando o Apache manualmente

A configuração manual do Apache requer a edição dos arquivos de configuração de texto simples como o usuário Root.

26.2.1.1. Arquivos de configuração

Os arquivos de configuração do Apache podem ser encontrados em duas localizações diferentes:

  • /etc/sysconfig/apache2

  • /etc/apache2/

26.2.1.1.1. /etc/sysconfig/apache2

O /etc/sysconfig/apache2 controla algumas configurações globais do Apache, como módulos para carregar, arquivos de configuração adicionais para incluir, flags com os quais o servidor deve ser iniciado e flags que devem ser adicionados à linha de comando. Como toda opção de configuração desse arquivo está amplamente documentada, não são citadas aqui. No caso de um servidor Web de finalidade geral, as configurações em /etc/sysconfig/apache2 devem bastar para as necessidades de configuração.

[Important]Nenhum módulo SuSEconfig do Apache

O módulo SuSEconfig do Apache foi removido do SUSE Linux. Ele deixou de ser necessário para a execução do SuSEconfig após a mudança de /etc/sysconfig/apache2.

26.2.1.1.2. /etc/apache2/

/etc/apache2/ hospeda todos os arquivos de configuração do Apache. O propósito de cada arquivo é explicado a seguir. Cada um deles inclui várias opções de configuração (também chamadas de diretivas). Como todas as opções de configuração desses arquivos estão amplamente documentadas, não são citadas aqui.

Os arquivos de configuração do Apache são organizados da seguinte maneira:

 /etc/apache2/
 |
 |- charset.conv 
 |- conf.d/
 |   |
 |   |- *.conf
 |
 |- default-server.conf
 |- errors.conf
 |- httpd.conf
 |- listen.conf
 |- magic
 |- mime.types
 |- mod_*.conf
 |- server-tuning.conf
 |- ssl-global.conf
 |- ssl.*
 |- sysconfig.d
 |   |
 |   |- global.conf
 |   |- include.conf
 |   |- loadmodule.conf . .
 |
 |- uid.conf
 |- vhosts.d
 |   |- *.conf
     

Arquivos de configuração do Apache em /etc/apache2/

charset.conv

Especifica os conjuntos de caracteres usados para idiomas diferentes. Não editar.

conf.d/*.conf

Arquivos de configuração adicionados por outros módulos. Esses arquivos podem ser incluídos na configuração do host virtual quando necessário. Consulte exemplos em vhosts.d/vhost.template. Com isso, você pode fornecer diferentes conjuntos de módulos para hosts virtuais diferentes.

default-server.conf

Configuração global para todos os hosts virtuais com padrões aceitáveis. Em vez de mudar os valores, sobregrave-os com uma configuração de host virtual.

errors.conf

Define como o Apache responde a erros. Para personalizar essas mensagens em todos os hosts virtuais, edite esse arquivo. Senão, sobregrave essas diretivas nas configurações do seu host virtual.

httpd.conf

Principal arquivo de configuração do servidor Apache. Evite mudar esse arquivo. Ele contém essencialmente declarações e configurações globais. Sobregrave as configurações globais nos respectivos arquivos de configuração relacionados aqui. Mude as configurações específicas de host (como a raiz de documento) na configuração do host virtual.

listen.conf

Vincula o Apache a endereços IP e portas específicos. A hospedagem virtual baseada em nomes (consulte Seção 26.2.1.2.1, “Hosts virtuais identificados por nome” também é configurada nesse arquivo.

magic

Dados do módulo mime_magic que ajudam o Apache a determinar automaticamente o tipo MIME de um arquivo desconhecido. Não mudar.

mime.types

Tipos MIME conhecidos pelo sistema (é um link para /etc/mime.types). Não editar. Se for preciso adicionar tipos MIME não relacionados aqui, adicione-os a mod_mime-defaults.conf.

mod_*.conf

Arquivos de configuração dos módulos instalados por padrão. Consulte a Seção 26.4, “Instalando, ativando e configurando módulos” para obter detalhes. Observe que os arquivos de configuração dos módulos opcionais residem no diretório conf.d.

server-tuning.conf

Contém diretivas de configuração para os diferentes MPMs (consulte a Seção 26.4.4, “Módulos de multiprocessamento”), bem como opções de configuração geral que controlam o desempenho do Apache. Teste o servidor Web adequadamente ao fazer mudanças nesse arquivo.

ssl-global.conf e ssl.*

Configuração SSL global e dados de certificado SSL. Consulte a Seção 26.6, “Configurando um servidor Web seguro com SSL” para obter detalhes.

sysconfig.d/*.conf

Arquivos de configuração gerados automaticamente de /etc/sysconfig/apache2. Não mude nenhum desses arquivos. De preferência, edite /etc/sysconfig/apache2. Não coloque outros arquivos de configuração nesse diretório.

uid.conf

Especifica o usuário e o ID do grupo com que o Apache é executado. Não mudar.

vhosts.d/*.conf

Deverá conter a configuração do seu host virtual. O diretório contém arquivos de modelo para hosts virtuais com e sem SSL. Todos os arquivos deste diretório que terminam com .conf são incluídos automaticamente na configuração do Apache. Consulte Seção 26.2.1.2, “Configuração do host virtual” para obter detalhes.

26.2.1.2. Configuração do host virtual

O termo host virtual refere-se à habilidade do Apache de servir vários URIs (universal resource identifiers) a partir da mesma máquina física. Isso significa que vários domínios, como www.exemplo.com e www.exemplo.net, são executados por um servidor Web único em uma máquina física.

É prática comum usar hosts virtuais para evitar esforços administrativos (somente um servidor Web único precisa ser mantido) e despesas de hardware (não é necessário ter um servidor dedicado para cada domínio). Os hosts virtuais podem ser identificados por nome, IP ou porta.

Os hosts virtuais podem ser configurados através do YaST (consulte Seção 26.2.2.1.4, “Hosts Virtuais”) ou através da edição manual da se um arquivo de configuração. Por padrão, o Apache no SUSE Linux está preparado para um arquivo de configuração por host virtual em /etc/apache2/vhosts.d/. Todos os arquivos deste diretório com a extensão .conf são incluídos automaticamente na configuração. Um modelo básico para um host virtual é fornecido neste diretório (vhost.template ou vhost-ssl.template para um host virtual com suporte SSL).

[Tip]Sempre crie uma configuração de host virtual

É recomendável criar sempre um arquivo de configuração de host virtual, mesmo que o seu servidor Web hospede somente um domínio. Com isso, além de ter a configuração específica de domínio em um arquivo, você poderá sempre retroceder a uma configuração básica de trabalho, bastando mover, apagar ou renomear o arquivo de configuração do host virtual. Pelo mesmo motivo, você também deverá criar arquivos de configuração separados para cada host virtual.

O bloco <VirtualHost></VirtualHost> contém as informações que se aplicam a um domínio específico. Quando o Apache recebe uma solicitação de cliente para um host virtual definido, ele usa as diretivas fornecidas nesta seção. Quase todas as diretivas podem ser usadas em um contexto de host virtual. Consulte http://httpd.apache.org/docs/2.0/mod/quickreference.html para obter mais informações sobre as diretivas de configuração do Apache.

26.2.1.2.1. Hosts virtuais identificados por nome

No caso de hosts virtuais identificados por nome, cada endereço IP atende mais de um site da Web. O Apache usa o campo host no cabeçalho HTTP enviado pelo cliente para conectar a solicitação a uma entrada ServerName correspondente de uma das declarações do host virtual. Se não for encontrada nenhuma entrada ServerName, o primeiro host virtual especificado será usado como padrão.

A diretiva NameVirtualHost informa o Apache em qual endereço IP e, opcionalmente, em qual porta escutar solicitações de clientes que contêm o nome de domínio no cabeçalho HTTP. Essa opção é definida no arquivo de configuração /etc/apache2/listen.conf.

O primeiro argumento pode ser um nome de domínio completo, mas é recomendável usar o endereço IP. O segundo argumento é a porta (opcional). Por padrão, a porta 80 é usada e configurada através da diretiva Listen.

O curinga * pode ser usado para que o endereço IP e o número da porta recebam solicitações em todas as interfaces. Os endereços IPv6 devem ser colocados entre colchetes.

Exemplo 26.1. Variações de entradas VirtualHost identificadas por nome

 
# NameVirtualHost Endereço IP[:Porta] NameVirtualHost 192.168.1.100:80 
NameVirtualHost 192.168.1.100 
NameVirtualHost *:80 
NameVirtualHost * 
NameVirtualHost [2002:c0a8:164::]:80 
      

A tag VirtualHost de abertura usa o endereço IP (ou nome de domínio completo) declarado anteriormente com NameVirtualHost como um argumento na configuração de host virtual identificado por nome. Um número de porta anteriormente declarado com a diretiva NameVirtualHost é opcional.

O curinga * também é permitido como substituto do endereço IP. Esta sintaxe somente é válida quando combinada ao curinga em NameVirtualHost *. Ao usar endereços IPv6, inclua o endereço entre colchetes.

Exemplo 26.2. Diretivas VirtualHost identificadas por nome

 <VirtualHost 192.168.1.100:80> ... </VirtualHost>

<VirtualHost 192.168.1.100> ... </VirtualHost>

<VirtualHost *:80> ... </VirtualHost>

<VirtualHost *> ... </VirtualHost>

<VirtualHost [2002:c0a8:164::]> ... </VirtualHost> 
26.2.1.2.2. Hosts virtuais identificados por IP

Esta configuração de host virtual alternativa requer a configuração de vários IPs para uma máquina. Uma instância do Apache hospeda vários domínios, a cada qual é atribuído um IP diferente.

O servidor físico deve ter um endereço IP para cada host virtual identificado por IP. Se a máquina não tiver várias placas de rede, interfaces de rede virtuais (álias de IP) também poderão ser usadas.

O seguinte exemplo mostra o Apache em execução em uma máquina com o IP 192.168.0.10, hospedando dois domínios nos IPs adicionais 192.168.0.20 e 192.168.0.30. É necessário um bloco VirtualHost separado para cada servidor virtual.

Exemplo 26.3. Diretivas VirtualHost identificadas por IP

 <VirtualHost 192.168.0.20> ... </VirtualHost>

<VirtualHost 192.168.0.30> ... </VirtualHost> 

Aqui, as diretivas VirtualHost somente são especificadas para interfaces que não sejam 192.168.0.10. Quando uma diretiva Listen também é configurada para 192.168.0.10, é necessário criar um host virtual identificado por IP separado para responder aos pedidos HTTP àquela interface, caso contrário, serão aplicadas as diretivas encontradas na configuração do servidor padrão (/etc/apache2/default-server.conf).

26.2.1.2.3. Configuração básica do host virtual

É preciso que pelo menos as diretivas a seguir estejam presentes na configuração de cada host virtual para compor um host virtual. Consulte /etc/apache2/vhosts.d/vhost.template para conhecer mais opções.

ServerName

Nome de domínio completo com o qual o host deverá ser intitulado.

DocumentRoot

Caminho para o diretório do qual o Apache deverá atender a arquivos deste host. Por motivos de segurança, é proibido o acesso ao sistema de arquivos inteiro por padrão, por isso, você deve desbloquear explicitamente esse diretório dentro de um container Directory.

ServerAdmin

Endereço de e-mail do administrador de servidor. Este endereço, por exemplo, é mostrado nas páginas de erro criadas pelo Apache.

ErrorLog

Arquivo de registro de erros deste host virtual. Embora não seja necessário, costuma-se criar arquivos de registro de erros separados para cada host virtual, visto que facilita bastante a depuração de erros. /var/log/apache2/ é o diretório padrão no qual devem ser mantidos os arquivos de registro do Apache.

CustomLog

Arquivo de registro de acessos deste host virtual. Embora não seja necessário, costuma-se criar arquivos de registro de acessos separados para cada host virtual, visto que permite a análise das estatísticas de acesso de cada host individualmente. /var/log/apache2/ é o diretório padrão no qual devem ser mantidos os arquivos de registro do Apache.

Conforme mencionado acima, devido a motivos de segurança, é proibido o acesso ao sistema de arquivos inteiro por padrão. Portanto, desbloqueie explicitamente o diretório DocumentRoot no qual você colocou os arquivos a serem atendidos pelo Apache:

 <Directory "/srv/www/example.com_htdocs"> Order allow,deny Allow from all </Directory> 

O arquivo de configuração completo tem a seguinte aparência:

Exemplo 26.4. Configuração básica de VirtualHost

 
<VirtualHost 192.168.0.10> 
  ServerName www.exemplo.com 
  DocumentRoot /srv/www/exemplo.com_htdocs 
  ServerAdmin webmaster@exemplo.com 
  ErrorLog /var/log/apache2/www.exemplo.com_log 
  CustomLog /var/log/apache2/www.exemplo.com-access_log common 
  <Directory "/srv/www/exemplo.com"> 
    Order allow,deny 
    Allow from all 
  </Directory> 
</VirtualHost> 
      

26.2.2. Configurando o Apache com o YaST

Para configurar o servidor Web com o YaST, inicie o YaST e selecione Serviços de Rede+Servidor HTTP. Quando o módulo é iniciado pela primeira vez, o Assistente de Servidor HTTP é iniciado, solicitando que você tome algumas decisões básicas em relação à administração do servidor. Após concluir o assistente, a caixa de diálogo em Seção 26.2.2.2, “Configuração de Servidor HTTP” é iniciada toda vez que você chama o módulo Servidor HTTP.

26.2.2.1. Assistente de Servidor HTTP

O Assistente de Servidor HTTP consiste em cinco etapas. Na última etapa da caixa de diálogo, você tem a oportunidade de entrar no modo de configuração de especialista para realizar configurações ainda mais específicas.

26.2.2.1.1. Seleção de Dispositivo de Rede

Especifique aqui as interfaces e portas de rede usadas pelo Apache para escutar as solicitações recebidas. Você pode selecionar qualquer combinação de interfaces de rede existentes e seus respectivos endereços IP. As portas de todas as três faixas (portas conhecidas, portas registradas e portas dinâmicas ou privadas) que não forem reservadas por outros serviços poderão ser usadas. A configuração padrão é escutar em todas as interfaces de rede (endereços IP) pela porta 80.

Marque Abrir Firewall nas Portas Selecionadas para abrir as portas no firewall em que o servidor Web escuta. É necessário disponibilizar um servidor Web na rede, que pode ser uma LAN, uma WAN ou a Internet. Manter a porta fechada é útil somente nas situações de teste em que não é necessário nenhum acesso externo ao servidor Web.

Clique em Próximo para continuar a configuração.

26.2.2.1.2. Módulos

A opção de configuração Módulos propicia a ativação ou desativação das linguagens de script para as quais o servidor Web deverá ter suporte. Para obter informações sobre a ativação ou desativação de outros módulos, consulte Seção 26.2.2.2.2, “Módulos do Servidor”. Clique em Próximo para avançar para a caixa de diálogo seguinte.

26.2.2.1.3. Host Padrão

Esta opção pertence ao servidor Web padrão. Como explicado na Seção 26.2.1.2, “Configuração do host virtual”, o Apache pode atender a vários hosts virtuais a partir de uma única máquina física. O primeiro host virtual declarado no arquivo de configuração é normalmente conhecido como host padrão. Cada host virtual herda a configuração do host padrão.

Para editar as configurações do host (também chamadas de diretivas), escolha a entrada adequada na tabela e clique em Editar. Para adicionar novas diretivas, clique em Adicionar. Para apagar uma diretiva, selecione-a e clique em Excluir.

Figura 26.1. Assistente de Servidor HTTP: Host Padrão

Assistente de Servidor HTTP: Host Padrão

Esta é a lista das configurações padrão do servidor:

Raiz de Documento

Caminho para o diretório do qual o Apache atende a arquivos deste host. /srv/www/htdocs é o local padrão.

Alias

Com a ajuda das diretivas Alias, os URLs podem ser mapeados para localizações físicas do sistema de arquivos. Isso significa que determinado caminho mesmo fora da Raiz de Documento no sistema de arquivos pode ser acessado por meio de um URL que serve de álias para esse caminho.

O diretório padrão Alias /icons do SUSE Linux aponta para /usr/share/apache2/icons para os ícones do Apache exibidos na tela de índice de diretório.

ScriptAlias

Semelhante à diretiva Alias, a diretiva ScriptAlias mapeia um URL para a localização do sistema de arquivos. A diferença é que ScriptAlias designa o diretório de destino como localização CGI, significando que os scripts CGI devem ser executados nessa localização.

Diretório

Com a configuração Diretório, você pode incluir um grupo de opções de configuração que se aplicarão somente ao diretório especificado.

As opções de acesso e exibição dos diretórios /usr/share/apache2/icons e /srv/www/cgi-bin são configuradas aqui. Não deverá ser necessário mudar os padrões.

Inclusão

Com a inclusão é possível especificar arquivos de configuração adicionais. /etc/apache2/conf.d/ é o diretório que contém os arquivos de configuração que acompanham os módulos externos. Por padrão, estão incluídos todos os arquivos neste diretório (*.conf). /etc/apache2/conf.d/apache2-manual?conf é o diretório que contém todos os arquivos de configuração apache2-manual.

Nome do Servidor

Especifica o URL padrão usado por clientes para contatar o servidor Web. Use um nome completo de domínio (FQDN) para acessar o servidor Web em http://FQDN/ ou em seu endereço IP. Não é possível escolher um nome arbitrário aqui; o servidor deverá ser “conhecido” por este nome.

E-Mail do Administrador do Servidor

Endereço de e-mail do administrador de servidor. Este endereço, por exemplo, é mostrado nas páginas de erro criadas pelo Apache.

Resolução do Servidor

Esta opção refere-se à Seção 26.2.1.2, “Configuração do host virtual”. Determinar Servidor que Solicita por Cabeçalhos HTTP permite uma resposta do VirtualHost para uma solicitação a seu nome de servidor (consulte Seção 26.2.1.2.1, “Hosts virtuais identificados por nome”). Determinar Servidor que Solicita por Endereço IP faz com que o Apache selecione o host solicitado, de acordo com as informações de cabeçalho HTTP enviadas pelo cliente. Consulte Seção 26.2.1.2.2, “Hosts virtuais identificados por IP” para obter mais detalhes sobre hosts virtuais identificados por IP.

Após concluir a etapa do Host Padrão, clique em Próximo para continuar a configuração.

26.2.2.1.4. Hosts Virtuais

Nesta etapa, o assistente exibe uma lista dos hosts virtuais já configurados (consulte Seção 26.2.1.2, “Configuração do host virtual”). Se você não tiver feito mudanças manualmente antes de iniciar o assistente de HTTP do YaST, somente um host virtual estará presente (idêntico ao host padrão configurado na etapa anterior). Ele está marcado como padrão (com um asterisco ao lado do nome do servidor).

Para adicionar um host, clique em Adicionar para abrir uma caixa de diálogo na qual inserir informações básicas sobre o host. Identificação de Servidor contém o nome do servidor, a raiz do conteúdo do servidor (DocumentRoot) e o e-mail do administrador. Resolução do Servidor é usado para determinar como um host é identificado (por nome ou por IP). Essas opções são explicadas em Seção 26.2.2.1.3, “Host Padrão”.

Clique em Próximo para avançar para a segunda parte da caixa de diálogo de configuração do host virtual.

Na parte 2 da configuração do host virtual especifique se os scripts CGI serão habilitados e os diretórios a serem usados para eles. Também é possível habilitar SSL. Para isso, é necessário especificar também o caminho para o certificado. Consulte a Seção 26.6.2, “Configurando o Apache com SSL” para obter detalhes sobre SSL e certificados. Com a opção Índice de Diretório, você pode especificar o arquivo a exibir quando o cliente solicita um diretório (por padrão, index.html). Adicione um ou mais nomes de arquivos (separados por espaços) se desejar mudar essa definição. Com a opção Habilitar HTML Público, o conteúdo dos diretórios públicos dos usuários (~user/public_html/) é disponibilizado no servidor em http://www.example.com/~user.

[Important]Criando hosts virtuais

Não é possível adicionar hosts virtuais à vontade. Quando se usa hosts virtuais identificados por nome, cada nome de host deverá ser resolvido na rede. No caso de hosts virtuais identificados por IP, você só pode designar um host para cada endereço IP disponível.

26.2.2.1.5. Resumo

Esta é a etapa final do assistente. Determine como e quando o servidor Apache deve ser iniciado: durante a inicialização ou manualmente. Consulte também um breve resumo sobre a configuração feita até o momento. Se você estiver satisfeito com as configurações, clique em Concluir para concluir a configuração. Para mudar algo, clique em Anterior até chegar à caixa de diálogo desejada. Clique em Configuração Especialista de Servidor HTTP para abrir a caixa de diálogo descrita em Seção 26.2.2.2, “Configuração de Servidor HTTP”.

Figura 26.2. Assistente de Servidor HTTP: Resumo

Assistente de Servidor HTTP: Resumo

26.2.2.2. Configuração de Servidor HTTP

A caixa de diálogo Configuração de Servidor HTTP permite também fazer mais ajustes à configuração do que o assistente (executado somente quando você configura o servidor Web pela primeira vez). Ela consiste em quatro guias descritas a seguir. Nenhuma opção de configuração mudada será efetivada imediatamente — você sempre precisará confirmar as mudanças com Concluir para torná-las efetivas. Ao clicar em Cancelar, você sai do módulo de configuração e descarta suas mudanças.

26.2.2.2.1. Escutar Portas e Endereços

Em Serviço HTTP, defina se o Apache deverá estar em execução (Habilitado) ou parado (Desabilitado). Em Escutar nas Portas, Adicione, Edite, ou Apague endereços e portas nos quais o servidor deverá estar disponível. O padrão é escutar em todas as interfaces pela porta 80. Sempre marque a opção Abrir Firewall nas Portas Selecionadas, senão o servidor Web não poderá ser alcançado do exterior. Manter a porta fechada é útil somente nas situações de teste em que não é necessário nenhum acesso externo ao servidor Web.

Com Arquivos de Registro, observe o registro de acesso ou o registro de erros. Isso é útil para testar a configuração. O arquivo de registro abre uma janela separada, na qual você também pode reiniciar ou recarregar o servidor Web (consulte a Seção 26.3, “Iniciando e parando o Apache” para obter detalhes). Esses comandos são efetivados imediatamente.

Figura 26.3. Configuração de Servidor HTTP: Escutar Portas e Endereços

Configuração de Servidor HTTP: Escutar Portas e Endereços
26.2.2.2.2. Módulos do Servidor

Você pode mudar o status (habilitado ou desabilitado) dos módulos do Apache2 clicando em Toggle Status. Clique em Adicionar Módulo para adicionar um novo módulo que já esteja instalado mas não relacionado. Saiba mais sobre módulos na Seção 26.4, “Instalando, ativando e configurando módulos”.

Figura 26.4. Configuração de Servidor HTTP: Módulos do Servidor

Configuração de Servidor HTTP: Módulos do Servidor
26.2.2.2.3. Host Padrão ou Hosts

Essas caixas de diálogo são idênticas às que já foram descritas. Consulte Seção 26.2.2.1.3, “Host Padrão” e Seção 26.2.2.1.4, “Hosts Virtuais”.