Настройка Supervisor

Пошаговая инструкция для автоматической настройки и стабильного управления фоновыми задачами с помощью Supervisord.

Что такое Supervisord и зачем он нужен?

Supervisord — это программа, которая следит за тем, чтобы нужные вам процессы на сервере всегда работали. Если какая-то программа остановится, Supervisord автоматически её перезапустит.


Важно

Шаг 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?