Linux | Supervisor автозапуск сервера

im0rg

New member
Команда форума
Премиум
Регистрация
02.05.2022
Сообщения
10
Реакции
9
Баллы
0
Местоположение
Cheb
Сайт
boobywow.ru
Видел подобные решения на C# под Windows как автозапуск сервера, не знаю насколько большое комьюнити здесь под Linux, но эта статья сугубо под них.

Supervisor

Это утилита написана на Python и предназначена для управления процессами ОС. Мы рассмотрим только отслеживание состояния демонов (фоновых сервисов) и их перезапуск в случае необходимости. Утилита предоставляет системный и web интерфейсы для управления сервисами (демонами).

Установка очень проста
Bash:
sudo apt-get install supervisor

После установки будет доступен демон supervisord со всеми возможностями контроля: status, start, restart, stop

Давайте теперь откроем файл конфигурации /etc/supervisor/supervisord.conf или же можно создать файл /etc/supervisor/conf.d/my_server.conf
И напишем там такую секцию в самом конце
Код:
[program:my_server]
directory=/home/wow/server/bin/
command=/bin/bash start_server.sh
stdout_logfile=/home/wow/worker.log
autostart=true
autorestart=true
user=wow-user
stopsignal=KILL
numprocs=1

Теперь опишу подробнее что за что отвечает

[program:my_server]название процесса/воркера, к которому будут относиться все последующие параметры секции
directoryпапка с файлами в которой будет исполняемый файл
commandкоманда которая будет выполняться
stdout_logfileфайл куда будем писать все логи
autostartзапуск воркера вместе с запуском supervisor
autorestartперезапуск воркера, если тот по какой-то причине упал
userзапуск процесса под определенным пользователем
stopsignalсигнал остановки (убийства) процесса. Если не определяется, то используется команда по умолчанию — TERM
numprocsколичество инстансов заданного воркера (копий процесса)

После редактирования надо перечитать файлы конфигурации
Bash:
sudo supervisorctl reread
sudo supervisorctl update
Или перезапустить сервис
Bash:
sudo service supervisor restart

Ну и напишем сам SH файл который будет запускаться
В директории /home/wow/server/bin/ создаем файл start_server.sh с содержанием
Bash:
./worldserver


Так-же у SuperVisor есть удобная web морда

1651597606414.png


Для того чтоб она заработала достаточно добавить в /etc/supervisor/supervisord.conf
Код:
[inet_http_server]
port=127.0.0.1:9001
username=YOUR_USER    ; Данные для HTTP Basic Authentication
password=YOUR_PASS


Данная статья не претендует на использование в боевом проекте, она прежде всего служит как ознакомление с одним из решений.
Подробнее про
supervisor
 
Верх Низ