Apache 启用 worker mpm

Apache 启用 worker mpm

我已经配置了 FastCGI 和 PHP5-FPM 在 ubuntu 上运行,运行良好。

但是我安装了“apache2 工作者 mpm”模块,并希望配置和替换“预分叉 mpm”这是 apache2 中的默认设置。

我发现在 CentOS 中/etc/sysconfig/httpd只需输入HTTPD=/usr/sbin/httpd.worker即可“工人 mpm”已启用。

  1. 我们如何在 Ubuntu 中启用“worker mpm”?

  2. 此外,当我列出已编译的 apache 模块时,"/usr/sbin/apachectl -l"它不会列出"prefork.c"据说要列出的内容,因为我们默认使用它。但当我"/usr/sbin/apache2 -V | grep MPM"这样做时,它会显示“服务器 MPM:prefork”有人可以解释一下吗?

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

Server MPM:     prefork

phpinfo();

Server API :    FPM/FastCGI

答案1

经过一段时间的努力,我自己完成了。您可以在下面找到步骤。

检查当前正在运行哪个 MPM apache:

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

答案2

Apache 正在运行线程 MPM,但您的 PHP 模块未编译为线程安全的。您需要重新编译 PHP。

答案3

如果执行这些命令后出现此错误:

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

相关内容