代码之家  ›  专栏  ›  技术社区  ›  Martin

Docker Centos 7运行Apache2的图像“DocumentRoot…不可读”

  •  0
  • Martin  · 技术社区  · 6 年前

    AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
    DocumentRoot '/var/www/html' is not a directory, or is not readable
    

    我做了一些基本检查:

    • 文件夹存在
    • 每个文件夹/var/www/html的权限是``rwx r\u x r\u x root```
    • 尝试 chown -R apache /var/www (任何稻草都不得未割开!)

    当我使用bash入口点进入容器时,我就可以使用 /sbin/httpd -D FOREGROUND

    Apache restart causes DocumentRoot must be a directory, even though it is a directory and there seem to be no privilege issues 这个特殊的页面非常详细地描述了我得到的内容,几乎每个页面中的解决方案都是configure SELinux。但是SELinux被禁用。即使在这个链接中也有评论

    我的linux版本不是安全增强的linux,所以在没有理解的情况下我尝试了它:没有效果。

    我想我遗漏了一些东西,几乎可以肯定是和SELinux有关,但我想不出来。docker映像具有以下(明显缺少)SELinux设置:

    • /etc/selinux仅包含semanage.conf文件和tmp/(空)
    • /usr/sbin不包含se*可执行文件
    • rpm -qa | grep selinux
      • libselinux-2.5-12.el7.x86_64
    • /etc/sysconfig/selinux不存在
      • 所以在Dockerfile我试过 RUN echo "SELINUX=disabled" > /etc/sysconfig/selinux
    • yum install -y policycoreutils 在/usr/sbin中安装sestatus。运行sestatus
      • SELinux status: disabled
      • 带或不带/etc/sysconfig/selinux

    看起来SELinux真的被禁用了,但是这个错误看起来很像它被启用了。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Martin    6 年前

    我使用docker compose启动这个特定容器,但是卷映射的路径不正确。

    我仍然不知道为什么这会导致apache无法以这种方式启动,但是纠正路径解决了这个问题。