26.4. Instalando, ativando e configurando módulos

O software do Apache é criado de maneira modular: toda a funcionalidade, exceto algumas tarefas centrais, são manipuladas por módulos. Isso progrediu tanto que até o HTTP é processado por um módulo (http_core).

Os módulos do Apache podem ser incorporados ao binário do Apache durante a compilação ou carregados dinamicamente durante a execução. Consulte a Seção 26.4.2, “Ativação e desativação” para obter detalhes sobre como carregar os módulos de maneira dinâmica.

Os módulos do Apache podem ser divididos em quatro categorias diferentes:

Módulos de base

Os módulos de base são compilados no Apache por padrão. O Apache do SUSE Linux possui somente a compilação de mod_so (necessário para carregar outros módulos) e http_core. Todos os outros estão disponíveis como objetos compartilhados: em vez de serem incluídos no binário do servidor, eles podem ser incluídos durante a execução.

Módulos de extensão

Em geral, os módulos chamados de extensões vêm no pacote de software do Apache, mas normalmente não são compilados estaticamente no servidor. No SUSE Linux, esses módulos estão disponíveis como objetos compartilhados que podem ser carregados no Apache durante a execução.

Módulos externos

Os módulos rotulados como externos não estão incluídos na distribuição oficial do Apache. O SUSE Linux oferece vários deles já disponíveis para uso.

Módulos de multiprocessamento

Os MPMs são responsáveis pela aceitação e manipulação de solicitações ao servidor Web, representando o centro do software do servidor Web.

26.4.1. Instalação dos módulos

Se você seguiu a maneira padrão de instalar o Apache (descrita na Seção 26.1.2, “Instalação”), ele será instalado com todos os módulos de base e de extensão, o módulo de multiprocessamento Prefork MPM e o módulo externo PHP5.

Você pode instalar módulos externos adicionais iniciando o YaST e escolhendo Software+Gerenciamento de Software. Agora escolha Filtro+Pesquisa e procure apache. Entre outros pacotes, a lista resultante contém todos os módulos externos disponíveis do Apache.

26.4.2. Ativação e desativação

Ao usar o YaST, você pode ativar ou desativar os módulos da linguagem de script (PHP5, Perl, Python e Ruby) com a configuração de módulo descrita em Seção 26.2.2.1, “Assistente de Servidor HTTP”. Todos os outros módulos podem ser habilitados ou desabilitados conforme descrição em Seção 26.2.2.2.2, “Módulos do Servidor”.

Se preferir ativar ou desativar os módulos manualmente, use os comandos a2enmod mod_foo ou a2dismod mod_foo respectivamente. a2enmod -l gera uma lista de todos os módulos ativos no momento.

[Important]Incluindo arquivos de configuração para módulos externos

Se você ativou os módulos externos manualmente, certifique-se de carregar seus arquivos de configuração em todas as configurações de host virtual. Os arquivos de configuração para módulos externos localizam-se em /etc/apache2/conf.d/ e não são carregados por padrão. Se você precisar dos mesmos módulos em cada host virtual, poderá incluir *.conf a partir desse diretório. Caso contrário, inclua os arquivos individuais. Consulte /etc/apache2/vhost.d/vhost.template para obter exemplos.

26.4.3. Módulos de base e de extensão

Todos os módulos de base e de extensão são descritos detalhadamente na documentação do Apache. Somente uma descrição breve dos módulos mais importantes está disponível aqui. Consulte http://httpd.apache.org/docs/2.2/mod/ para saber detalhes sobre cada módulo.

mod_alias

Fornece as diretivas Alias e Redirect, com as quais é possível mapear um URl para um diretório específico (Alias) ou redirecionar um URL solicitado para outra localização. Esse módulo é habilitado por padrão.

mod_auth*

Os módulos de autenticação oferecem diferentes métodos de autenticação: autenticação básica com mod_auth_basic ou autenticação sintetizada com mod_auth_digest. A autenticação sintetizada é considerada experimental no Apache 2.2.

mod_auth_basic e mod_auth_digest devem ser combinados com um módulo provedor de autenticação, mod_authn_* (por exemplo, mod_authn_file para autenticação baseada em arquivo de texto) e com um módulo de autorização mod_authz_* (por exemplo, mod_authz_user para autorização de usuário).

Mais informações sobre este tópico estão disponíveis nas instruções “Como fazer autenticação” em http://httpd.apache.org/docs/2.2/howto/auth.html

mod_autoindex

Autoindex gera listagens de diretório quando não há nenhum arquivo de índice (por exemplo, index.html). A aparência desses índices é configurável. Esse módulo é habilitado por padrão. No entanto, as listagens de diretório são desabilitadas por padrão por meio da diretiva Options — sobregrave essa definição na configuração do seu host virtual. O arquivo de configuração padrão desse módulo está localizado em /etc/apache2/mod_autoindex-defaults.conf.

mod_cgi

mod_cgi é necessário para executar scripts CGI. Esse módulo é habilitado por padrão.

mod_deflate

Quando se usa esse módulo, o Apache pode ser configurado para compactar dinamicamente determinados tipos de arquivos antes de entregá-los.

mod_dir

mod_dir fornece a diretiva DirectoryIndex, com a qual você pode configurar os arquivos que serão entregues automaticamente quando for solicitado um diretório (index.html por padrão). Ele também faz o redirecionamento automático para o URl correto quando uma solicitação de diretório não contém uma barra no fim. Esse módulo é habilitado por padrão.

mod_expires

Com mod_expires, você pode controlar a freqüência com que os caches de proxy e browser atualizam seus documentos enviando um cabeçalho Expires. Esse módulo é habilitado por padrão.

mod_include

mod_include permite usar SSI (Server Side Includes), que fornece uma funcionalidade básica para gerar páginas HTML de forma dinâmica. Esse módulo é habilitado por padrão.

mod_info

Fornece uma visão geral abrangente da configuração do servidor em http://localhost/server-info/. Por motivos de segurança, você deve sempre limitar o acesso a esse URL. Por padrão, somente localhost possui permissão para acessar esse URL. mod_info está configurado em /etc/apache2/mod_info.conf

mod_log_config

Com este módulo, é possível configurar a aparência dos arquivos de registro do Apache. Esse módulo é habilitado por padrão.

mod_mime

O módulo mime assegura-se de que um arquivo seja entregue com o cabeçalho MIME correto de acordo com a extensão do nome do arquivo (por exemplo text/html para documentos HTML). Esse módulo é habilitado por padrão.

mod_negotiation

Necessário para negociação de conteúdo. Consulte http://httpd.apache.org/docs/2.2/content-negotiation.html para obter mais informações. Esse módulo é habilitado por padrão.

mod_rewrite

Fornece a funcionalidade do mod_alias, porém, oferece mais recursos e flexibilidade. Com mod_rewrite, você pode redirecionar URLs de acordo com regras múltiplas, cabeçalhos de solicitação e outros.

mod_speling

mod_speling tenta corrigir automaticamente erros tipográficos em URLs, como erros de maiúscula/minúscula.

mod_ssl

Habilita as conexões criptografadas entre o servidor Web e os clientes. Consulte a Seção 26.6, “Configurando um servidor Web seguro com SSL” para obter detalhes. Esse módulo é habilitado por padrão.

mod_status

Fornece informações sobre a atividade e o desempenho do servidor em http://localhost/server-status/. Por motivos de segurança, você deve sempre limitar o acesso a esse URL. Por padrão, somente localhost possui permissão para acessar esse URI. mod_status está configurado em /etc/apache2/mod_status.conf

mod_suexec

mod_suexec permite executar scripts CGI para outro usuário e grupo. Esse módulo é habilitado por padrão.

mod_userdir

Habilita diretórios específicos de usuário disponíveis em ~user/. A diretiva UserDir deve ser especificada na configuração. Esse módulo é habilitado por padrão.

26.4.4. Módulos de multiprocessamento

O SUSE Linux oferece dois módulos de multiprocessamento (MPMs) diferentes para uso com o Apache.

26.4.4.1. MPM prefork

O MPM prefork implementa um servidor Web de pré-bifurcação sem threads. Ele faz o servidor Web comportar-se de maneira semelhante ao Apache versão 1.x, no sentido de isolar as solicitações e as manipular através da bifurcação de um processo filho separado. Dessa forma, solicitações problemáticas não podem afetar outras, evitando um bloqueio do servidor Web.

Embora o MPM prefork ofereça estabilidade com este método processual, ele consome mais recursos do sistema do que o seu equivalente, o MPM worker. O MPM prefork é considerado o MPM padrão para sistemas operacionais baseados em Unix.

[Important]MPMs neste documento

Este documento pressupõe que o Apache é usado com o MPM prefork.

26.4.4.2. MPM worker

O MPM worker oferece um servidor Web de vários threads. Thread é a forma “mais simples” de um processo. A vantagem de um thread em relação a um processo é o menor consumo de recursos. Em vez de somente bifurcar processos filhos, o MPM worker atende solicitações usando threads com processos do servidor. Os processos filhos pré-bifurcados possuem vários threads. Esse método melhora o desempenho do Apache por consumir menos recursos do sistema do que o MPM prefork.

Uma grande desvantagem é a estabilidade do MPM worker: se um thread for corrompido, todos os threads de um processo podem ser afetados. No pior dos casos, isso poderá resultar em falha do servidor. Talvez ocorram erros internos do servidor devido a threads que não podem se comunicar com recursos do sistema, sobretudo ao usar CGI (Common Gateway Interface) com o Apache em situação de sobrecarga. Outro argumento contra o uso do MPM worker com o Apache é que nem todos os módulos disponíveis do Apache são seguros para o thread e, portanto, não podem ser usados em conjunto com o MPM worker.

[Warning]Usando módulos PHP com MPMs

Nem todos os módulos PHP disponíveis são seguros para o thread. O uso do MPM worker com mod_php é bastante desaconselhável.

26.4.5. Módulos externos

Veja aqui uma lista de todos os módulos externos fornecidos com o SUSE Linux. Veja a documentação do módulo no diretório indicado.

FastCGI

FastCGI é uma extensão ao CGI independente de linguagem, escalável e aberta que oferece alto desempenho sem as limitações de APIs específicas de servidor. Os aplicativos FastCGI são muito rápidos por serem persistentes. Não há overhead de inicialização por solicitação.

Nome do pacote: apache2-mod_fastcgi
Arquivo de configuração: /etc/apache2/conf.d/mod_fastcgi.conf
Mais informações: /usr/share/doc/packages/apache2-mod_fastcgi
mod_perl

mod_perl o habilita a executar scripts Perl em um interpretador embutido. O interpretador persistente embutido no servidor evita o overhead de iniciar um interpretador externo e a desvantagem do tempo de inicialização do Perl.

Nome do pacote: apache2-mod_perl
Arquivo de configuração: /etc/apache2/conf.d/mod_perl.conf
Mais informações: /usr/share/doc/packages/apache2-mod_perl
mod_php5

PHP é uma linguagem de script embutida em HTML para várias plataformas no servidor.

Nome do pacote: apache2-mod_php5
Arquivo de configuração: /etc/apache2/conf.d/php5.conf
Mais informações: /usr/share/doc/packages/apache2-mod_php5
mod_python

mod_python permite embutir o Python no servidor HTTP Apache visando um impulso considerável no desempenho e maior flexibilidade ao desenvolver aplicativos baseados na Web.

Nome do pacote: apache2-mod_python
Mais informações: /usr/share/doc/packages/apache2-mod_python
mod_ruby

O mod_ruby embute o interpretador Ruby no servidor Web Apache, permitindo que os scripts CGI do Ruby sejam executados de forma nativa. Eles são iniciados muito mais rapidamente do que sem mod_ruby.

Nome do pacote: apache2-mod_ruby
Mais informações: /usr/share/doc/packages/apache2-mod_ruby
mod_jk-ap20

Esse módulo fornece conectores entre o Apache e um container do servlet Tomcat.

Nome do pacote: mod_jk-ap20
Mais informações: /usr/share/doc/packages/mod_jk-ap20

26.4.6. Compilação

O Apache pode ser estendido por usuários avançados através da gravação de módulos personalizados. Para desenvolver módulos para o Apache ou compilar módulos de terceiros, é necessário o pacote apache2-devel e as ferramentas de desenvolvimento correspondentes. O apache2-devel também contém as ferramentas apxs2, que são necessárias para a compilação de módulos adicionais para o Apache.

O apxs2 permite a compilação e instalação de módulos do código-fonte (inclusive as mudanças necessárias nos arquivos de configuração), que cria objetos compartilhados dinâmicos (DSOs) que podem ser carregados no Apache durante a execução.

Os binários do apxs2 ficam localizados em /usr/sbin:

  • /usr/sbin/apxs2 — apropriado para a criação de um módulo de extensão que funciona com qualquer MPM. A instalação fica localizada em /usr/lib/apache2.

  • /usr/sbin/apxs2-prefork — apropriado para os módulos MPM pré-bifurcação. A instalação fica localizada em /usr/lib/apache2-prefork.

  • /usr/sbin/apxs2-worker — apropriado para os módulos MPM pré-bifurcação.

O apxs2 instala os módulos de modo que possam ser usados em todos os MPMs. Os outros dois programas instalam os módulos para que possam ser usados somente nos respectivos MPMs. O apxs2 instala os módulos em /usr/lib/apache2, enquanto que o apxs2-prefork e o apxs2-worker instalam os módulos em /usr/lib/apache2-prefork ou /usr/lib/apache2-worker.

Instale e ative um módulo a partir do código-fonte usando os comandos cd /path/to/module/source; apxs2 -cia mod_foo.c (-c compila, -i instala e -a ativa o módulo). Outras opções do apxs2 são descritas na página de manual apxs2(1).