Як увімкнути подію 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.