Управление во время выполнения#
Чтобы запустить Angie, используйте systemd и следующую команду:
$ sudo service angie start
Рекомендуется предварительно проверить синтаксис конфигурации. Вот как это сделать:
$ sudo angie -t && sudo service angie start
Чтобы перезагрузить конфигурацию:
$ sudo angie -t && sudo service angie reload
Чтобы остановить Angie:
$ sudo service angie stop
После установки выполните следующую команду, чтобы убедиться, что Angie работает:
$ curl localhost:80
Примечание
Методы запуска открытой версии Angie могут различаться в зависимости от метода установки.
Angie имеет один главный процесс и несколько рабочих процессов. Главный процесс отвечает за чтение и оценку конфигурации и управление рабочими процессами. Рабочие процессы обрабатывают фактические запросы. Angie использует модель на основе событий и механизмы, зависящие от ОС, для эффективного распределения запросов между рабочими процессами. Количество рабочих процессов определяется в конфигурационном файле и может быть фиксированным для данной конфигурации или автоматически регулироваться в зависимости от числа доступных ядер CPU (см. worker_processes).
Использование сигналов#
Angie также можно управлять с помощью сигналов. По умолчанию идентификатор
процесса главного процесса записывается в файл /var/run/angie.pid
. Это
имя файла можно изменить во время конфигурации или в файле angie.conf
с помощью директивы pid. Главный процесс поддерживает следующие сигналы:
|
Быстрое завершение работы |
|
Постепенное завершение работы |
|
Перезагрузка конфигурации, обновление часового пояса (только для FreeBSD и Linux), запуск новых рабочих процессов с обновленной конфигурацией, постепенное завершение старых рабочих процессов |
|
Перезапуск файлов журналов |
|
Обновление исполняемого файла |
|
Постепенное завершение рабочих процессов |
Отдельные рабочие процессы также можно контролировать с помощью сигналов, хотя это не обязательно. Поддерживаются следующие сигналы:
|
Быстрое завершение работы |
|
Постепенное завершение работы |
|
Перезапуск файлов журналов |
|
Аномальное завершение работы для отладки (требуется включение debug_points) |
Изменение конфигурации#
Чтобы Angie перечитал конфигурационный файл, необходимо отправить сигнал
HUP
главному процессу. Сначала главный процесс проверяет корректность
синтаксиса, а затем пытается применить новую конфигурацию, что включает в себя
открытие новых файлов журналов и сокетов для прослушивания. Если применение
новой конфигурации не удалось, главный процесс откатывает изменения и продолжает
работу со старой конфигурацией. Если применение прошло успешно, главный процесс
запускает новые рабочие процессы и отправляет сообщения старым рабочим процессам
с просьбой завершиться постепенно. Старые
рабочие процессы закрывают свои сокеты для прослушивания и продолжают
обслуживать существующих клиентов. После того как все клиенты будут обслужены,
старые рабочие процессы завершатся.
Angie отслеживает изменения конфигурации для каждого процесса. Номера поколений начинаются с 1, когда сервер запускается впервые. Эти номера увеличиваются с каждым перезагрузкой конфигурации и видны в заголовках процессов:
$ sudo angie
$ ps aux | grep angie
angie: master process v1.7.0 #1 [angie]
angie: worker process #1
После успешной перезагрузки конфигурации (независимо от того, были ли фактические изменения), Angie увеличивает номер поколения для процессов, которые получили новую конфигурацию:
$ sudo angie -s reload
$ ps aux | grep angie
angie: master process v1.7.0 #2 [angie]
angie: worker process #2
Если какие-либо рабочие процессы из предыдущих поколений продолжают работать, они сразу же станут заметны:
$ ps aux | grep angie
angie: worker process #1
angie: worker process #2
Примечание
Не путайте номер поколения конфигурации с неким 'номером процесса'; Angie не использует непрерывную нумерацию процессов для практических целей.
Ротация лог-файлов#
Для ротации лог-файлов сначала переименуйте файлы. Затем отправьте сигнал
USR1
главному процессу. Главный процесс снова откроет все открытые
лог-файлы и назначит их непривилегированному пользователю, под которым работают
рабочие процессы. После успешного открытия файлов главный процесс закроет все
открытые файлы и уведомит рабочие процессы о необходимости открыть свои
лог-файлы. Рабочие процессы также немедленно откроют новые файлы и закроют
старые. В результате старые файлы становятся доступными для последующей
обработки, такой как сжатие, почти сразу.
Обновление исполняемого файла на лету#
Чтобы обновить исполняемый файл сервера, сначала замените старый исполняемый
файл на новый. Затем отправьте сигнал USR2
главному процессу. Главный
процесс переименует свой текущий файл с идентификатором процесса в новый файл с
суффиксом .oldbin
, например,
/usr/local/angie/logs/angie.pid.oldbin
, и затем запустит новый
исполняемый файл, который, в свою очередь, запустит новые рабочие процессы.
Обратите внимание, что старый главный процесс не закрывает свои сокеты для прослушивания и может быть управляем для перезапуска своих рабочих процессов в случае необходимости. Если новый исполняемый файл работает не так, как ожидалось, вы можете предпринять следующие действия:
Отправьте сигнал
HUP
старому главному процессу. Это запустит новые рабочие процессы без повторного чтения конфигурации. После этого вы можете завершить все новые процессы постепенно, отправив сигналQUIT
новому главному процессу.Отправьте сигнал
TERM
новому главному процессу. Он отправит сообщение своим рабочим процессам с просьбой немедленно выйти. Если какие-либо процессы не выходят, отправьте сигналKILL
, чтобы заставить их выйти. Когда новый главный процесс завершится, старый главный процесс автоматически запустит новые рабочие процессы.
Если новый главный процесс завершится, старый главный процесс удалит суффикс
.oldbin
из имени файла с идентификатором процесса.
Если обновление прошло успешно, отправьте сигнал QUIT
старому главному
процессу, и останутся только новые процессы.
Параметры командной строки#
|
Вывод справки по параметрам командной строки, затем выход. |
|
Вывод вспомогательной информации об окружении сборки, затем выход. |
|
Запуск с альтернативным файлом конфигурации вместо файла по умолчанию. |
|
Запуск с альтернативным лог-файлом ошибок
вместо файла по умолчанию.
Специальное значение |
|
Запуск с установкой
глобальных директив конфигурации, например:
|
|
Вывод списка встроенных ( |
|
Запуск с заданным префиксом пути |
|
Вывод только сообщений об ошибках, если заданы |
|
Отправка сигнала главному процессу:
|
|
Тестирование файла конфигурации, затем выход. Angie проверяет синтаксис конфигурации, рекурсивно включая файлы, упомянутые в ней. |
|
То же, что |
|
Вывод версии Angie, затем выход. |
|
Вывод версии Angie, версии компилятора и использованных параметров сборки, затем выход. |