我已经配置了 FastCGI 和 PHP5-FPM 在 ubuntu 上运行,运行良好。
但是我安装了“apache2 工作者 mpm”模块,并希望配置和替换“预分叉 mpm”这是 apache2 中的默认设置。
我发现在 CentOS 中/etc/sysconfig/httpd
只需输入HTTPD=/usr/sbin/httpd.worker
即可“工人 mpm”已启用。
我们如何在 Ubuntu 中启用“worker mpm”?
此外,当我列出已编译的 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