Блог Синявского
  • Разделы
  • Метки
  • Все статьи

Деплой телеграм бота

1

Деплой телеграм бота

Для запуска телеграм бота на сервере я использую обычную связку это supervisor и бот на языке python c использование модуля pyTelegramBotApi. Это решение относится как к боту использующему бесконечный цикл самого модуля. так и скрипту написанному с использованием фреймворков tornado, flask или twisted, а так же простых python скриптов.

Установим необходимые пакеты

Установим необходимые пакеты

sudo apt-get install git-core python-virtualenv gcc python-dev supervisor

Создадим рабочую директорию, склонируем проект из git репозитория, создадим и активируем виртуальное окружение

$ mkdir /web/bot/logs/ -P
$ cd /web/bot
$ virtualenv -ppython2.7 env
$ source env/bin/activate
(env)$ git clone ...bot.git project
(env)$ cd project
(env)$ pip install -r requirements.txt

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

cat requirements.txt
pyTelegramBotAPI
tornado

Пробуем запустить программу

(env)$ python telegram_bot.py

Для того, чтобы не возникало ошибки SNIMissingWarning, InsecurePlatformWarning

$ sudo apt-get install libffi-dev libssl-dev
(env) pip install pyopenssl ndg-httpsclient pyasn1

Создадим скрипт запуска и сконфигурируем supervisor

Создадим скрипт запуска

$ nano /etc/supervisor/telegram_bot.sh
#!/bin/bash
cd /web/bot/project
source ../env/bin/activate
/web/bot/env/bin/python telegram_bot.py

Добавим права для запуска и проверим

$ chmod +x /etc/supervisor/telegram_bot.sh
$ /etc/supervisor/telegram_bot.sh

Если все работает перейдем к конфигурированию супервизора

$ nano /etc/supervisor/conf.d/telegram_bot.conf
[program:telegram_bot]
command=/etc/supervisor/telegram_bot.sh
user=www-data
stdout_logfile=/web/bot/logs/supervisor.log
stderr_logfile=/web/bot/logs/supervisor.log
stopsignal=TERM
autostart=true
autorestart=true
startsecs=10

Программа запускается под пользователем www-data имеет смысл проверить работу под этим пользователем. Скорее всего необходимо будет этому пользователю добавить shell. Перезагружаем супервизор, смотрим загруженные процессы. Бот должен поменять статус на online.

$ sudo service supervisor restart
$ supervisorctl

Ну вот и всё. Ничего сложного. Третья статья из серии про телеграм боты:

  1. Телеграм бот, tornado и очереди
  2. Телеграм оповещения в приватных каналах

На самом деле хочется еще попробовать бот на twisted. Много наработок по twisted в частности по асинхронному программированию вцелом.



  • ← сюда
  • туда →

comments powered by Disqus

Опубликовано

31.03.2017

Обновление

24.08.2017

Категории

python

Тэги

  • python 30
  • supervisor 2
  • telegram 3
  • tornado 3

Всегда на связи

  • Блог Синявского - Ничего не переносить на завтра, это тоже проблема с прокастинацией?
  • © Алексей Синявский, по лицензии CC BY-SA если не указано иное.
  • С использованием Pelican. Тема: Elegant от Talha Mansoor