Итак, я только недавно загрузил сервер Apache со всеми его файлами (httpd, apr, apr-util, pcre), следуя инструкциям, приведенным здесь: http://httpd.apache.org/docs/2.4/install.html
Однако после настройки, когда я попытался запустить свой сервер Apache, который находится в моем каталоге usr/local/bin/, мне было предложено следующее сообщение:
[allen@allen-lnx ~]$ /usr/local/bin/apachectl start
(13)Permission denied: AH00091: httpd: could not open error log file /usr/local/logs/error_log.
AH00015: Unable to open logs
После некоторых исследований я обнаружил, что мне нужно отредактировать файл httpd.conf, который я сделал ранее, чтобы разрешить правильные параметры ServerName и Listen. Однако я не уверен, как отредактировать мой файл conf, чтобы разрешить доступ к каталогу "журналы".
Примечательно, что команда будет запускаться, когда я использую команду "sudo", но я бы предпочел не использовать ее всегда, поскольку это похоже на обходной путь.
Любая помощь будет оценена. Спасибо!
Редактировать: я действительно заметил, что у меня может быть два файла httpd.conf, что доставляет некоторые неудобства. Другой находится в моем корневом каталоге /etc/ (etc/httpd/conf/httpd.conf). Я думаю, что мой модифицированный вопрос сейчас таков: какой из них я должен сохранить? Является ли версия /etc/ встроенной, как указано в комментарии faff ниже?
Текущее решение: я решил, что просто приму тот факт, что мне нужно использовать sudo при редактировании этого файла, так как мне нужно быть пользователем root. Возможно, я изменю его позже, чтобы всегда работать от имени пользователя root, но сейчас будет достаточно sudo.
Ответ 1 · рейтинг 5 · Esenti
Это похоже на проблему с правами доступа к файловой системе. Убедитесь, что каталог /usr/local/logs/ существует и доступен для записи пользователю, от имени которого вы запускаете Apache.
Если вы не хотите, чтобы ваш каталог logs был доступен для записи обычным пользователем, вы можете создать файл журнала:
sudo touch /usr/local/logs/error_log
А затем измените владельца файла на правильного пользователя:
sudo chown allen /usr/local/logs/error_log
Предположим, вы хотите запустить Apache от имени пользователя allen.
Если вы хотите изменить расположение файла журнала Apache, найдите директиву ErrorLog в файле httpd.conf (вам придется добавить ее, если ее там нет):
ErrorLog path/to/logfile
Ответ 2 · рейтинг 3 · Matthew Sprankle
Для всех, кто использует SELinux, если вы удалили папку или столкнулись с похожими проблемами, вам может потребоваться сделать несколько вещей.
Повторно свяжите папку с помощью ln -s /var/log/httpd /etc/httpd/logs. По умолчанию журналы хранятся в папке var, но ссылки на них находятся в папке /etc/httpd/logs.
Примените разрешения безопасности SELinux с помощью chcon system_u:object_r:httpd_config_t:s0 /etc/httpd/logs
И, конечно же, запускать все от имени администратора.
Ответ 3 · Lukasz Dynowski
Изменение политики безопасности SELinux на permissive устранило мою проблему.
До исправления мой SELinux работал в принудительном режиме:
$ sestatus -v
sestatus -v
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 30
Я изменил политику безопасности в конфигурационном файле SELinux и в системе.
#/etc/selinux/config
SELINUX=permissive
# In terminal set SELinux to run in permissive mode.
$ setenforce 0
После исправления мой SELinux работал в принудительном режиме:
$ sestatus -v
SELinux status: enabled
Current mode: permissive
Mode from config file: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 30