Como habilitar o evento MPM Apache 2.4 no Ubuntu 14.04 com PHP seguro de thread?

25

Atualizei para o Ubuntu Server 14.04, esperando que a instalação padrão do apache usasse o novo evento MPM, mas, em vez disso, encontro o antigo prefork que consome memória.

Configurei com sucesso o evento MPM no Arch Linux, mas não o faço no Ubuntu. Eu continuo recebendo:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP

Eu já instalei php-fpme configurei o apache2 para usá-lo, mas como os arquivos de configuração do apache2 são diferentes no Ubuntu, não tenho certeza se estou fazendo isso no lugar certo.

Alguma idéia de como tornar o thread PHP seguro para que eu possa usar o apache2 event-mpm? (sem ter que recompilar manualmente o php, é claro)

Towerman
fonte

Respostas:

39

Para desativar event MPM, você pode fazer sudo a2dismod mpm_evente, depois disso, para ativar prefork, você deve fazer sudo a2enmod mpm_prefork.

Por fim, reinicie o apache:

sudo service apache2 restart
Mehraban
fonte
3
Você precisa estar lá ... Não aqui .. lá ... no topo da lista Respostas.
Karma
2
Esta deve ser a resposta aceita! Não se esqueça de reiniciar o apache depois de fazer isso:sudo service apache2 restart
Reeno
4
Como isso responde à questão de como habilitar o MPM, como o OP perguntou? Você está explicando como fazer o oposto do que o OP pediu.
Craig
2
@Mehraban, OP pediu palavra por palavra "Como habilitar o evento MPM?", E sua resposta é "Apenas desabilite o evento MPM". Como isso é uma resposta aceitável?
Nicolas Bouliane
1
@ Mehraban Essa não é a pergunta que foi feita, portanto todo o tráfego vindo do Google está sendo informado "a melhor maneira de fazer X não é fazer X". Se eu perguntar como fazer biscoitos de chocolate, espero uma receita de biscoitos de chocolate.
Nicolas Bouliane 02/10
13

Isso funcionou para mim.

Primeiro verifique se você tem este pacote instalado:

dpkg -l | grep libapache2-mod-php5

Se você tiver, basta removê-lo:

apt-get remove libapache2-mod-php5
Carlos Mafla
fonte
Essa é a resposta correta!
precisa saber é o seguinte
6

Você pode instalar várias maneiras para o Apache se comunicar com o PHP em paralelo. Talvez você tenha (ainda) o mod_php antigo instalado, além do fastcgi / php-fpm.

Você pode ver quais módulos seu Apache carregou no tempo de execução com

apache2ctl -M

Se necessário, use sudopara obter privilégios de root. Se você php5_module (shared)vir um dos módulos que o Apache está usando no momento, o mod_php antigo ainda está instalado e o impede de usar mpm_workeror mpm_event.

Henning Kockerbeck
fonte
5
Não é possível executar isso para obter mods se o servidor não estiver iniciando. Tente sudo a2dismodpressionar o caractere de tabulação duas vezes para ver uma lista dos mods que podem ser desativados. Se você php5vir o diable.
Pferrel
2

Para mim, após o trabalho completo no debian:

  1. Desativar prefork, ativar evento: a2dismod mpm_prefork && a2enmod mpm_event
  2. remover mod-php5: aptitude remove libapache2-mod-php5
  3. Esteja ciente de que você tem cada php_opção no seu VHost encapsulada por <IfModule mod_php5.c></IfModule>, caso contrário, o apache não será reiniciado
  4. Faz service apache2 restart
suther
fonte
1

Procure o seguinte nas seções Load Modules do seu arquivo de configuração apache:

LoadModule mpm_event_module modules/mod_mpm_event.so

E substitua-o pelo seguinte módulo:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Ajsti.pl - Maciej Szewczyk
fonte
NÃO, não faça isso! O Apache é modular, então você não precisa alterar nenhuma LoadModule-Lines em suas configurações. Apenas faça a2dismod mpm_prefork && a2enmod mpm_event. Em seguida, reinicie o seu apache e pronto.
Suther
0

o módulo php5 precisa do prefork mpm e, para desativar o prefork, é necessário desativar o php5.

no debian, fiz o seguinte, como root:

desative o mpm do prefork

a2dismod mpm_prefork

ative o evento mpm ou o que você preferir. note que achei o evento mpm não recomendado para o apache 2.2 ou anterior

a2enmod mpm_event

desativar a carga do módulo php5, mas sem desinstalação.

a2dismod php5

para testar a correção geral da configuração apache resultante. os erros precisariam ser resolvidos de acordo com a resposta do @sulther acima.

apache2ctl -t

reinicie o apache

systemctl restart apache2

caso o php ainda seja necessário, uma versão threadsafe deve ser instalada. consulte: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0

boa sorte

Alex Bodnaru
fonte