Автоматический перезапуск Apache

Веб-разработчики прекрасно знают, что после внесения изменений в конфигурационный файл сервера Apache или после смены настроек PHP (если он установлен как модуль), необходимо перезапускать веб-сервер. То есть каждый раз, когда вы вносите изменения в файл httpd.conf или php.ini вам необходимо рестартовать Apache. Часто бывает так, что в разгар работы, просто забываешь это сделать и начинаешь искать ошибку не там. Следующий способ позволит навсегда избавится от этой проблемы.

Многие знают утилиту под названием Cron — она выполняет различные команды, когда приходит указанное время. Аналогичная ей утилита Incron выполняет различные действия, когда происходят какие-либо события в файловой системе. В данном случае мы будем перезапускать веб-сервер, если был изменён один какой-либо из конфигурационных файлов.

Но сперва нам необходимо установить утилиту. Пользователи дистрибутива Fedora могут сделать это командой yum install incron. После установки нам надо запустить сервис и сконфигурировать его так, чтобы он стартовал при запуске системы. В этом нам помогут команды service и chkconfig:

# service incrond start
Starting incrond: [ OK ]
# chkconfig incrond on

Далее, аналогично с использованием crontab, создаём задания для incron:

# incrontab -e

Мой список правил выглядит так (имя файла или директории за которой следим, событие, действие):

/etc/httpd/ IN_CLOSE_WRITE /sbin/service httpd restart
/etc/php.ini IN_MODIFY /sbin/service httpd restart

Полный список событий, котоорые отслеживает incron можно узнать командой incrontab -t

IN_ACCESS,IN_MODIFY,IN_ATTRIB,IN_CLOSE_WRITE,
IN_CLOSE_NOWRITE,IN_OPEN,IN_MOVED_FROM,
IN_MOVED_TO,IN_CREATE,IN_DELETE,IN_DELETE_SELF,
IN_CLOSE,IN_MOVE,IN_ONESHOT,IN_ALL_EVENTS,
IN_DONT_FOLLOW,IN_ONLYDIR,IN_MOVE_SELF

Большинство из названий этих событий понятно и так, дополнительные комментарии можно найти в файле /usr/include/linux/inotify.h (поставляется вместе с пакетом kernel-headers)