Разворачивание telegram бота на сервере

12/01/2019

telegram_bot

После того, как Ваш бот написан, пришло время его развернуть на сервере. Это позволит работать ему в постоянном режиме, вне зависимости от работы компьютера разработчика. Для целей хостинга рекомендую использовать небольшой VPS сервер на базе операционной системы Linux. Аренда обойдется, примерно, 5-7 долларов в месяц. Как пример, того что можно использовать — VPS сервера на ihor.ru Подобных хостеров в мири сотни, даже, наверное, тысячи. Небольшой поиск в Интернет поисковиках, позволит Вам подобрать нужный исходя из конкретных требований.

В одной из предыдущих статей я писал о базовых элементах при создании telegram бота. В этой статье будем исходить из того, что у Вас уже есть готовый telegram бот. Базовую установку сервера мы в данной статье пропустим. Материалов по этой тематике полно в Интернете. Тут я покажу один из лучших способов как запускать и контролировать работу telegram бота в командной строке Linux.

Ниже привожу скрипт, который работает в ОС Ubuntu Linux 16.04. Различия с другими дистрибутивами Linux минимальны. Если Вы фанаты RedHat/CentOS, то, я думаю, сможете приспособить скрипт и под эти дистрибутивы. Мы будем использовать скрипт в директории /etc/init.d. Эта директория используется для хранения скриптов старта и запуска программ.

#!/bin/sh
### BEGIN INIT INFO
# Provides:          telegram_bot
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6 
# X-Interactive:     true
# Short-Description: telegram_bot
# Description:       Start the telegram_bot
#  This script will start the telegram_bot.
### END INIT INFO

DIR=/path_to_telegram_bot/folder/
DAEMON=$DIR/telegram_bot.py
DAEMON_NAME=telegram_bot

DAEMON_OPTS=""

#nonroot user for telegram bot script
DAEMON_USER=telegramuser

PIDFILE=/var/run/$DAEMON_NAME.pid

. /lib/lsb/init-functions

do_start () {
    log_daemon_msg "Starting system $DAEMON_NAME daemon"
    start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON -- $DAEMON_OPTS
    log_end_msg $?
}
do_stop () {
    log_daemon_msg "Stopping system $DAEMON_NAME daemon"
    start-stop-daemon --stop --pidfile $PIDFILE --retry 10
    log_end_msg $?
}
case "$1" in

    start|stop)
        do_${1}
        ;;

    restart|reload|force-reload)
        do_stop
        do_start                     
        ;;

    status)
        status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?
        ;;

    *)
        echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"
        exit 1
        ;;

esac
exit 0               

После того, как скрипт с нужными параметрами будет создан, необходимо сделать его исполняемым с помощью команды «#chmod +x /etc/init.d/telegram_bot«. Теперь скрипт может выолняться в операционной системе Linux. Но этого еще мало. Необходимо выполнить команду «#update-rc.d telegram_bot defaults«, которая создаст необходимые ссылки в системе, чтобы скрипт срабатывал для запуская и выключения нашего бота.

На этом можно сказать, что вопрос закрыт. Добавлю пару замечаний:

  1. Способ для запуска скриптов универсальный и может быть использован для прочих ваших приложений на Python. По большому счету, язык программирования не имеет большой разницы. Можно использовать и Ruby, и PHP, и Haskel, и т.д.
  2. Контролировать работу программы, написаной на Python, в операционной системе Linux есть множество способов. Использование start-stop-daemon позволяет это делать элегантно и эффективно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *