LINUX.ORG.RU
решено ФорумAdmin

Systemd и httpd

 , , , ,


1

2

CentOS 7, httpd

При попытке перезапуска httpd:

# systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Sat 2015-07-18 10:52:35 MSK; 2min 16s ago
  Process: 13608 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 13605 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 13605 (code=exited, status=1/FAILURE)

Jul 18 10:52:35 site.ru httpd[13605]: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:363
Jul 18 10:52:35 site.ru systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jul 18 10:52:35 binghost-s1.ru kill[13608]: kill: cannot find process ""
Jul 18 10:52:35 site.ru systemd[1]: httpd.service: control process exited, code=exited status=1
Jul 18 10:52:35 site.ru systemd[1]: Failed to start The Apache HTTP Server.
Jul 18 10:52:35 site.ru systemd[1]: Unit httpd.service entered failed state.

В error_log:

AH00015: Unable to open logs
AH00015: Unable to open logs
...

При этом если запускать апач через:

httpd -k start
все работает.

Соответственно проблема с systemd. Как решать?

★★★★★

Ну ты наверное этот httpd -k start от рута пускаешь, а в юните какой-нибудь apache в качестве пользователя нарисован. Посмотри юнит, посмотри овнеров, права доступа.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Самый обычный юнит вроде:

# cat /usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}

KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от vasily_pupkin

Смотрел:

# cat /etc/sysconfig/httpd | grep -v '#'
LANG=C

Права/овнеров проверять на юнит?

# stat /usr/lib/systemd/system/httpd.service | grep Access | head -1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Для юнита nginx аналогично, к примеру, тоже root:root, но там юнит отрабатывает.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от vasily_pupkin

На основные логи апача acess_log и error_log изначально был root:root, смена на apache:apache ничего не дала. Остальные же логи (используется панель ISPmanager Business 5) имеют овнеров примерно apache:username1, apache:username2 и т.д.

Причем случилось это все абсолютно внезапно и непонятно почему.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

внезапно и непонятно почему

Проверь на всякий случай SELinux (/var/log/audit/audit.log).

Pythagoras ★★
()
Последнее исправление: Pythagoras (всего исправлений: 1)
Ответ на: комментарий от vasily_pupkin

Ошибка я так понял появилась при миграции юзеров панели с Debian 7 на CentOS 7. Некоторые логи прилетели с правами

-rw-r----- 1 root   user1              311 Jul 17 12:31 /var/www/user1/data/logs/site.ru.access.log

Все что нашел я поисправлял, назначил владельца apache. Но все еще ошибка с логами.

Каким образом можно еще вычислить, на какой лог конкретно ругается апач?

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

Можно попробовать с strace запустить. Есть еще шанс что что-нибудь окажется в логах аудита, но это маловероятно.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Должен пускаться от рута, а сам апач перейти в пользователя

mystery ★★
()
Ответ на: комментарий от Deleted

Исправлял, толку нет.

Что это за systemd такой, каким он образом вообще чекает корректные права к логам или нет, если ручной запуск httpd не ругается.

Amet13 ★★★★★
() автор топика
Ответ на: комментарий от Amet13

Что это за systemd такой, каким он образом вообще чекает корректные права к логам или нет, если ручной запуск httpd не ругается.

А при чём тут systemd то? Тебе же httpd ошибки выдаёт.

Deleted
()
Ответ на: комментарий от Deleted

Ну как тут точно выразиться?

# httpd -t
Syntax OK
# httpd -k restart
//ок перезапускает все
systemctl restart httpd
//пишет ошибки с самого первого поста
Amet13 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.