telegram-bot-vps-deploy

0

Описание

Автоматизация развертывания Telegram-бота на VPS с помощью Bash-скрипта

Языки

  • Shell100%
год назад
год назад
README.md

Автоматизация развертывания Telegram-бота на VPS с помощью Bash-скрипта

Зачем нужна автоматизация?

Развертывание Telegram-бота на VPS может быть трудоемким процессом, особенно если вы работаете с несколькими ботами. Вручную выполнять такие задачи, как копирование файлов, создание виртуального окружения, установка зависимостей и настройка службы systemd, занимает много времени. Автоматизация позволяет значительно упростить этот процесс и избежать ошибок.

Что делает наш скрипт?

  • Копирует файлы проекта с локальной машины на VPS, исключая ненужные файлы и папки (например,
    .venv
    ,
    .idea
    ).
  • Создает виртуальное окружение на VPS.
  • Устанавливает зависимости из файла
    requirements.txt
    .
  • Создает
    .service
    файл для systemd, который автоматически запускает бота при старте сервера.
  • Запускает и активирует службу с помощью команд
    systemctl
    .

Как использовать скрипт?

1. Скачайте файл
deploy_bot.sh

Скачайте файл

deploy_bot.sh
из репозитория или создайте его вручную на своей локальной машине. Файл можно найти по ссылке

2. Сделайте скрипт исполняемым

Откройте терминал и выполните следующую команду:

chmod +x deploy_bot.sh

3. Запустите скрипт

Для развертывания бота выполните команду:

./deploy_bot.sh meme

Здесь

meme
— это имя вашего бота. Вы можете заменить его на любое другое имя.

Как работает скрипт?

Скрипт выполняет несколько ключевых шагов:

  • Копирование файлов: Используется команда
    rsync
    для копирования файлов с локальной машины на VPS, исключая ненужные файлы и папки.
  • Создание виртуального окружения: На VPS создается виртуальное окружение с помощью команды
    python3 -m venv venv
    .
  • Установка зависимостей: После создания виртуального окружения скрипт активирует его и устанавливает зависимости из файла
    requirements.txt
    .
  • Создание
    .service
    файла:
    Скрипт автоматически создает файл службы systemd с динамической подстановкой имени бота.
  • Запуск службы: Служба запускается и активируется с помощью команд
    systemctl
    .

Пояснение к ключевым строкам

  • BOT_NAME=$1
    : Присваивает переменной
    BOT_NAME
    значение первого аргумента, переданного при запуске скрипта. Например, если вы запускаете скрипт командой
    ./deploy_bot.sh meme
    , то
    $1
    будет равен
    meme
    . Это имя используется для создания директории бота, настройки службы systemd и других операций.
  • LOCAL_PROJECT_PATH="/home/gratz/PycharmProjects/${BOT_NAME}"
    : Задает путь к локальной директории проекта на вашей машине. Переменная
    ${BOT_NAME}
    динамически подставляет имя бота, указанное при запуске скрипта. Например, если
    BOT_NAME
    равен
    meme
    , то полный путь будет
    /home/gratz/PycharmProjects/meme
    .
  • VPS_USER="root"
    : Определяет пользователя VPS, через которого будет выполняться подключение по SSH. В данном случае используется пользователь
    root
    . Если у вас другой пользователь, замените его имя здесь.
  • VPS_HOST="your_vps_ip_or_domain"
    : Указывает IP-адрес или доменное имя вашего VPS-сервера. Например,
    123.456.789.0
    или
    myvps.example.com
    . Этот параметр используется для подключения к серверу через SSH.
  • VPS_BOTS_DIR="/home/bots"
    : Задает путь к директории на VPS, где будут храниться файлы всех ботов. Например, если
    BOT_NAME
    равен
    meme
    , то файлы бота будут скопированы в
    /home/bots/meme
    .
  • SERVICE_FILE="/etc/systemd/system/${BOT_NAME}.service"
    : Определяет путь к файлу службы systemd, который будет создан для автоматического запуска бота. Имя файла службы формируется динамически на основе имени бота. Например, если
    BOT_NAME
    равен
    meme
    , то файл службы будет создан как
    /etc/systemd/system/meme.service
    .

Преимущества скрипта

  • Автоматизация всех шагов, что экономит время.
  • Гибкость: можно разворачивать несколько ботов, просто указывая их имена.
  • Исключение ненужных файлов: скрипт исключает файлы и папки, которые не нужны на сервере.
  • Простота использования: достаточно запустить одну команду, чтобы развернуть бота.