docker / httpd:配置错误:没有加载MPM

时间:2018-01-30 15:33:30

标签: apache docker

我有一个基于httpd官方图片的docker容器。 从不知道(在新构建之后),它开始失败并出现错误:

AH00534: httpd: Configuration error: No MPM loaded.

别无其他。

我正在使用官方的httpd图片(FROM httpd:2.4),到目前为止一切正常。
只有在使用docker system prune -af

修剪系统中的所有图像后才会出现错误

5 个答案:

答案 0 :(得分:59)

(编辑,谢谢delboy1978uk) 如果应用简单的最佳实践,则可以避免错误:将docker镜像固定到特定版本而不是latest

在挖掘官方httpd图像的提交后,我找到了解决方案。 (也许这个问题/答案可能对其他人有帮助)

  

对于那些在寻找解决方案时偶然发现此笔记的人,   只需添加LoadModule mpm_event_module modules/mod_mpm_event.so即可    httpd.conf高于其他LoadModule指令。

from the comments on the commit #17166574

因此,因为我在没有显式声明MPM模块的情况下覆盖了文件/usr/local/apache2/conf/httpd.conf,所以在提交之后,我的图像开始失败。
通过这个快速解决方案,现在一切都很好。

要进行完整更正,请将其添加到您的httpd.conf文件中(感谢svinther):

LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

或者,对于更具前瞻性的解决方案,您可以使用sed修改原始的http.conf文件。

答案 1 :(得分:8)

将我的配置与最新的httpd:2.4配置进行比较后,我发现这些新行需要合并到conf / httpd.conf

LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

自我注意:在构建衍生的httpd docker镜像时,用sed修改conf文件可能比在静态文件中只修改COPY更好

答案 2 :(得分:3)

尽管公认的解决方案有效,但它并不理想。出现此错误的真正原因很可能是Dockerfile以以下行开头的事实:

FROM httpd:latest

latest部分是您要求的Apache最新和最佳版本。

不要那样做。这是您的基础架构。将其锁定为版本号。

类似

FROM apache:2.4.0

这是真正的答案。否则,第三方软件供应商更新代码时,您自己的代码库可能会失败。

获取httpd.conf的最新版本,并记下版本号,然后对所做的更改进行调整,然后从您的Dockerfile中获取:latest的地狱。

答案 3 :(得分:3)

如果您将Docker用于Windows,则可能会遇到File conversion issue。确保检查您的httpd.conf的编码,它应该为Unix LF - UTF8

答案 4 :(得分:0)

我正在docker文件中使用它

FROM php:7.2-apache

我解决了将此行添加到/etc/docker/daemon.json

的问题
{
    "storage-driver": "devicemapper"
}
相关问题