Apache включить рабочий mpm

10

Я настроил FastCGI и PHP5-FPM для работы на Ubuntu, который работает нормально.

Но я установил модуль «apache2 worker mpm» и хотел настроить и заменить «prefork mpm», который используется по умолчанию в apache2.

Все , что я нашел , было в CentOS на /etc/sysconfig/httpdпросто положить HTTPD=/usr/sbin/httpd.workerсделает «рабочий MPM» включен.

  1. Как включить «рабочий mpm» в Ubuntu?

  2. Кроме того, когда я перечисляю скомпилированные модули apache, "/usr/sbin/apachectl -l"он не будет перечислять список, "prefork.c"который называется листингом, поскольку мы используем его по умолчанию. Но когда я делаю "/usr/sbin/apache2 -V | grep MPM"это показывает «Server MPM: prefork», может кто-нибудь объяснить это, пожалуйста?

$ / usr / sbin / apache2 -V | grep MPM

Server MPM:     prefork

phpinfo ();

Server API :    FPM/FastCGI
sravis
источник

Ответы:

29

После некоторого времени работы я сделал это сам. Вы можете найти шаги ниже.

Проверьте, какой Apache MPM работает в данный момент:

apachectl -V | grep -i mpm

Result:
Server MPM:     prefork

Список доступных модулей MPM (убедитесь, что mpm_worker указан в списке)

ls /etc/apache2/mods-available/mpm*

Result:
/etc/apache2/mods-available/mpm_event.conf  /etc/apache2/mods-available/mpm_prefork.conf  /etc/apache2/mods-available/mpm_worker.conf
/etc/apache2/mods-available/mpm_event.load  /etc/apache2/mods-available/mpm_prefork.load  /etc/apache2/mods-available/mpm_worker.load

Список включенных модулей MPM (если mpm_worker не включен, мы должны включить его и отключить модуль mpm_prefork)

ls -l /etc/apache2/mods-enabled/mpm*

Result:
/etc/apache2/mods-enabled/mpm_prefork.conf -> ../mods-available/mpm_prefork.conf
/etc/apache2/mods-enabled/mpm_prefork.load -> ../mods-available/mpm_prefork.load

Отключить модуль MPM_PREFORK

a2dismod mpm_prefork

Включить модуль MPM_WORKER

a2enmod mpm_worker

Чтобы проверить, работает ли Apache на MPM WORKER

apachectl -V | grep -i mpm

Result:
Server MPM:     worker

Если вы получили эту ошибку после выполнения этих команд:

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

Попробуйте удалить пакет libapache2:

apt-get remove libapache2-mod-php5
sravis
источник
2
Следовал инструкции, но получил следующее: * Перезапуск веб-сервера apache2 [сбой] * Сбой configache apache2. Вывод теста конфигурации был: AH00534: apache2: Ошибка конфигурации: загружено более одного MPM. Действие 'configtest' не выполнено. Журнал ошибок Apache может содержать больше информации.
neobie
идеально :) это работает для меня.
Чираг Джагани
Он выдает ошибку: «Apache запускает многопоточный MPM, но ваш модуль PHP не скомпилирован для работы с потоками. Вам необходимо перекомпилировать PHP», и удаление libapache2-mod-php5 также не помогает.
iCyborg
2

Apache работает с многопоточным MPM, но ваш модуль PHP не скомпилирован для обеспечения многопоточности. Вам нужно перекомпилировать PHP.

twixi
источник
0

Если вы получили эту ошибку после выполнения этих команд:

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

Попробуйте удалить пакет libapache2:

apt-get remove libapache2-mod-php7.0
Дэвид Ван Де Меер
источник