Тогда он будет работать круглые сутки, а вы — отдыхать.
Не так давно мы создали телеграм-бота на Python: можно было написать ему свой знак зодиака, а он в ответ давал предсказание о долгой счастливой жизни. Но у бота есть недостаток: он работает, пока запущена программа на нашем компьютере. Если мы её остановим или выключим компьютер, бот тоже перестанет отвечать на сообщения.
Вот что мы сделаем, чтобы бот работал независимо от всего:
- Выберем сервер.
- Подготовим программу для работы на нём.
- Зальём программу на сервер.
- Настроим сервер, чтобы он исполнял программу.
Выбираем сервер
Нам нужен сервер, который умеет работать с Python и запускать файлы программы автоматически. На самом деле он у нас уже есть — на нём крутится сайт mihailmaximov.ru. Если вы всё пропустили — держите подборку:
- что такое домен и как его получить;
- делаем страницу «О себе»;
- как опубликовать свой сайт в интернете.
Тот хостинг, который мы выбрали для проектов, уже умеет запускать Python-файлы. Если вы пользуетесь другим сервисом, то проверьте, умеет ли он то же самое.
БОТ для Discord [ 17 ] | Как поставить бота на БЕСПЛАТНЫЙ хостинг
Готовим программу и отправляем её на сервер
Единственное, что нужно добавить в наш код телеграм-бота, — специальную команду интерпретатору, чтобы он знал, как работать с нашим файлом. Но перед этим нужно проверить, какая версия Python на нём установлена.
Чтобы это узнать, соединимся с сервером по протоколу SSH и спросим у него напрямую. Для этого используем программу Putty, а настройки подключения возьмём в личном кабинете хостинга:

Вставляем их в Putty и подключаемся. Помните, что для безопасности во время ввода пароля курсор стоит на месте, чтобы никто не смог выяснить, сколько символов вы набираете. Когда подключились, вводим команду python3.3 -V — она покажет, есть ли на сервере поддержка этой версии Python:

Теперь добавляем в самое начало нашего файла с программой такую строчку:
В статье о том, как опубликовать сайт в интернете, мы рассказывали, как залить файлы на сервер. Это умение нам сейчас пригодится: сохраняем нашу программу с гороскопом как файл с расширением .py и отправляем его на сервер в папку cgi-bin (то, что лежит в этой папке, никто не увидит):

Настраиваем сервер
Теперь научим сервер понимать, как работать с нашей программой. Для этого в корне сайта находим файл .htaccess и добавляем в него такую строчку:
AddHandler cgi-script .py
Если у вас такого файла нет — создайте его и не забудьте про точку в самом начале названия.
Последнее, что осталось сделать, — настроить права доступа у файла с программой. Находим её среди файлов хостинга и выставляем права 755 или rwxrwxr-x:
ЛУЧШИЕ БЕСПЛАТНЫЕ ХОСТИНГИ ДЛЯ ДИСКОРД БОТОВ // Хостинг для бота на PYTHON и не только…

Теперь с помощью Putty снова подключаемся к серверу и настраиваем рабочее окружение. Это как будто виртуальная песочница, где мы сможем ставить нужные модули для Python, чтобы не мешать остальным пользователям сервера.
Всё, что мы будем делать дальше, относится к хостингу SpaceWeb. Если у вас другой хостинг, то, возможно, часть команд вам не пригодится и Python будет работать напрямую. У нас так не работает, поэтому делаем виртуальное окружение.
В SSH-терминале пишем по очереди такие команды (вместо .thecode можно написать название каталога, которое вам по душе):
virtualenv .thecode source .thecode/bin/activate
Эти две команды создадут виртуальное пространство для запуска Python-файлов.
Теперь установим Python-модуль для работы с Телеграмом:
pip install pytelegrambotapi
Когда установка закончится, пишем такую команду:
nohup python3 /home/t/thecode/osebe/public_html/cgi-bin/telegoroskop.py
/home/t/thecode/osebe/ — это наш путь к папке cgi-bin, а у вас он будет другим. Поменяйте путь на свой и запускайте.
Чтобы программа продолжала работать после того, как мы закроем SSH-клиент, в самом начале пишем команду nohup .
Что дальше
Как запустить Python Telegram бота на VPS

Приветствую всех. Из этой статьи вы узнаете как запустить Telegram бота на виртуальном сервере, и настроить службу для его авто запуска и перезапуска.
Телеграм бот
Виртуальный сервер
Для демонстрации я буду использовать виртуальный сервер от Beget стоимостью 210 рублей в месяц. Вы можете использовать другого хостинг провайдера, или выбрать другую конфигурацию, в зависимости от вашего проекта.

Подключение к виртуальной машине
После того как вы создали VPS у вас откроется панель управления, где вы можете скопировать IP адрес машины и подключаться к ней по SSH.

Для этого можно использовать программу PuTTY или клиент OpenSSH, который входит в состав Windows 10. Для подключения по SSH выполните следующую команду:
И введите пароль который вы указали при создании VPS.
Подготовка сервера
После того как вы подключились к серверу, выполните команды которые обновят списки, и устаревшие пакеты до последней версии.
sudo apt update sudo apt upgrade
Загрузка и запуск бота
Перейдите в каталог home и создайте папку для вашего проекта выполнив команды.
cd /home mkdir ramziv_bot cd ramziv_bot
Зайдите панель управления VPS и откройте Файловый менеджер.

Загрузите файлы вашего проекта на сервер, в моем случаи это только один файл main.py .

Установите зависимости вашего проекта, и запустите бота.
Примечание: Ubuntu 20.04 поставляется с установленной Python 3.8 из коробки, если для вашего проекта нужна другая версия, установите ее или используйте другую версию дистрибутива.
pip install pyTelegramBotAPI python3 main.py
Теперь перейдите в Телеграм и протестируйте работу.

Авто запуск и перезапуск телеграм бота
Создайте systemd службу для бота.
sudo nano /lib/systemd/system/ramziv_bot.service
С конфигурацией:
[Unit] Description=Ramziv — Telegram Bot After=syslog.target After=network.target [Service] Type=simple WorkingDirectory=/home/ramziv_bot/ ExecStart=/usr/bin/python3 /home/ramziv_bot/main.py RestartSec=60 Restart=always [Install] WantedBy=multi-user.target
Нажмите CTRL+S и CTRL+X что бы сохранить и выйти.
Выполните эти две команды что бы запустить службу.
sudo systemctl enable ramziv_bot sudo systemctl start ramziv_bot
Ваш бот запушен. Перейдите в Телеграм и убедитесь в этом.
Ваш бот будет всегда запускаться при старте системы, и перезапускается при возникновении ошибки. Для примера вы можете специально вызвать исключения в одной из функций обернутой обработчиком, и отследить ее в журнале командой:
sudo journalctl -u ramziv_bot.service #Вывод #Jun 13 12:35:31 objmnuqxoa python3[1069]: File «/home/ramziv_bot/main.py», line 7, in send_welcome #Jun 13 12:35:31 objmnuqxoa python3[1069]: number = 1/0 #Jun 13 12:35:31 objmnuqxoa python3[1069]: ZeroDivisionError: division by zero
Источник: ramziv.com
Футбольный телеграм бот на Python (4/4): Запуск на сервере
В четвертой части серии статей по написанию телеграм бота на python, запустим его на сервере. Для разнообразия и правдоподобия я выбрал вариант размещения на VPS, а не Heroku.
Во-первых, Heroku очень редко используют в продакшене. Его платные тарифы сильно выше стоимости аренды сервера.
Во-вторых, крупные кампании дают виртуальные машины бесплатно на год. Этого достаточно, что бы 4 года не платить за работу сервера.
Получение VPS
Как я уже написал, есть возможность получить VPS бесплатно на год. Выбирайте любой:
- AWS Amazon, продукт Amazon EC2.
- Azure Microsoft, продукт Виртуальные машины Linux.
- Google Cloud, продукт Compute Engine.
- Alibaba Cloud, продукт Elastic Compute Service.
Только не активируйте все сразу, это разовое предложение.
Не буду подробно описывать, как развернуть VPS, у этих платформ документации на высоком уровне. Если у вас трудности с английским и переводчиками, начинайте с Azure. У них много русской документации. Скажу только, что крайне желательно выбирать OS Ubuntu 18.04.
Процесс получения бесплатного периода и создание виртуальной машины достаточно тернист. Если вы никогда не делали это ранее, будьте готов потратить 1-2 часа на знакомство с облачными решениями.
Я буду использовать VPS с почасовой оплатой от reg.ru. Это дешевое и простое решение. Для обучения и демонстрации можно запускать на несколько часов по цене от 0,32 ₽/час. А постоянная работа подобного бота будет стоить 215 рублей в месяц.
Подключение к виртуальной машине
Для подключения к VPS нужно знать ip (IPv4), логин (обычно «root») и пароль.
С Linux и MacOS можно подключится из терминала. Введите команду, логин и ip сервера.
Для windows можно скачать терминал Ubuntu. Если такой вариант не подходит, используйте PuTTY (порт: 22). Вот так выглядит консоль. Для подключения требуется ввести «yes» и пароль.

После входа я узнал какая версия python установлена командой python -V . Из коробки стоит 3.6.9, а проект на 3.8.5, нужно обновить.
Подготовка сервера
- Установим необходимую версию python. Внимательно вводите эти команды по очереди, это процесс кастомной установки.
$ sudo apt update $ sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev $ wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz $ tar -xf Python-3.8.5.tgz $ cd Python-3.8.5 $ ./configure —enable-optimizations $ make # ~15 минут $ sudo make altinstall $ cd /home
Немного деталей. Я скачал архив, распаковал и установил python 3.8.5. Будет готов подождать пока выполнится команды make . Введите python3.8 -V и убедитесь, что можно продолжать:
/home# python3.8 -V Python 3.8.5
2. Создадим проект. Установим и создадим виртуально окружение. Выполняйте команды по очереди:
$ python3.8 -m pip install —upgrade pip $ pip install virtualenv $ mkdir fonlinebot $ cd fonlinebot $ virtualenv venv $ source venv/bin/activate $ python -V $ deactivate