繁体   English   中英

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

[英]Docker Centos 7 image running Apache2 “DocumentRoot … is not readable”

我有一个运行Centos 7映像的Docker容器。 它需要做的就是运行一个简单的Apache2服务器。 容器启动时,它会立即退出并显示:

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_x r_x root root
  • 尝试过的chown -R apache /var/www (切勿松开稻草!)
  • SELinux被禁用(...是吗?)

当我通过bash入口点进入容器时,然后可以使用/sbin/httpd -D FOREGROUND以root身份启动apache,一切都会按预期进行。

因此,我认为几乎可以肯定这是权限问题。 谷歌搜索发现许多页面出现我的错误,例如Apache重新启动导致DocumentRoot必须是目录,即使它是目录,并且似乎没有特权问题。该特定页面紧密描述了我得到的信息,并且几乎每个页面中的解决方案都是配置SELinux 。 但是SELinux被禁用。 即使在该链接中,OP也有评论

我的linux版本不是“安全增强型Linux”,因此无论如何我还是尝试过:没有效果。

但是他们接受了配置SELinux的解决方案。

我想我缺少了一些东西,几乎可以肯定与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将sestatus安装在/ usr / sbin中。 运行sestatus给
    • SELinux status: disabled
    • 有或没有/ etc / sysconfig / selinux

看起来SELinux确实被禁用,但错误看起来却很像已启用。

这种情况下的问题是由于容器的启动方式引起的。

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

我仍然不确定为什么这会导致apache无法以它的方式启动,但是更正路径可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM