“未加载 MPM”,但我什至没有使用 mpm

ezu*_*zuk 14 ubuntu apache-2.2

在 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.
Run Code Online (Sandbox Code Playgroud)

但问题是,我的/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                    
Run Code Online (Sandbox Code Playgroud)

所以看起来没有安装mpm,对吧?如果没有安装 MPM 并且我的配置文件中没有提到 MPM,为什么我仍然看到这个错误?

小智 12

我遇到过同样的问题。我不小心覆盖了/etc/apache2/apache2.conf。为了纠正,我必须运行sudo apt-get purge apache2以完全删除apache,然后运行sudo apt-get install apache2以取回原始apache2.conf文件。

注意/etc/apache2/sites-available在清除之前备份任何自定义文件。


Vin*_*inz 11

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>
Run Code Online (Sandbox Code Playgroud)

将这样的块添加到您的配置文件中,它应该可以工作。验证是否正确安装了 apache2-mpm-prefork(或工作线程或事件)。

阅读此文档以帮助您选择(这是强制性的)适合您使用的 MPM:http : //httpd.apache.org/docs/2.2/mpm.html