Бесплатная миграция IT-инфраструктуры в облако
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

Запуск бота в фоновом режиме

Вы можете запустить на сервере бота, написанного на Python или любом другом языке программирования. Чтобы обеспечить постоянную и надежную работу скрипта, потребуется настроить автозапуск и перезагрузку. 

Подготовка

Загрузите файлы бота, например, в директорию  /home/me и создайте виртуальное окружение:

python3 -m venv venv

Активируйте его:

source ./venv/bin/activate

Далее установите все пакеты:

pip install -r requirements.txt

Если файл requirements.txt со списком пакетов отсутствует, установите все расширения вручную.

Screen — самый простой метод

Для простого запуска скрипта в фоне можно воспользоваться утилитой screen, которая позволяет создавать неограниченое количество сессий в терминале.

Ее необходимо установить из репозитория:

sudo apt install screen

Запустите новое окно командой:

screen

Активируйте виртуальное окружение и запустите бота:

source ./venv/bin/activate 
python main.py

Осталось свернуть сессию. Для этого необходимо зажать сочетание клавиш Ctrl + A, после чего нажать D.

Список основных команд:

  • screen — запуск новой сессии;
  • screen -ls — просмотр всех сессий;
  • screen -r <socket_name> — открыть конкретную сессию (если сессия всего одна, то имя можно не указывать).

В сессии:

  • Ctrl + A + D — свернуть сессию;
  • Ctrl + A + K — завершить сессию.

Это простой метод, который не требует создания конфигурационных файлов. Однако если сервер будет перезагружен или во время работы скрипта возникнет ошибка, бота нужно будет запустить заново.

Systemd

Рассмотрим запуск приложения в роли службы. Systemd — это менеджер системы и служб Linux. Он управляет службами, которые описаны в конфигурационных файлах, и запускает их.

Создайте новый юнит systemd:

sudo nano /lib/systemd/system/bot.service

Добавьте в него следующее содержимое:

[Unit]
Description=Timeweb Bot Service
After=network.target

[Service]
Type=idle
Restart=always
RestartSec=3
User=root
WorkingDirectory=/home/me/bot
ExecStart=/home/me/bot/venv/bin/python /home/me/bot/main.py

[Install]
WantedBy=multi-user.target

где:

  • Description — название службы,
  • ExecStart — путь до интерпретатора Python и скрипта,
  • User — пользователь, от которого будет запущена служба,
  • Restart=always — указание, что необходимо перезапустить бота после ошибки.

Осталось перезагрузить юниты, добавить службу в автозапуск и активировать бота:

sudo systemctl daemon-reload 
sudo systemctl enable bot.service
sudo systemctl start bot.service

Теперь проверьте работу бота. Если бот не отвечает, попробуйте запустить его в терминале и посмотреть, нет ли ошибок

PM2

Еще один способ запустить бота — использовать менеджер процессов PM2. О нем мы подробнее писали в Community. PM2 автоматически перезапускает бота и сохраняет логи.

Установите следующие пакеты:

sudo apt install nodejs
sudo apt install npm

Далее установите PM2:

npm install pm2 -g

Для запуска бота перейдите в директорию с ботом и запустите его командой:

pm2 start main.py --interpreter=python3

 

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев