Come abilitare l'evento MPM Apache 2.4 su Ubuntu 14.04 con thread sicuro PHP?


25

Ho eseguito l'aggiornamento a Ubuntu Server 14.04 aspettandomi che l'installazione di apache predefinita usasse il nuovo evento MPM, ma invece trovo il vecchio prefork che consuma memoria.

Ho installato con successo MPM evento in Arch Linux, ma non riesco a farlo su Ubuntu. Continuo a ricevere:

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

Ho già installato php-fpme configurato apache2 per usarlo, ma poiché i file di configurazione per apache2 sono diversi su Ubuntu, non sono sicuro che lo stia facendo nel posto giusto.

Qualche idea su come rendere sicuro il thread PHP in modo da poter usare apache2 event-mpm? (senza dover ricompilare manualmente php, ovviamente)

Risposte:


39

Per disabilitare event MPM, puoi farlo sudo a2dismod mpm_evente dopo quello per abilitare prefork, dovresti farlo sudo a2enmod mpm_prefork.

Infine riavvia apache:

sudo service apache2 restart

3
Devi essere lì ... Non qui .. lì ... in cima all'elenco Risposte.
Karma,

2
Questa dovrebbe essere la risposta accettata! Non dimenticare di riavviare apache dopo aver fatto questo:sudo service apache2 restart
Reeno

4
In che modo questo risponde alla domanda su come abilitare MPM, come l'OP ha chiesto? Stai spiegando come fare il contrario di ciò che l'OP ha richiesto.
Craig

2
@Mehraban, OP ha chiesto parola per parola "Come abilitare l'evento MPM?" E la tua risposta è "Disabilita l'evento MPM". In che modo questa è una risposta accettabile?
Nicolas Bouliane,

1
@Mehraban Non è questa la domanda che è stata posta, quindi tutto il traffico proveniente da Google viene detto "il modo migliore per fare X non è fare a X". Se chiedo come preparare i biscotti al cioccolato, mi aspetto una ricetta per i biscotti al cioccolato.
Nicolas Bouliane,

13

Questo ha funzionato per me.

Prima controlla se hai questo pacchetto installato:

dpkg -l | grep libapache2-mod-php5

Se ce l'hai basta rimuoverlo:

apt-get remove libapache2-mod-php5

Questa è la risposta corretta!
DrSvanHay,

6

Puoi installare più modi in cui Apache può comunicare con PHP in parallelo. Forse hai (ancora) installato il vecchio mod_php, oltre a fastcgi / php-fpm.

Puoi vedere con quali moduli il tuo Apache è stato caricato in fase di esecuzione

apache2ctl -M

Se necessario, utilizzare sudoper ottenere i privilegi di root. Se vedi php5_module (shared)tra i moduli che Apache sta attualmente utilizzando, il vecchio mod_php è ancora installato e ti impedisce di usare mpm_workero mpm_event.


5
Non puoi eseguirlo per ottenere le mod se il server non si avvia, prova sudo a2dismodquindi a premere due volte il carattere della scheda per vedere un elenco se le mod che possono essere disabilitate. Se lo vedi, php5fallo.
pferrel

2

Per quanto mi riguarda, seguo il lavoro completo su Debian:

  1. Disabilita prefork, abilita evento: a2dismod mpm_prefork && a2enmod mpm_event
  2. rimuovere mod-php5: aptitude remove libapache2-mod-php5
  3. Tieni presente che ogni php_opzione nel tuo VHost è incapsulata da <IfModule mod_php5.c></IfModule>, altrimenti Apache non si riavvierà
  4. fare service apache2 restart

1

Cerca quanto segue nelle sezioni Load Modules del tuo file di configurazione di apache:

LoadModule mpm_event_module modules/mod_mpm_event.so

E sostituiscilo con il seguente modulo:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

NO, non farlo! Apache è modulare, quindi non è necessario modificare le LoadModule-Lines nelle configurazioni. Solo a2dismod mpm_prefork && a2enmod mpm_event. Quindi riavvia Apache e il gioco è fatto.
Suther,

0

il modulo php5 richiede prefork mpm e per disabilitare prefork bisogna disabilitare php5.

sotto debian, ho fatto il seguente, come root:

disabilita prefork mpm

a2dismod mpm_prefork

abilita l'evento mpm o qualunque mpm tu preferisca. nota che ho trovato l'evento mpm non era raccomandato per Apache 2.2 o precedenti

a2enmod mpm_event

per disabilitare il caricamento del modulo php5, ma senza disinstallazione.

a2dismod php5

per verificare la correttezza complessiva della configurazione di apache risultante. gli errori dovrebbero essere affrontati secondo la risposta di @sulther sopra.

apache2ctl -t

riavvia apache

systemctl restart apache2

nel caso in cui php sia ancora necessario, dovrebbe essere installata una versione thread-safe. vedi: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0

in bocca al lupo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.