OwlCoder
Запуск node сервера через supervisor
Я устанавливал всё на операционной системе ubuntu
Все действия в операционной системе ведутся от пользователя root. Если вы используете другого пользователя - добавляйте в начале каждой команды sudo.
Для того чтобы установить supervisor - введите apt install supervisor
После запуска supervisorctl или при запуске команды supervisorctl status,
вы можете увидеть сообщение
unix:///var/run/supervisor.sock refused connection
Для просмотра подробностей ошибки можно ввести команду journalctl -xe, где будет виден системный лог операционной системы.
Чтобы добавить программу в супервизор - необходимо написать файл-инструкцию в папке /etc/supervisor/conf.d/. Файл должен заканчиваться на .conf.
То есть пример полного пути до файла будет: /etc/supervisor/conf.d/project_name.conf
[program:program_name]
process_name=%(program_name)s_%(process_num)02d
directory=/var/www/program_name/
command=node server.js
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/nginx/program_name
Первая строка - это обычная секции. Я использую этот шаблон довольно часто, и он позволяет запускать несколько одинаковых программ одновременно. Поэтому %{program_name} во второй программе подставляет в каждый запускаемый процесс название программы, а %(process_num)02d - это номер процесса. Причём обязательно 2 цифры. Если это процесс номер 2 то будет program_name_01, а если это процесс 12 то будет program_name_11.
Опция nuprocs показывает как раз количество процессов, которые будут записаны для указанной инструкции. В данном случае я запускаю только один процесс.
Запускать несколько процессов актуально для различных воркеров. Допустим если у вас есть какие-то фоновые операции и их можно делать параллельно.
Не забудьте указать актуального пользователя, от которого будет выполняться процесс, а также существующий путь до лог файла.
redirect_stderr говорит о том, что ошибки будут перенаправлять в основной лог файл.
После всего этого просто выполняем service supervisor restart, или service supervisor start, если у вас ещё не запущен сервис супервизора.
Теперь ваша программа будет запущена в фоне.