Comment activer l'événement MPM Apache 2.4 sur Ubuntu 14.04 avec PHP thread-safe?

25

J'ai mis à niveau vers Ubuntu Server 14.04 en m'attendant à ce que l'installation par défaut d'Apache utilise le nouvel événement MPM, mais à la place, je trouve l'ancienne préfork consommatrice de mémoire.

J'ai réussi à configurer l'événement MPM dans Arch Linux, mais je ne le fais pas sur Ubuntu. Je reçois toujours:

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

J'ai déjà installé php-fpmet configuré apache2 pour l'utiliser, mais comme les fichiers de configuration pour apache2 sont différents sur Ubuntu, je ne sais pas trop si je le fais au bon endroit.

Une idée sur la façon de sécuriser le fil PHP afin que je puisse utiliser apache2 event-mpm? (sans avoir à recompiler manuellement php, bien sûr)

Towerman
la source

Réponses:

39

Pour désactiver event MPM, vous pouvez le faire sudo a2dismod mpm_eventet après cela pour l'activer prefork, vous devriez le faire sudo a2enmod mpm_prefork.

Enfin, redémarrez apache:

sudo service apache2 restart
Mehraban
la source
3
Vous devez être là ... Pas ici ... là ... en haut de la liste des réponses.
Karma
2
Cela devrait être la réponse acceptée! N'oubliez pas de redémarrer apache après avoir fait cela:sudo service apache2 restart
Reeno
4
Comment cela répond-il à la question de savoir comment activer MPM, comme l'OP l'a demandé? Vous expliquez comment faire le contraire de ce que le PO a demandé.
Craig
2
@Mehraban, OP a demandé mot pour mot "Comment activer l'événement MPM?", Et votre réponse est "Désactivez simplement l'événement MPM". Comment est-ce une réponse acceptable?
Nicolas Bouliane
1
@Mehraban Mais ce n'est pas la question qui a été posée, donc tout le trafic provenant de Google est dit "la meilleure façon de faire X n'est pas de faire X". Si je demande comment faire des biscuits au chocolat, je m'attends à une recette de biscuits au chocolat.
Nicolas Bouliane
13

Cela a fonctionné pour moi.

Vérifiez d'abord si ce package est installé:

dpkg -l | grep libapache2-mod-php5

Si vous l'avez, retirez-le:

apt-get remove libapache2-mod-php5
Carlos Mafla
la source
Ceci est la bonne réponse!
DrSvanHay
6

Vous pouvez installer plusieurs façons pour Apache de communiquer avec PHP en parallèle. Peut-être que vous avez (toujours) l'ancien mod_php installé, en plus de fastcgi / php-fpm.

Vous pouvez voir avec quels modules votre Apache a été chargé lors de l'exécution avec

apache2ctl -M

Si nécessaire, utilisez sudopour obtenir les privilèges root. Si vous voyez php5_module (shared)parmi les modules que votre Apache utilise actuellement, l'ancien mod_php est toujours installé et vous empêche d'utiliser mpm_workerou mpm_event.

Henning Kockerbeck
la source
5
Impossible d'exécuter cela pour obtenir des mods si le serveur ne démarre pas, essayez sudo a2dismodensuite d'appuyer deux fois sur le caractère de tabulation pour voir une liste des mods qui peuvent être désactivés. Si vous voyez php5diable.
pferrel
2

Pour moi, suivre pleinement le travail sur Debian:

  1. Désactiver le préfork, activer l'événement: a2dismod mpm_prefork && a2enmod mpm_event
  2. supprimer mod-php5: aptitude remove libapache2-mod-php5
  3. Sachez que chaque php_option de votre VHost est encapsulée <IfModule mod_php5.c></IfModule>, sinon apache ne redémarrera pas
  4. faire service apache2 restart
suther
la source
1

Recherchez les éléments suivants dans les sections Charger les modules de votre fichier de configuration apache:

LoadModule mpm_event_module modules/mod_mpm_event.so

Et remplacez-le par le module suivant:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Ajsti.pl - Maciej Szewczyk
la source
NON, ne fais pas ça! Apache est une construction modulaire, vous n'avez donc pas besoin de changer les lignes LoadModule dans vos configurations. Faites seulement a2dismod mpm_prefork && a2enmod mpm_event. Redémarrez ensuite votre apache, et vous avez terminé.
2017
0

le module php5 a besoin de la préfork mpm, et pour désactiver la préfork, il faut désactiver php5.

sous debian, j'ai fait ce qui suit, en tant que root:

désactiver la préfork mpm

a2dismod mpm_prefork

activez l'événement mpm, ou tout autre mpm que vous préférez. note que j'ai trouvé que l'événement mpm n'était pas recommandé pour apache 2.2 ou version antérieure

a2enmod mpm_event

pour désactiver la charge du module php5, mais sans désinstallation.

a2dismod php5

pour tester l'exactitude globale de la configuration apache résultante. les erreurs devraient être corrigées selon la réponse de @sulther ci-dessus.

apache2ctl -t

redémarrer apache

systemctl restart apache2

si php est toujours nécessaire, une version threadsafe doit être installée. voir: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0

bonne chance

Alex Bodnaru
la source