Настройка Supervisor
Пошаговая инструкция для автоматической настройки и стабильного управления фоновыми задачами с помощью Supervisord.
Что такое Supervisord и зачем он нужен?
Supervisord — это программа, которая следит за тем, чтобы нужные вам процессы на сервере всегда работали. Если какая-то программа остановится, Supervisord автоматически её перезапустит.
Важно
Все команды, указанные в этой инструкции, требуют выполнения от имени пользователя с максимальными правами (пользователя root). Это необходимо, так как многие команды вносят изменения в конфигурацию системы и требуют административных привилегий.
Для перехода в пользователя root выполните команду:
sudo -l root
Шаг 1: Подготовка сервера
Сначала обновите все необходимые пакеты на сервере. Выполните команды одну за другой:
sudo apt update
sudo apt upgrade -y
Шаг 2: Установка Supervisord
Установите Supervisord командой:
sudo apt install supervisor -y
Включите Supervisord, чтобы он автоматически запускался при включении сервера, и сразу запустите его:
sudo systemctl enable supervisor
sudo systemctl start supervisor
Проверьте, запущен ли Supervisord:
sudo systemctl status supervisor
Шаг 3: Простая настройка Supervisord
Откройте главный файл конфигурации Supervisord:
nano /etc/supervisor/supervisord.conf
Добавьте следующую строку сразу после [supervisord]
:
[supervisord]
minfds=10000

Сохранение и закрытие редактора в терминале
На Mac и Linux (редактор nano):
Нажмите комбинацию клавиш
Control + O
для сохранения файла.Затем подтвердите сохранение, нажав Enter.
Для выхода из редактора нажмите Control + X.
На Windows (редактор nano в WSL, Git Bash и аналогичных):
Нажмите комбинацию клавиш
Ctrl + O
для сохранения файла.Затем нажмите Enter для подтверждения.
Закройте редактор, нажав Ctrl + X.
Перезапустите Supervisord для применения настроек:
sudo systemctl restart supervisor
Шаг 4: Настройка автоматического запуска ваших программ
Создайте скрипт, который настроит автоматический запуск нужных программ:
nano setup_supervisor_processes.sh
Скопируйте и вставьте текст ниже, предварительно заменив указанные значения на свои:
Где найти путь к проекту и имя пользователя?PROJECT_PATH
: Путь к проектуPHP_PATH
: Путь к PHP (по умолчанию/usr/bin/php8.2
)USER
: Пользователь сервераDOMAIN
: Ваш домен (app.ваш_домен)
#!/bin/bash
# Настройка проекта Laravel для Supervisor
# ======== Укажите свои данные здесь ========
PROJECT_PATH="/var/www/имя_пользователя/data/www/app.ваш_домен" # Путь до вашего проекта
PHP_PATH="/usr/bin/php8.2" # Путь до исполняемого файла PHP
USER="имя_пользователя" # Имя вашего пользователя
DOMAIN="app.ваш_домен" # Ваш домен
# ===========================================
# Путь для конфигурационного файла Supervisor
SUPERVISOR_CONF_PATH="/etc/supervisor/conf.d/iex.conf"
# Создание конфигурационного файла Supervisor
cat <<EOF > "$SUPERVISOR_CONF_PATH"
[program:horizon]
command=$PHP_PATH $PROJECT_PATH/artisan horizon
autostart=true
autorestart=true
user=$USER
redirect_stderr=true
stdout_logfile=$PROJECT_PATH/storage/logs/iex-horizon.log
[program:laravel-worker]
command=$PHP_PATH $PROJECT_PATH/artisan queue:work --delay=1 --sleep=1 --timeout=1800 --tries=3 --queue=high,low
directory=$PROJECT_PATH
autostart=true
autorestart=true
user=$USER
redirect_stderr=true
stdout_logfile=$PROJECT_PATH/storage/logs/iex-worker.log
[program:laravel-pulsework]
command=$PHP_PATH $PROJECT_PATH/artisan pulse:work
autostart=true
autorestart=true
user=$USER
redirect_stderr=true
stdout_logfile=$PROJECT_PATH/storage/logs/iex-pulse-work.log
[program:laravel-pulsecheck]
command=$PHP_PATH $PROJECT_PATH/artisan pulse:check
autostart=true
autorestart=true
user=$USER
redirect_stderr=true
stdout_logfile=$PROJECT_PATH/storage/logs/iex-pulse-check.log
stopwaitsecs=3600
[program:laravel-reverb]
command=$PHP_PATH $PROJECT_PATH/artisan reverb:start --debug --hostname="$DOMAIN"
autostart=true
autorestart=true
user=$USER
redirect_stderr=true
stdout_logfile=$PROJECT_PATH/storage/logs/iex-reverb.log
EOF
# Перезагрузка Supervisor для применения новых настроек
echo "Обновляем настройки Supervisor..."
supervisorctl reread
supervisorctl update
# Вывод сообщения о завершении
echo "Конфигурация Supervisor успешно обновлена и применена!"
Сохранение и закрытие редактора в терминале
На Mac и Linux (редактор nano):
Нажмите комбинацию клавиш
Control + O
для сохранения файла.Затем подтвердите сохранение, нажав Enter.
Для выхода из редактора нажмите Control + X.
На Windows (редактор nano в WSL, Git Bash и аналогичных):
Нажмите комбинацию клавиш
Ctrl + O
для сохранения файла.Затем нажмите Enter для подтверждения.
Закройте редактор, нажав Ctrl + X.
Сделайте скрипт исполняемым и запустите его:
chmod +x setup_supervisor_processes.sh
sudo ./setup_supervisor_processes.sh
Шаг 5: Применение новых настроек Supervisord
Выполните следующие команды, чтобы Supervisord применил изменения:
sudo supervisorctl reread
sudo supervisorctl update
Шаг 6: Проверка работы Supervisord
Проверьте, что все программы запущены и работают:
sudo supervisorctl status
Все указанные программы должны быть в состоянии RUNNING
.
Полезные команды для управления программами
Перезапустить все программы:
sudo supervisorctl restart all
Перезапустить конкретную программу:
sudo supervisorctl restart название_программы
Остановить программу:
sudo supervisorctl stop название_программы
Запустить программу:
sudo supervisorctl start название_программы
Проверка логов
Основной журнал работы Supervisord:
cat /var/log/supervisor/supervisord.log
Журналы отдельных программ (пример):
cat /var/www/myproject/iex-worker.log
Теперь Supervisord полностью настроен и работает на вашем сервере. Если возникнут вопросы, вы всегда можете обратиться за помощью к специалисту.
Last updated
Was this helpful?