Модифицированное для хостинга программное обеспечение

Пакет hosting-mod_fcgid

Это модифицированная версия пакета mod_fcgid-2.3.9 с исправленной проблемой «плавного» (graceful) перезапуска Apache.

На серверах c mod_fcgid, где часто вызывается команда sudo apachectl graceful, может возникать большое количество обработчиков Apache в состоянии G, т.е. «плавной» перезагрузки.

Удаляются такие запросы только перезапуском Apache командой: sudo systemctl restart httpd.

В данной версии модуля эта проблема исправлена, но время перезапуска Apache начинает зависеть от параметров: FcgidIdleScanInterval, FcgidErrorScanInterval и FcgidBusyScanInterval.

Выбирается минимальное значение от данных трех параметров, т.е. при перезапуске Apache время перезапуска будет более min(FcgidIdleScanInterval, FcgidErrorScanInterval, FcgidBusyScanInterval).

Данный модуль устанавливается совместно с модулем mod_fcgid (требует наличие mod_fcgid).

Для отключения стандартного mod_fcgid выполните следующие действия.

  1. В файле: /etc/httpd/conf.modules.d/10-fcgid.conf закомментируйте строку LoadModule fcgid_module modules/mod_fcgid.so. Закомментированная строка должна выглядеть следующим образом (с символом #):

    #LoadModule fcgid_module modules/mod_fcgid.so
    
  2. Раскомментируйте строку #LoadModule fcgid_module modules/hosting-mod_fcgid.so в файле /etc/httpd/conf.modules.d/10-hosting-fcgid.conf. Раскомментированная строка должна выглядеть следующим образом (без символа #):

    LoadModule fcgid_module modules/hosting-mod_fcgid.so
    
  3. Перезапустите Apache следующей командой:

    $ sudo systemctl restart httpd
    

Модифицированный программный комплекс «веб-сервер Apache»

Веб-сервер Apache модифицирован таким образом, чтобы предотвратить слишком частые «плавные» (graceful) перезапуски веб-сервера. В Apache добавлен функционал «отложенный graceful-рестарт веб-сервера apache». Утилита /usr/sbin/apachectl и юнит-файл сервиса httpd модифицированы таким образом, что если опция «отложенный рестарт» включена, то «плавный» перезапуск Apache выполняется не при каждом запросе, а только один раз согласно планировщику задач cron. Задача на перезапуск в cron выполняется один раз в 10 минут, при этом все запросы на перезапуск, которые поступили за эти 10 минут, объединяются в один. Если опция «отложенный рестарт» выключена, то используется стандартное поведение, когда веб-сервер Apache перезапускается без задержки на каждый запуск команд systemctl reload httpd или apachectl graceful.

Для включения опции «отложенный рестарт» выполните следующую команду:

$ sudo touch /etc/httpd/enable.reload.by.cronjob

Для отключения опции «отложенный рестарт» выполните следующую команду:

$ sudo rm -f /etc/httpd/enable.reload.by.cronjob

Когда опция «отложенный рестарт» включена, все запросы на «плавный» перезапуск Apache записываются в /var/log/messages. Также есть возможность включить только запись запросов на «плавный» перезапуск, без включения опции «отложенный рестарт».

Для включения записи запросов на «плавный» перезапуск Apache в журнал событий без включения опции «отложенный рестарт» выполните следующую команду:

$ sudo touch /etc/httpd/debug.reload.by.cronjob

Для отключения записи запросов на «плавный» перезапуск Apache в журнал событий выполните следующую команду:

$ sudo rm -f /etc/httpd/debug.reload.by.cronjob

Файл задания cron для отложенного перезапуска веб-сервера Apache находится по пути /etc/cron.d/httpd-reload-cron.

По умолчанию опция «отложенный рестарт веб-сервера apache», а также запись запросов на перезапуск, отключены.