Apache 禁用mpm_prefork错误:以下模块取决于mpm_prefork,需要先禁用:php7.3



我在数字海洋上有一个8GB的液滴。我们今天推出了我们的网站,我们获得了大量的流量,我们有大约 3000 个并发用户。

我试图提高并发连接的数量(在apache2buddy的建议下(,但建议MaxRequestWorkers为482。这是文件:

<IfModule mpm_prefork_module>
ServerLimit             482
StartServers              5
MinSpareServers           5
MaxSpareServers          10
MaxRequestWorkers         482
MaxConnectionsPerChild   0
</IfModule>

Apache2 使用mdm_prefork,我们已经读到如果我们使用mdm_worker会更好。

所以我尝试禁用mdm_prefork,以便我可以启用mdm_worker:

a2dismod mpm_prefork

我收到以下错误:

ERROR: The following modules depend on mpm_prefork and need to be disabled first: php7.3

我必须做什么才能启用mpm_worker?

我找到了在我的 ubuntu 服务器上解决此问题的可能解决方案,不知道您是否也在运行 ubuntu,但我觉得我采取的步骤对于几乎所有发行版都是相同的,只需一步进行更改,您需要安装一个新软件包,并且该命令可能会根据您使用的发行版而更改。

所以第一步是

$ sudo a2dismod php7.3 mpm_prefork

这将禁用预分叉模块,但在此之前它将禁用 php7.3 模块以阻止依赖项错误的发生。

接下来,我们启用工作线程模块

$ sudo a2enmod mpm_worker

现在,输出将建议您重新启动 apache Web 服务器。所以,我们做同样的事情

$ sudo systemctl restart apache2

现在,如果您去检查您的网站主页,它可能会抛出错误或加载空白页面。

那么,我们如何解决这个问题;我搜索了多个社区论坛,并找到了与之相关的解决方案,但它适用于 freebsd 平台,因此在 ubuntu 上尝试了相同的方法,需要在 ubuntu 端进行一些调整才能使步骤正常工作。

基于 ubuntu 操作系统的解决方案:

首先,我们启用代理,proxy_fcgi和setenvif模块,然后安装与您的php版本相对应的php-fpm软件包

$ sudo a2enmod proxy
$ sudo a2enmod proxy_fcgi
$ sudo a2enmod setenvif
$ sudo apt-get install php7.3-fpm -y

php7.3-FPM 安装命令是您可能需要根据您使用的发行版检查安装步骤的命令。

一旦安装了php-fpm服务,您需要确保它被启用,然后启动它,所以为此

$ sudo a2enconf php7.3-fpm
$ sudo systemctl enable php7.3-fpm.service
$ sudo systemctl start php7.3-fpm.service

一旦 php-fpm 服务成功启动,只需重新启动 apache 服务即可确保所有所做的更改正确生效

$ sudo systemctl restart apache2

执行这些步骤后,请检查/刷新您的网站主页,错误页面或空白页面将更改为正确的网站页面。

最终结果;您的网站已经从使用prefork模块转变为worker模块来处理请求。

另外,如果你想切换到事件模块而不是工作模块;只需在第二步中启用事件模块代替工作模块;禁用php7.3和prefork模块后将采用

的那个取代

$ sudo a2enmod mpm_worker

$ sudo a2enmod mpm_event

其余所有步骤保持不变,无论启用工作线程还是事件模块。

这些步骤帮助我在服务器上从预分叉模块切换到工作模块,所以希望它可以帮助您并帮助其他在这个问题上偶然发现的人。

最新更新