telegram-bot-vps-deploy
Описание
Автоматизация развертывания Telegram-бота на VPS с помощью Bash-скрипта
Языки
- Shell100%
Автоматизация развертывания Telegram-бота на VPS с помощью Bash-скрипта
Зачем нужна автоматизация?
Развертывание Telegram-бота на VPS может быть трудоемким процессом, особенно если вы работаете с несколькими ботами. Вручную выполнять такие задачи, как копирование файлов, создание виртуального окружения, установка зависимостей и настройка службы systemd, занимает много времени. Автоматизация позволяет значительно упростить этот процесс и избежать ошибок.
Что делает наш скрипт?
- Копирует файлы проекта с локальной машины на VPS, исключая ненужные файлы и папки (например,
,.venv)..idea - Создает виртуальное окружение на VPS.
- Устанавливает зависимости из файла
.requirements.txt - Создает
файл для systemd, который автоматически запускает бота при старте сервера..service - Запускает и активирует службу с помощью команд
.systemctl
Как использовать скрипт?
1. Скачайте файл deploy_bot.sh
Скачайте файл из репозитория или создайте его вручную на своей локальной машине. Файл можно найти по ссылке
2. Сделайте скрипт исполняемым
Откройте терминал и выполните следующую команду:
chmod +x deploy_bot.sh
3. Запустите скрипт
Для развертывания бота выполните команду:
./deploy_bot.sh meme
Здесь — это имя вашего бота. Вы можете заменить его на любое другое имя.
Как работает скрипт?
Скрипт выполняет несколько ключевых шагов:
- Копирование файлов: Используется команда
для копирования файлов с локальной машины на VPS, исключая ненужные файлы и папки.rsync - Создание виртуального окружения: На VPS создается виртуальное окружение с помощью команды
.python3 -m venv venv - Установка зависимостей: После создания виртуального окружения скрипт активирует его и устанавливает зависимости из файла
.requirements.txt - Создание
файла: Скрипт автоматически создает файл службы systemd с динамической подстановкой имени бота..service - Запуск службы: Служба запускается и активируется с помощью команд
.systemctl
Пояснение к ключевым строкам
: Присваивает переменнойBOT_NAME=$1значение первого аргумента, переданного при запуске скрипта. Например, если вы запускаете скрипт командойBOT_NAME, то./deploy_bot.sh memeбудет равен$1. Это имя используется для создания директории бота, настройки службы systemd и других операций.meme: Задает путь к локальной директории проекта на вашей машине. ПеременнаяLOCAL_PROJECT_PATH="/home/gratz/PycharmProjects/${BOT_NAME}"динамически подставляет имя бота, указанное при запуске скрипта. Например, если${BOT_NAME}равенBOT_NAME, то полный путь будетmeme./home/gratz/PycharmProjects/meme: Определяет пользователя VPS, через которого будет выполняться подключение по SSH. В данном случае используется пользовательVPS_USER="root". Если у вас другой пользователь, замените его имя здесь.root: Указывает IP-адрес или доменное имя вашего VPS-сервера. Например,VPS_HOST="your_vps_ip_or_domain"или123.456.789.0. Этот параметр используется для подключения к серверу через SSH.myvps.example.com: Задает путь к директории на VPS, где будут храниться файлы всех ботов. Например, еслиVPS_BOTS_DIR="/home/bots"равенBOT_NAME, то файлы бота будут скопированы вmeme./home/bots/meme: Определяет путь к файлу службы systemd, который будет создан для автоматического запуска бота. Имя файла службы формируется динамически на основе имени бота. Например, еслиSERVICE_FILE="/etc/systemd/system/${BOT_NAME}.service"равенBOT_NAME, то файл службы будет создан какmeme./etc/systemd/system/meme.service
Преимущества скрипта
- Автоматизация всех шагов, что экономит время.
- Гибкость: можно разворачивать несколько ботов, просто указывая их имена.
- Исключение ненужных файлов: скрипт исключает файлы и папки, которые не нужны на сервере.
- Простота использования: достаточно запустить одну команду, чтобы развернуть бота.