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 позволяет это делать элегантно и эффективно.