Назад | Перейти на главную страницу

запустить apache, даже если он «не может открывать журналы»

Можно ли сделать apache независимым от существования журнала?

Если есть файл журнала, который невозможно открыть, apache завершает работу после перезапуска или даже перезагрузки. Довольно неприятное поведение, потому что нужно быть очень осторожным при манипулировании vhosts на рабочем сервере. Должно ли быть так? Интересно то, что если есть просто синтаксическая ошибка в перезагрузке vhost, apache не закрывает его.

Пример:

$ sudo /etc/init.d/httpd reload

Из логов:

[Thu Jan 10 19:25:02 2013] [notice] SIGHUP received.  Attempting to restart
(2)No such file or directory: httpd: could not open error log file /var/www/patron/logs/error_log.
Unable to open logs

И apache больше не запускается :(.

Вы здесь не на то дерево лаете. Вы проинструктировали apache вести журналы, он не может этого сделать, поэтому он вылетает, как и должно.

Настоящая проблема здесь - отсутствие контроля / тестирования. Прежде чем касаться ваших производственных конфигураций, протестируйте эти изменения в промежуточной среде. Это позволит выявить этот тип проблемы в дополнение к множеству других.

Если вам абсолютно необходимо изменить свои конфигурации непосредственно на рабочем сервере, убедитесь, что вы выполнили тест конфигурации перед перезагрузкой конфигурации. Использование apachectl configtest и apachectl graceful устранит большинство (но не все) аварий такого типа.