Як увімкнути подію MPM Apache 2.4 на Ubuntu 14.04 за допомогою безпечного потоку PHP?


25

Я перейшов на Ubuntu Server 14.04, очікуючи, що встановлення apache за замовчуванням використовуватиме новий MPM події, але натомість я знаходжу старий префорк, що споживає пам'ять.

Я успішно налаштував MPM подій в Arch Linux, але мені не вдалося це зробити на Ubuntu. Я продовжую отримувати:

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

Я вже встановив php-fpmі налаштував apache2 для його використання, але оскільки файли налаштувань для apache2 відрізняються в Ubuntu, я не зовсім впевнений, чи роблю це в потрібному місці.

Будь-яка ідея про те, як зробити PHP-потік безпечним, щоб я міг використовувати apache2 event-mpm? (звичайно, без необхідності перекомпілювати php вручну)

Відповіді:


39

Щоб вимкнути event MPM, ви можете зробити, sudo a2dismod mpm_eventа після цього ввімкнути prefork, ви повинні зробити sudo a2enmod mpm_prefork.

Нарешті перезапустіть апаш:

sudo service apache2 restart

3
Вам потрібно бути там ... Не тут .. там ... у верхній частині списку відповідей.
Карма

2
Це має бути прийнята відповідь! Не забудьте перезапустити apache після цього:sudo service apache2 restart
Reeno

4
Як це відповідає на питання про те, як увімкнути MPM, як задається ОП? Ви пояснюєте, як зробити протилежне тому, що вимагала ОП.
Крейг

2
@Mehraban, OP запитував слово за словом "Як увімкнути MPM події?", А ваша відповідь - "Просто відключити MPM події". Як це прийнятна відповідь?
Nicolas Bouliane

1
@Mehraban Це не питання, яке йому задавали, тому весь трафік, що надходить сюди від Google, отримує відповідь "найкращий спосіб зробити X - це не робити X". Якщо я запитаю, як зробити шоколадне печиво, я очікую рецепт шоколадного печива.
Nicolas Bouliane

13

Це працювало для мене.

Спочатку перевірте, чи встановлений цей пакет:

dpkg -l | grep libapache2-mod-php5

Якщо у вас є, просто видаліть його:

apt-get remove libapache2-mod-php5

Це правильна відповідь!
DrSvanHay

6

Ви можете встановити кілька способів паралельного спілкування Apache з PHP. Можливо, у вас (ще) встановлений старий mod_php, додатково до fastcgi / php-fpm.

Ви можете бачити, з якими модулями завантажувався Apache під час виконання

apache2ctl -M

Якщо потрібно, використовуйте sudoдля отримання привілеїв root. Якщо ви бачите php5_module (shared)серед модулів, якими зараз користується Apache, старий mod_php все ще встановлений і блокує вас від використання mpm_workerабо mpm_event.


5
Не вдається запустити це, щоб отримати моди, якщо сервер не запускається, спробуйте sudo a2dismodдвічі натиснути символ вкладки, щоб побачити список, якщо моди, які можна відключити. Якщо ви бачите, що php5це відключити.
пферрель

2

Для мене наступна робота над debian:

  1. Вимкнути префорк, увімкнути подію: a2dismod mpm_prefork && a2enmod mpm_event
  2. видалити mod-php5: aptitude remove libapache2-mod-php5
  3. Будьте в курсі, що php_у вашому інкапсуляті VHost є кожен варіант <IfModule mod_php5.c></IfModule>, інакше апарат не перезапуститься
  4. робити service apache2 restart

1

Шукайте наступне у розділах Завантаження модулів вашого файлу конфігурації apache:

LoadModule mpm_event_module modules/mod_mpm_event.so

І замініть його наступним модулем:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

НІ, не робіть цього! Apache будується модульно, тому вам не потрібно змінювати будь-які LoadModule-Lines у своїх конфігураціях. Тільки робити a2dismod mpm_prefork && a2enmod mpm_event. Потім перезапустіть apache, і ви закінчите.
суть

0

Модуль php5 потребує префорка mpm, а щоб відключити prefork, потрібно відключити php5.

під debian я зробив наступне, як root:

вимкніть попередній формат mpm

a2dismod mpm_prefork

увімкніть подію mpm або будь-який mpm, який ви бажаєте. зауважте, що я знайшов mpm події, не рекомендується для apache 2.2 або раніше

a2enmod mpm_event

щоб відключити завантаження модуля php5, але без видалення.

a2dismod php5

перевірити загальну правильність отриманого конфігурації apache. Помилки повинні бути впоралися з відповідно до відповіддю на @sulther вище.

apache2ctl -t

перезапустити апаш

systemctl restart apache2

у випадку, якщо php все ще потрібен, слід встановити безпечну версію. дивіться: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0

Щасти

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.