Descobrir se um módulo do Apache pode ser desabilitado do uso do site

4

Eu posso ver a lista de módulos principais e outros carregados pelo apache usando o comando abaixo:

$ apache2ctl -t -D DUMP_MODULES
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 auth_basic_module (shared)
 auth_digest_module (shared)

Para otimizar o desempenho do servidor (essencialmente, economize memória em cada thread de Apache ), eu gostaria de desabilitar os módulos não utilizados. A documentação Apache fornece informações sobre esses módulos na página seguinte .

Na maioria das vezes, as informações fornecidas para cada módulo são suficientes para determinar se devo desativar um módulo ou não. Por exemplo, sei que não uso a autenticação LDAP para poder desativar com segurança authnz_ldap_module .

No entanto, para alguns módulos, é um pouco menos óbvio. Por exemplo, o módulo mime_magic é usado como uma "segunda linha de defesa" para casos que mod_mime não pode ser resolvido, o que não pode ser determinado teoricamente, pois depende do que os arquivos serão servidos pelo Apache.

P: Existe uma maneira de registrar em um arquivo a lista de módulos que Apache efetivamente usaram para processar uma solicitação?

Se eu pudesse registrar tal informação, eu deixaria o servidor funcionar por algum tempo, então pegue a lista de módulos que foram usados para processar todos os pedidos recebidos enquanto isso, e desabilite aqueles que não aparecem em essa lista.

    
por Max 27.03.2012 / 09:33

1 resposta

3

Eu não acredito que haja uma solução universal, mas ainda há algumas opções. Alguns módulos (por exemplo, mod_rewrite ) têm seus próprias instalações de registro, mas você teria que ler a documentação para cada módulo para descobrir. Todos os módulos listados como static são compilados e não pode ser desativado a menos que você recompile o Apache. Para o resto, você pode tentar três coisas: procurar prefixos de diretiva, habilitar depuração de log, ou seletivamente desabilitar módulo por módulo e reiniciando.

Na maioria dos módulos, as diretivas compartilham um prefixo comum. Para o HTTP módulos de autenticação, basic e digest , você pode dizer se está usando-os filtrando os arquivos de configuração com grep . E se você está fazendo hospedagem virtual, você provavelmente pode fazer o seguinte:

cd /etc/apache2/sites-enabled
grep Auth *

Se você vir algo como AuthType basic ou AuthType digest , então você precisa de um ou de ambos os módulos. Caso contrário, deve ser seguro para desativá-los. Da mesma forma para outros módulos: mime_magic é somente ativada se a diretiva MimeMagicFile for emitida em algum lugar.

Se há módulos sobre os quais você ainda não tem certeza depois disso, você pode tente ativar LogLevel debug e verificar os logs. Se você ver algum saída de um módulo, então você pode dizer que o módulo está em uso. Você pode até mesmo definir a depuração de LogLevel para módulos específicos . Isso é um pouco diferente do que você perguntou, já que se você não vê nenhuma saída, isso não significa necessariamente que um módulo é fora de uso. (Talvez isso simplesmente não produza saída de depuração).

Finalmente, em muitos casos, você pode tentar desabilitar um módulo e executar %código%. Se uma directiva não for reconhecida porque o módulo não está sendo carregado, isso resultará em erro.

    
por 27.03.2012 / 16:38