Supervisor - утилита для запуска сервера

Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Особенности данной утилиты заключается в том, что она умеет запускать, перезапускать и контролировать процесс в системе. Работает она в *nix системах. Мануал написан для Ubuntu 14.04, но должно работать для всех Debian-подобных дистрибутивов.

Сначала нам нужно установить сам supervisor
sudo apt-get update
sudo apt-get install supervisor
Все supervisor установлен в ОС.
Далее сделаем отдельную папку для логов
sudo mkdir /var/log/hlds
sudo chown -R steam
И собственно сам процесс настройки.
Создаем файл /etc/supervisor/conf.d/hlds.conf и вставляем туда следующее содержимое
Внимание: путь к серверу, пользователя и параметры запуска измените на свои. Здесь они приведены для примера
Код:
[program:Название]
user=steam
environment = HOME="/steam",LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH"
process_name=hlds
directory=/srv/hlds/
command=/srv/hlds/hlds_linux -game cstrike -norestart +servercfgfile server.cfg +sv_lan 0 +ip 127.0.0.1 +port 27015 +maxplayers 32 +map de_dust2
numprocs=1
startretries=3
autostart=true
autorestart=true
stdout_logfile=/var/log/hlds/hlds.log
stdout_logfile_maxbytes=5MB
stdout_logfile_backups=10
redirect_stderr=true
stderr_logfile=/var/log/hlds/error.log
stderr_logfile_maxbytes=5MB
stderr_logfile_backups=10


Разберем настройки
[program:hlds] - Название программы. Служит для управления.
user - Пользователь от которого запускать сервер
environment - /steam путь к home директории пользователя от которого запускаем процесс. Все остальное оставляем как есть
process_name - имя процесса
directory - путь к директории сервера
command - команда запуска. Обратите внимания на hlds_linux вместо hlds_run
numprocs - количество процессов. В нашем случае 1
startretries - количество попыток автоподнятия при падении. При превышении сервер больше не поднимется
autostart - автозапуск при запуске ОС
autorestart - автоперезапуск при падении
stdout_logfile - путь к логфайлу
stdout_logfile_maxbytes - максимальный размер лог файла
stdout_logfile_backups - максимальное количество лог файлов
redirect_stderr - переадресация потока ошибок
stderr_logfile - путь к логу ошибок
stderr_logfile_maxbytes - максимальный размер файла ошибок
stderr_logfile_backups - максимальное количество файлов ошибок

После этого рестартим сервис
sudo service supervisor restart
Для контроля есть утилита supervisorctl, которая идет вместе с самим supervisor
Запуск
Остановка
Перезапуск
supervisorctl restart hlds


Вот собственно и все. Больше информации о настройках здесь: http://supervisord.org/configuration.html#program-x-section-settings
 
Последнее редактирование:
Сообщения
39
Реакции
11
Добавьте пожалуйста, что для запуска необходимо в supervisord.conf добавить

[inet_http_server]
port=127.0.0.1:9771
;username=user
;password=123

Иначе supervisorctl отказывается работать и пишет ошибку
No passwd entry for user 'supervisorctl'
 
Последнее редактирование:
Сообщения
39
Реакции
11
fantom а выставить какое именно ядро использовать через кфг возможно?
taskset -c 1
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
AkycTuk, Попробуй так
taskset -c 0 supervisorctl start hlds.
0 - это первое ядро. 1 - второе. И т.д.
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
AkycTuk, Попробуй так
taskset -c 0 supervisorctl start hlds.
0 - это первое ядро. 1 - второе. И т.д.
скорее всего так
Код:
command=taskset -c 0 /srv/hlds/hlds_linux -game cstrike -norestart +servercfgfile server.cfg +sv_lan 0 +ip 127.0.0.1 +port 27015 +maxplayers 32 +map de_dust2
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
melfyk, так не прокатит, ибо супервизор порождает процес хлдс внутри себя. Таким образом мы выставим приоритет только самому супервизору

bionext, только в таком случае мы теряем преимущество супервизора как процес менеджера
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
fantom, а супервизор мониторит ли запущенный порт сервера и проверяет ли его как-либо на пинг?

у меня иногда бывает hlds просто виснет намертво, без краша, так что система считает его запущенным и не перезапускает руками. супервизор решит эту проблему? или может какой аналог есть? сейчас стоит простенький скрипт в пару строк
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
супервизор мониторит ли запущенный порт сервера и проверяет ли его как-либо на пинг
Нет. Для этого я рекомендую на крон повесить проверку и при необходимости отправить команду рестарт.

А по факту статья делалась 2 года назад. На даный момент я склоняюст к мнению написания спец ПО которое умеет делать все что нужно.
 

ifx

Сообщения
331
Реакции
153
Помог
4 раз(а)
Нет. Для этого я рекомендую на крон повесить проверку и при необходимости отправить команду рестарт.
а где-то почитать про это можно подробнее? или какое-то решение может уже есть готовое? проверку на крон еще я допру как добавить, а вот чтобы отправлялась команда в запущенный процесс - не знаю)
 
Сообщения
39
Реакции
11
fantom, понял, спасибо, если что найдёте, заливайте, пока пользуюсь данным решением, удобно.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу