Skip to content
Dmitriy Q edited this page Jan 25, 2024 · 2 revisions

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

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

Подготовка

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

python3 -m venv venv

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

source ./venv/bin/activate

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

pip install -r requirements.txt

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

Проверьте версию Python - для библиотеки telebot требуется не ниже 3.7:

python3 -V

Systemd

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

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

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

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

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

[Service]
Type=idle
Restart=always
RestartSec=3
User=root
WorkingDirectory=/usr/local/bot
ExecStart=/usr/local/bot/venv/bin/python3.7 /usr/local/bot/bot.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

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

Clone this wiki locally