12/01/2019

После того, как Ваш бот написан, пришло время его развернуть на сервере. Это позволит работать ему в постоянном режиме, вне зависимости от работы компьютера разработчика. Для целей хостинга рекомендую использовать небольшой 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«, которая создаст необходимые ссылки в системе, чтобы скрипт срабатывал для запуская и выключения нашего бота.
На этом можно сказать, что вопрос закрыт. Добавлю пару замечаний:
- Способ для запуска скриптов универсальный и может быть использован для прочих ваших приложений на Python. По большому счету, язык программирования не имеет большой разницы. Можно использовать и Ruby, и PHP, и Haskel, и т.д.
- Контролировать работу программы, написаной на Python, в операционной системе Linux есть множество способов. Использование start-stop-daemon позволяет это делать элегантно и эффективно.