我升级到了 Ubuntu 服务器 14.04,希望默认的 Apache 安装能够使用新的事件 MPM,但是却发现旧的占用大量内存的 prefork。
我已经在 Arch Linux 中成功设置了事件 MPM,但在 Ubuntu 上却无法设置。我不断收到以下信息:
Apache 正在运行线程 MPM,但您的 PHP 模块未编译为线程安全的。您需要重新编译 PHP。
我已经安装php-fpm
并配置了 Apache2 来使用它,但由于 Apache2 的配置文件在 Ubuntu 上不同,所以我不太确定我是否在正确的地方执行此操作。
关于如何使 PHP 线程安全,以便我可以使用 Apache2“事件 MPM”,而不必手动重新编译 PHP,有什么想法吗?
答案1
这里涉及一点猜测,但我猜想由于您进行了升级,而不是进行全新安装,因此您的旧 Apache 配置(包括启用 mods 的配置)没有受到影响,这是很常见的情况。在全新安装的 14.04 LTS 中,事件 MPM 是标准的:
foo@CHANGEME-U14LTS:~$ ls /etc/apache2/mods-enabled/|grep mpm
mpm_event.conf
mpm_event.load
您的 PHP 问题可能源于类似的就地升级问题。请按照以下步骤操作这里在相同的全新安装上就足以在我的测试箱上启动并运行 PHP-FPM。
为消除显而易见的问题,您确实记得在 Apache 配置中禁用 mod_php... 对吗?Ubuntu 的 mod_php 不是线程安全的;如果您仍然有 mpm-prefork 加载,那么很有可能它仍然存在。无论如何,我强烈建议您将静态 Web 内容移至全新安装的 14.04,除非您想自行禁用所有旧功能并设置所有新的最佳实践。