Запуск 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, если у вас ещё не запущен сервис супервизора. 

Теперь ваша программа будет запущена в фоне.