在 Vagrant 中在 Ubuntu Precise64 上运行 Apache2。当我尝试启动它时,它显示:
vagrant@precise64:/etc/apache2$ /etc/init.d/apache2 start
* Starting web server apache2
*
* The apache2 configtest failed.
Output of config test was:
AH00534: apache2: Configuration error: No MPM loaded.
Action 'configtest' failed.
The Apache error log may have more information.
但问题是,我的/etc/apache2/apache2.conf
文件根本没有在任何地方调用 MPM!我本想将其粘贴到这里,但这会占用很大的篇幅……
我尝试查找错误日志,但也没找到。帮忙吗?
编辑: apache2 -l
给出这个:
vagrant@precise64:/$ apache2 -l
Compiled in modules:
core.c
mod_so.c
mod_watchdog.c
http_core.c
mod_log_config.c
mod_logio.c
mod_version.c
mod_unixd.c
mod_unixd.c
所以看起来好像没有安装 mpm,对吗?如果没有安装 MPM,并且我的配置文件中没有提到 MPM,为什么我仍然看到此错误?
答案1
apache2 -t -D DUMP_MODULES(或 -M)应该会为您提供模块列表。您应该会看到 worker.c 或 prefork.c 或 event.c。使用它来确定您正在使用哪个 MPM。
查看你的配置文件是否有类似的内容(如果你使用 prefork MPM)。
以下是一个例子:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
将类似这样的块添加到您的配置文件中,它应该可以工作。验证 apache2-mpm-prefork(或 worker,或 event)是否已正确安装。
阅读此文档可以帮助您选择(强制性的)适合您用途的 MPM:http://httpd.apache.org/docs/2.2/mpm.html
答案2
我遇到了同样的问题。我不小心覆盖了/etc/apache2/apache2.conf
。为了纠正这个问题,我必须运行sudo apt-get purge apache2
以完全删除 apache,然后运行sudo apt-get install apache2
以恢复原始apache2.conf
文件。
笔记:清除之前备份所有自定义文件/etc/apache2/sites-available
。