Как развернуть Телеграмм бота на сервере

В этом уроке по программированию с нуля я покажу, как запустить на сервере Телеграм-бота, использующего API ChatGPT, и как настроить специальный сервис «демон» (daemon) для его бесперебойной работы. Урок будет полезен, если вы хотите сделать пет-проект или MVP своими руками, умеете писать Телеграм-боты на Python, но не знаете, как работать с сервером.

1831 просмотров

  1. Постановка задачи — зачем что-то выкладывать на сервер?
  2. Арендуем виртуальный выделенный сервер
  3. Пишем программу (Телеграм-бота с ChatGPT), которую будем запускать на сервере
  4. Эмулируем Linux, разбираемся в командах
  5. Устанавливаем на сервер Python, pip и модули
  6. Запускаем программу на сервере, создаем демона

Меня очень вдохновила реакция на предыдущую статью «Обучение программированию с нуля. Вы напишете MVP для стартапа на Python за 1 день. OpenAI API + Google API». Я решил поднять планку контента и добавить видео.

За 10 минут — выгрузка (деплой) телеграм-бота на хостинг и его запуск.

Бот из данного урока:

Примеры следующих тем:

  • Подключаем базу данных.
  • Используем GIT.
  • Улучшаем код по рекомендациям профессиональных программистов.
  • Доработка программы Linguo Raccoon — выбор языка, выбор количества слов в словаре, улучшение интерфейса через inline-кнопки.
  • Добавляем новые тесты.
  • Реализация таймера для отправки сообщений по расписанию.
  • Генерация аудио и распознавание голосовых сообщений.
  • Обработка word chunks и идиом.

Пишите, какая интересней, и я ее приоритизирую.

Показать ещё
18 комментариев
Написать комментарий.

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

Почитайте про systemctl: всего-то надо, что создать один файл /etc/systemd/system/mysuperbot и выполнить одну команду systemctl start mysuperbot

Кстати именно так запускается в режиме демона мой бот, который делает стикеры из фотографий с помощью Stable Diffusion: https://t.me/magic_sticker_bot?start=refVC

Развернуть ветку

Бот хороший, спасибо!

Развернуть ветку

В чем минусы использования pm2 для этой задачи?

А в файле systemctl что нужно прописать? Его же не просто нужно создать, его нужно заполнить. По количеству действий ваш способ будет более удобный и простой?

Еще по теме:  Приложение для клонирования Телеграм

Развернуть ветку

Вообще, хорошая идея, спасибо.
Добавлю как альтернативный способ. Пусть люди сами решают, что удобнее.

Развернуть ветку

Файл конфигурации буквально в 7 строк, делается копипастом)

There are a number of ways you can run your program as a background service in linux such as…
Развернуть ветку

Ну вот мне самому удобней использовать pm2. Для новичков вот такая история будет казаться замороченной, имхо:

[Unit]

Деплой Telegram бота на Python | PythonAnywhere


Description=My test service
After=multi-user.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /home//test.py
[Install]
WantedBy=multi-user.target

Развернуть ветку

На самом деле pm2 ведь тоже демон, и тоже скорее всего запускается через systemctl 😉

Развернуть ветку

Да, но сам набор команд для юзера (на мой взгляд) проще 🙂

Источник: vc.ru

Как запустить Python Telegram бота на VPS

Как запустить Python Telegram бота на VPS

Приветствую всех. Из этой статьи вы узнаете как запустить Telegram бота на виртуальном сервере, и настроить службу для его авто запуска и перезапуска.

Телеграм бот

Виртуальный сервер

Для демонстрации я буду использовать виртуальный сервер от Beget стоимостью 210 рублей в месяц. Вы можете использовать другого хостинг провайдера, или выбрать другую конфигурацию, в зависимости от вашего проекта.

Как запустить Python Telegram бота на VPS

Подключение к виртуальной машине

После того как вы создали VPS у вас откроется панель управления, где вы можете скопировать IP адрес машины и подключаться к ней по SSH.

Как запустить Python Telegram бота на VPS

Для этого можно использовать программу PuTTY или клиент OpenSSH, который входит в состав Windows 10. Для подключения по SSH выполните следующую команду:

И введите пароль который вы указали при создании VPS.

Подготовка сервера

После того как вы подключились к серверу, выполните команды которые обновят списки, и устаревшие пакеты до последней версии.

sudo apt update sudo apt upgrade

Загрузка и запуск бота

Перейдите в каталог home и создайте папку для вашего проекта выполнив команды.

cd /home mkdir ramziv_bot cd ramziv_bot

Зайдите панель управления VPS и откройте Файловый менеджер.

Как запустить Python Telegram бота на VPS

Загрузите файлы вашего проекта на сервер, в моем случаи это только один файл main.py .

Как запустить Python Telegram бота на VPS

Установите зависимости вашего проекта, и запустите бота.

Примечание: Ubuntu 20.04 поставляется с установленной Python 3.8 из коробки, если для вашего проекта нужна другая версия, установите ее или используйте другую версию дистрибутива.

Еще по теме:  Всплывающее окно Телеграмм на редмм

pip install pyTelegramBotAPI python3 main.py

Теперь перейдите в Телеграм и протестируйте работу.

Как запустить Python Telegram бота на VPS

Авто запуск и перезапуск телеграм бота

Создайте systemd службу для бота.

sudo nano /lib/systemd/system/ramziv_bot.service
С конфигурацией:
[Unit] Description=Ramziv — Telegram Bot After=syslog.target After=network.target [Service] Type=simple WorkingDirectory=/home/ramziv_bot/ ExecStart=/usr/bin/python3 /home/ramziv_bot/main.py RestartSec=60 Restart=always [Install] WantedBy=multi-user.target
Нажмите CTRL+S и CTRL+X что бы сохранить и выйти.

Выполните эти две команды что бы запустить службу.

sudo systemctl enable ramziv_bot sudo systemctl start ramziv_bot

Ваш бот запушен. Перейдите в Телеграм и убедитесь в этом.

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

sudo journalctl -u ramziv_bot.service #Вывод #Jun 13 12:35:31 objmnuqxoa python3[1069]: File «/home/ramziv_bot/main.py», line 7, in send_welcome #Jun 13 12:35:31 objmnuqxoa python3[1069]: number = 1/0 #Jun 13 12:35:31 objmnuqxoa python3[1069]: ZeroDivisionError: division by zero

Источник: ramziv.com

Деплой Python приложения на сервер и управление Supervisor

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

Около трех лет назад, когда я занимался веб-разработкой, арендовал хостинг у SprintHost. У них была адекватная техническая поддержка и хорошие тарифы, поэтому сейчас остановил свой выбор на SprintBox.

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

Если нет опыта работы с терминалом Linux, вот команды, которые будут нужны сразу
Перемещение в терминале осуществляется командой cd имя_папки
Перейти назад cd ..
Посмотреть список файлов в текущей папке ls
Выйти из текстового редактора/консоли можно нажав ctrl+z или ctrl+x

Перед началом работы необходимо обновить пакетный менеджер
# sudo apt update
Для того, чтобы затянуть проект на сервер из github, нужно установить git
# apt install git
Создадим нового пользователя
# adduser tgbot
Перейдем в папку пользователя
# cd home/tgbot
Загрузим проект с github, если репозиторий приватный, то нужно будет ввести имя пользователя и пароль
# git clone https://github.com/mihailaleksseev/tg_date_picker_bot.git

Еще по теме:  Где посмотреть бесплатно как тебя записал в ТГ

После скачивания проекта на сервер нужно поставить необходимые зависимости с помощью пакетного менеджера pip, выполнив команды
# pip install имя_зависимости
Для того, чтобы узнать какие зависимости необходимо поставить, необходимо на компьютере разработчика выполнить команду
# pip list

Наконец запустим проект
Для этого нужно перейти в его корень
# cd tg_date_picker_bot
И запустить файл Python
# python3 main.py

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

Установим Supervisor
# apt install supervisor
После установки необходимо в конфигурации указать настройки для нашего приложения.
Перейдем в папку с конфигурациями
# cd /etc/supervisor
Откроем конфигурацию с помощью текстового редактора nano, он несколько проще, чем vim
nano /etc/supervisor/supervisord.conf
Из последней строчки можно заметить, что в основную конфигурацию подключаются все файлы конфигураций, расположенные в папке conf.d

Добавим нашу конфигурацию туда
Перейдем в папку conf.d и создадим там новый конфигурационный файл
# cd conf.d
# touch tgBot.cond
Теперь пропишем в нем конфигурацию бота

command — команда, отвечающая за запуск
directory–адрес папки, в которой находится приложение
autostart–запуск приложения после включения сервера
autorestart–перезапуск приложения, после того, как его работа завершилась с ошибкой

Для сохранения файла нужно нажать ctrl+o и ctrl+x для выхода

Теперь, чтобы supervisor считал обновленные настройки, выполним команду
# supervisorctl reread
И для запуска всех сконфигурированных процессов команду
# supervisorctl update

Можно зайти в инструменты командной строки супервизора командой
# supervisorctl
И посмотреть статус приложения
# status tgbot
Перезапустить приложение можно командой
# restart tgbot

Для выхода из командной строки нужно нажать ctrl+z

Логи приложений можно найти в директории /var/log/supervisor
Супервизор хранит файл с ошибками и логами приложения
Удобнее их смотреть командой tail. С параметрами, приведенными ниже, она выводит в режиме реального времени 30 строк файла с логами в консоль, по мере их поступления
# tail -f -n 30 tgbot-stderr — -supervisor-kq121.log

P.S. Данная статья описывает наиболее простую конфигурацию и рассчитана на начинающих. Не стоит считать ее полноценной инструкцией для настройки продового окружения.

Источник: mikhailaleksseev.medium.com

Рейтинг
( Пока оценок нет )
Загрузка ...