У меня есть док-контейнер с изображением Centos 7. Все, что нужно сделать, это запустить простой сервер 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
Я сделал несколько базовых проверок:
- Папка существует
- Разрешения: `` `rwx r_x r_x root root```` для каждой папки / var / www / html
- Попробовал
chown -R apache /var/www
(солома не должна оставаться без сцепления!)
- SELinux отключен (... или это?)
Когда я вхожу в контейнер с точкой входа в bash, я могу запустить apache от имени root с помощью /sbin/httpd -D FOREGROUND
, и все работает как положено.
Так что я думаю, что это почти наверняка вещь разрешений. Google нашел много страниц с моей ошибкой, например,
Перезапуск Apache приводит к тому, что DocumentRoot должен быть каталогом, даже если он является каталогом и проблемы с привилегиями отсутствуют
Эта конкретная страница подробно описывает, что я получаю, и решением почти на каждой странице является настройка SELinux. Однако SELinux отключен. Даже в этой ссылке есть комментарий от ОП
Моя версия linux не является Security Enhanced Linux, поэтому без понимания я все равно попробовал: без эффекта.
И все же они приняли решение, которое было сконфигурировано SELinux.
Я думаю, что что-то упустил, почти наверняка, связанный с SELinux, но я не могу понять это. Образ докера имеет следующие (явно отсутствующие) настройки 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. Бегущий сестатус дает
SELinux status: disabled
- С / без / etc / sysconfig / selinux
Похоже, что SELinux отключен, но ошибка выглядит так, как будто она включена.