Управление во время выполнения#

Чтобы запустить 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. Главный процесс поддерживает следующие сигналы:

TERM, INT

Быстрое завершение работы

QUIT

Постепенное завершение работы

HUP

Перезагрузка конфигурации, обновление часового пояса (только для FreeBSD и Linux), запуск новых рабочих процессов с обновленной конфигурацией, постепенное завершение старых рабочих процессов

USR1

Перезапуск файлов журналов

USR2

Обновление исполняемого файла

WINCH

Постепенное завершение рабочих процессов

Отдельные рабочие процессы также можно контролировать с помощью сигналов, хотя это не обязательно. Поддерживаются следующие сигналы:

TERM, INT

Быстрое завершение работы

QUIT

Постепенное завершение работы

USR1

Перезапуск файлов журналов

WINCH

Аномальное завершение работы для отладки (требуется включение 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 старому главному процессу, и останутся только новые процессы.

Параметры командной строки#

-?, -h

Вывод справки по параметрам командной строки, затем выход.

--build-env

Вывод вспомогательной информации об окружении сборки, затем выход.

-c файл

Запуск с альтернативным файлом конфигурации вместо файла по умолчанию.

-e файл

Запуск с альтернативным лог-файлом ошибок вместо файла по умолчанию. Специальное значение stderr задает стандартный файл ошибок.

-g директивы

Запуск с установкой глобальных директив конфигурации, например: angie -g "pid /var/run/angie.pid; worker_processes `sysctl -n hw.ncpu`;".

-m, -M

Вывод списка встроенных (-m) или встроенных и загруженных (-M) модулей, затем выход.

-p префикс

Запуск с заданным префиксом пути angie (каталога, в котором будут находиться файлы сервера; по умолчанию — /usr/local/angie/).

-q

Вывод только сообщений об ошибках, если заданы -t или -T; иначе эффекта нет.

-s сигнал

Отправка сигнала главному процессу: stop, quit, reopen, reload и так далее.

-t

Тестирование файла конфигурации, затем выход. Angie проверяет синтаксис конфигурации, рекурсивно включая файлы, упомянутые в ней.

-T

То же, что -t, но с выводом сводной конфигурации в стандартный поток вывода после рекурсивного включения всех упомянутых в ней файлов.

-v

Вывод версии Angie, затем выход.

-V

Вывод версии Angie, версии компилятора и использованных параметров сборки, затем выход.