Apachectl - утилита управления web-сервером Apache

Материал из Home wiki
Перейти к навигации Перейти к поиску

Apachectl - утилита управления web-сервером Apache

Вот, ковыряясь с возможностями Apache, решил осветить тему утилиты управления Apachectl. Сразу отметим, что утилита Apachectl может работать в двух режимах. В любом из режимов Apachectl возвращает значение 0 в случае успешного выполнения сценария, и значение больше ноля, в случае ошибки.

В первом режиме Apachectl выступает как интерфейс для получения HTTPD-команд. Просмотреть доступные команды можно с помощью ключа -h, либо же выполнив команду Apachectl без аргументов:

# apachectl -h
Usage: /usr/local/sbin/httpd [-D name] [-d directory] [-f file]
                             [-C "directive"] [-c "directive"]
                             [-k start|restart|graceful|graceful-stop|stop]
                             [-v] [-V] [-h] [-l] [-L] [-t] [-S]
Options:
  -D name            : define a name for use in <IfDefine name> directives
  -d directory       : specify an alternate initial ServerRoot
  -f file            : specify an alternate ServerConfigFile
  -C "directive"     : process directive before reading config files
  -c "directive"     : process directive after reading config files
  -e level           : show startup errors of level (see LogLevel)
  -E file            : log startup errors to file
  -v                 : show version number
  -V                 : show compile settings
  -h                 : list available command line options (this page)
  -l                 : list compiled in modules
  -L                 : list available configuration directives
  -t -D DUMP_VHOSTS  : show parsed settings (currently only vhost settings)
  -S                 : a synonym for -t -D DUMP_VHOSTS
  -t -D DUMP_MODULES : show all loaded modules
  -M                 : a synonym for -t -D DUMP_MODULES
  -t                 : run syntax check for config files

Для примера, воспользуемся двумя самыми простыми командами:

# apachectl -v
Server version: Apache/2.2.17 (FreeBSD)
Server built:   Dec 18 2010 20:45:37
# apachectl -t
Syntax OK

Первая команда - узнали версию программного обеспечения web-сервера. Вторая - проверили конфигурационный файл на наличие ошибок.

Советую поэкспериментировать с остальными ключами.

Во втором режиме Apachectl работает как сценарий инициализации, позволяя запустить, остановить и перезапустить web-сервер. Доступные ключи:

  • start - запуск демона Apache HTTPD. Выдает ошибку, если он уже запущен. Аналог apachectl -k start.
  • stop - останов демона Apache HTTPD. Аналог apachectl -k stop.
  • restart - перезапуск демона Apache HTTPD. Если демон не запущен, он запускается. Эта команда автоматически проверяет файлы конфигурации (запуск Apachectl с ключем configtest) перед началом перезапуска, чтобы убедиться, что демон не будет остановлен в следствии ошибки конфигурации. Аналог apachectl -k restart.
  • fullstatus - отображает полный рапорт о состоянии с помощью модуля mod_status. Необходимо, чтобы mod_status был включен в конфигурации демона Apache. Также необходима поддержка текстового браузера (например lynx). URL-адрес используется для отчета о статусе и может задаваться переменной STATUSURL.
  • status - отображение базового отчета о статусе демона Apache. Похоже на fullstatus, только список запросов на данный момент не отображается.
  • graceful - "мягкий" перезапуск демона Apache HTTPD. Если демон не запущен, он запускается. Отличие от restart в том, что уже открытые соединения не разрываются. Побочным эффектом является то, что старые файлы журналов не будут немедленно закрыты. Эта команда автоматически проверяет файлы конфигурации (запуск Apachectl с ключем configtest) перед началом перезапуска, чтобы убедиться, что демон не будет остановлен в следствии ошибки конфигурации. Аналог apachectl -k graceful.
  • configtest - проверка синтаксиса файла конфигурации. Анализирует файлы конфигурации и в случае положительной проверки, выводит "Syntax OK". Если же в файле конфигурации присутствует ошибка, то будет выведена подробная информация о ошибке.