Деплой телеграм бота
Для запуска телеграм бота на сервере я использую обычную связку это 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
Ну вот и всё. Ничего сложного. Третья статья из серии про телеграм боты:
На самом деле хочется еще попробовать бот на twisted. Много наработок по twisted в частности по асинхронному программированию вцелом.