Как установить Supervisor на Ubuntu 24
Установка Supervisor на Ubuntu — один пакет apt, а дальше небольшой файл настроек для каждой программы, которую он должен держать запущенной. Supervisor запускает программу при загрузке, перезапускает её после падения и собирает её вывод в журналы. Инструкция для Ubuntu 24.04 и 22.04, примеры — обработчик очередей Laravel и приложение на Node.js.
Установка Supervisor на Ubuntu
sudo apt update
sudo apt install -y supervisor
sudo systemctl status supervisor --no-pagerНужна строка Active: active (running). Служба включена и поднимется после перезагрузки. Главный файл — /etc/supervisor/supervisord.conf, а из папки /etc/supervisor/conf.d/ Supervisor читает все файлы *.conf. Туда и кладут свои программы, по файлу на каждую.
Как добавить обработчик очередей Laravel
В документации Laravel queue:work запускают под Supervisor, чтобы обработчики поднимались после сбоя или выкладки. Создайте файл:
sudo nano /etc/supervisor/conf.d/laravel-worker.confВставьте этот текст и поменяйте путь к проекту и пользователя, которому принадлежат его файлы. Сохраните сочетанием Control-O и выйдите через Control-X.
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/example.com/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/example.com/storage/logs/worker.log
stopwaitsecs=3600numprocs=2— два обработчика работают параллельно, их именаlaravel-worker_00иlaravel-worker_01.user— обработчик работает от этого пользователя, а не от root. Укажите владельца файлов проекта.stopwaitsecs— сколько Supervisor ждёт окончания текущей задачи, когда останавливает обработчик. Ставьте больше, чем идёт самая долгая задача.redirect_stderrиstdout_logfile— ошибки и вывод пишутся в один файл журнала.
Как добавить приложение на Node.js
Так же можно запускать любую программу, которая сама не уходит в фон. Для приложения на Node.js создайте файл /etc/supervisor/conf.d/myapp.conf с таким текстом:
[program:myapp]
command=/usr/bin/node server.js
directory=/var/www/myapp
user=www-data
autostart=true
autorestart=true
environment=NODE_ENV="production",PORT="3000"
redirect_stderr=true
stdout_logfile=/var/log/supervisor/myapp.logПуть к node указывайте полностью: Supervisor не читает ваш ~/.bashrc. Узнать путь поможет команда:
which nodeNode.js из nvm лежит в домашней папке, а её в Ubuntu другие пользователи, например www-data, прочитать не могут. Тогда укажите в user свою учётную запись или возьмите Node.js из NodeSource — он в /usr/bin.
Как применить настройки: supervisorctl reread и update
Сам Supervisor новые файлы не замечает. reread перечитывает настройки, update запускает новые программы и перезапускает изменённые, status показывает, что работает:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl statusУ каждой программы должно быть RUNNING с номером процесса и временем работы. После любой правки файла в conf.d выполняйте те же три команды.
Команды supervisorctl на каждый день
- Перезапустить одну программу, например после выкладки:
sudo supervisorctl restart myappИзменённые файлы настроекrestartне читает, для этого естьupdate. - Перезапустить все процессы группы:
sudo supervisorctl restart "laravel-worker:*"Кавычки нужны, чтобы оболочка не раскрыла*. - Остановить программу вручную:
sudo supervisorctl stop myappЗапустить снова:sudo supervisorctl start myapp - Смотреть вывод программы в реальном времени:
sudo supervisorctl tail -f myappВыход — Control-C. - Журналы — там, где указано в
stdout_logfile, а собственный журнал Supervisor —/var/log/supervisor/supervisord.log. - Laravel после выкладки:
php artisan queue:restartОбработчики доделают текущую задачу и завершатся, а Supervisor запустит их снова уже с новым кодом.
Частые проблемы с Supervisor
unix:///var/run/supervisor.sock no such file— не запущен сам Supervisor. Запустите его и включите автозапуск:sudo systemctl enable --now supervisorerror: <class 'PermissionError'>, [Errno 13] Permission denied— supervisorctl запущен безsudo. Его сокет открыт только для root.ERROR (no such process)илиERROR (no such group)— Supervisor ещё не знает это имя. Выполнитеrereadиupdateи проверьте, что имя совпадает с указанным в[program:…].FATALилиBACKOFFсExited too quickly (process log may have details)— команда падает сразу после запуска. Прочитайте журнал программы или запустите команду вручную от того же пользователя, например:sudo -u www-data php /var/www/example.com/artisan queue:workERROR: CANT_REREAD— ошибка в файле настроек. В сообщении будут файл и строка.
Если вы работаете и на Mac

Сборка мусора в MacWashing находит кэш всех знакомых ей программ, в том числе спрятанный внутри их данных, а ещё журналы, мусор Xcode и остатки удалённых программ. Она показывает, сколько места занимает каждая находка, и очищает всё за один раз. Всё спорное остаётся без галочки, пока вы не решите.
Бесплатная пробная версия · macOS 14 и новее
Вопросы и ответы
Как установить Supervisor на Ubuntu?
Выполните: sudo apt install supervisor Затем положите файл .conf своей программы в /etc/supervisor/conf.d/ и примените его: sudo supervisorctl reread && sudo supervisorctl update
Запустятся ли программы после перезагрузки?
Да, если у программы autostart=true (так по умолчанию) и служба supervisor включена. Пакет apt включает её при установке.
Что выбрать — Supervisor или systemd?
Оба держат программу запущенной. Supervisor удобен для групп одинаковых обработчиков (numprocs), и именно его описывает документация Laravel. Одну службу так же просто запустить как юнит systemd.