Помощь

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

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

Подготовка

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

python3 -m venv venv

2. Активируйте виртуальное окружение:

source ./venv/bin/activate

3. Установите все необходимые пакеты, перечисленные в файле requirements.txt:

pip install -r requirements.txt

Если файл requirements.txt с перечнем пакетов отсутствует, вы можете установить требуемые пакеты вручную.

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

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

Для начала, установите утилиту screen из репозитория:

sudo apt install screen

Затем запустите новую сессию с помощью команды:

screen

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

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

Теперь можно свернуть текущую сессию, удерживая комбинацию клавиш Ctrl + A, а затем нажав клавишу D.

Вот некоторые основные команды для работы с screen:

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

Внутри сессии:

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

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

Systemd

Давайте рассмотрим запуск вашего приложения в роли службы с использованием Systemd - менеджера системы и служб Linux, который эффективно управляет службами, определенными в конфигурационных файлах, и осуществляет их запуск.

Для начала создайте новый юнит для systemd следующей командой:

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

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

[Unit]
Description=Служба Таймвеб-бота
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. PM2 автоматически перезапускает бота в случае ошибки и сохраняет логи его работы.

Для начала, установите необходимые пакеты Node.js и npm следующими командами:

sudo apt install nodejs
sudo apt install npm

После чего установите PM2 с помощью команды:

npm install pm2 -g

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

pm2 start main.py --interpreter=python3

Теперь у вас есть два рабочих варианта для запуска бота: через Systemd и с использованием PM2. Каждый из них обладает своими особенностями и подходит для разных сценариев использования. Выберите тот, который соответствует вашим требованиям и предпочтениям.

Остались вопросы - пишите