На главную
- Инструкции для UNIX-систем
- Обзор
- Подключение к серверу по SSH
- Подключение к серверу по SFTP
- Авторизация по SSH-ключу
- Смена или сброс пароля root
- Смена пароля root для MySQL
- Добавление пользователей
- Управление правами доступа
- Защита SSH от подбора пароля. Fail2ban
- Создание дампа базы и восстановление данных
- Установка LAMP на Ubuntu
- Установка phpMyAdmin на Ubuntu с LAMP
- Установка SSL-сертификата на Nginx
- Установка модулей PHP (CentOS)
- Установка модулей PHP (Debian / Ubuntu)
- Настройка параметров PHP (CentOS)
- Настройка параметров PHP (Debian / Ubuntu)
- Настройка перенаправлений
- Настройка перенаправлений (Nginx)
- Настройка FTP в Ubuntu 20.04
- Оптимизация MySQL с помощью MySQLTuner
- Сканирование с помощью ClamAV
- Управление службами в systemd
- Логирование в systemd
- Аудит системных событий
- Добавление дополнительного IP
- Настройка статического IP
- Добавление и удаление диска
- Изменение размера диска
- Монтирование резервных копий
- Создание swap, изменение его размера
- Установка и удаление программ. Менеджеры пакетов
- Установка графической оболочки XFCE на Ubuntu
- Настройка iptables
- Настройка OpenVPN
- Установка произвольной ОС на сервер
- Удаленный доступ к MySQL
- Установка QEMU-агента
- Установка Zabbix-агента
- Установка и работа с PostgreSQL
- Установка почтового сервера iRedMail
- Настройка почтового сервера iRedMail
- Установка SSL на сервер с Keitaro
- Запуск Wordpress на сервере c Ubuntu
- Запуск бота в фоновом режиме
- Установка сертификатов Минцифры
- Подготовка образа для создания облачного сервера
- Создание и развертывание образа с помощью утилиты dd
- Установка Minecraft на CentOS 7
- Запуск сервера Minecraft
- Запуск сервера с CS 1.6 и EngineGP
- Запуск сервера RageMP
- Настройка Outline VPN
- Диагностика и решение проблем
- Инструкции для Windows
- Панели управления
Запуск бота в фоновом режиме
Вы можете запустить на сервере бот, написанный на 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