Защо GCP?
При създаване на Telegram ботове се сблъсках с въпроса как бързо и безплатно да направя така, че ботът да работи постоянно. Опциите с Heroku и Pythonanywhere имат твърде малки лимити, ако имате повече от един бот. Затова реших да използвам GCP. Платформата предлага безплатно 300 $ за година + огромни отстъпки при ползването на тези средства (до 94%).

Как да хостнете вашия бот?
Стъпка 1. Регистрация в GCP
Преминаваме на сайта и натискаме Започнете безплатно.

Въвеждаме нашите данни и карта. Парите от картата няма да се кредитират, ако сами не активирате платния абонамент.

Стъпка 2. Създаване на виртуална машина
След регистрацията ще се окажете на главната страница на услугата. Необходимо е да изберете в раздела Ресурси таба Compute Engine.

Необходимо е да създадете нов екземпляр.

Ако не планирате да разгръщате БД на виртуална машина, можете да вземете g1-small, в противен случай препоръчвам n1-standard.

Трябва да изберете и ОС. Аз избрах Debian GNU/Linux 9 (stretch).

Всичко, ВМ е създадена. Обичайното й разгръщане отнема от 1 до 5 минути.
Стъпка 3. Настройка на виртуалната машина
Можете да се свържете по SSH от вашия ПК или да взаимодействате през платформата.
За целта натиснете на SSH.
![]()
Ще се отвори терминал Linux в нов прозорец.

Сега да преминем към настройката. Първо въвеждаме командата:
sudo apt-get updateза обновление на информацията за най-новите версии на пакетите.
След това въвеждаме:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipPython не е нужно да се инсталира, той вече е наличен.
Сега е необходимо да инсталирате всички необходими библиотеки. Има малък нюанс, всички библиотеки трябва да се инсталират два пъти:
pip3 install ‘name_of_package’за използване през командата python3, и
sudo pip3 install ‘name_of_package’ за systemd. Тази утилита ще ви помогне да стартирате бота и да го перезапускате, ако той се срути.
Най-простият начин за стартиране на бота е чрез python3, но той ще се изключва, ако се изключите. Можете да използвате screen, но ботът няма да се перезапуска сам. Можете също да използвате crontab с проверка на порта, но ми се струва, че този вариант е по-сложен от systemd.
Стъпка 4. Качване на бота на сървера
Има два начина да качите вашия бот. Ако не сте запознати с Git, можете просто да архивирате бота в .tar и да го качите на сървера:

След това разархивираме с командата:
tar -xvf yourfile.tarСега вашият бот се съхранява в папка с името на архива.
Вторият начин е чрез Git. Не мисля, че е необходимо да обяснявам как да го направите на хора, които знаят как да го използват.
След инсталацията с командата:
sudo apt install gitМожете да го клонирате на вашата виртуална машина.
След това преминете към конфигурирането на systemd. За целта отидете в неговата директория:
cd /etc/systemd/systemИ създайте файл bot.service:
sudo nano bot.serviceВписвате в отворилото се прозорче следното:
[Unit]
Description=Telegram бот 'Име на бота'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/името на вашия потребител/името на папката, в която се намира ботът
ExecStart=/usr/bin/python3 /home/името на вашия потребител/името на папката, в която се намира ботът/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Затворете и запазете файла. Затваря се с командата Ctrl+X.
След това въведете командите последователно:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Ако всичко е наред, ще видите нещо подобно:

Всичко, сега вашият бот работи самостоятелно. Надявам се моята статия да ви помогне да хостнете вашия бот.
P.S.
1. Проверете вашия бот за грешки
Стартирайте вашия бот и проверете работата му, преди да го стартирате през systemd. За целта отидете в папката с бота и го стартирайте с python.
cd
python3 bot.py2. Добавете кодировката в файловете с py-скриптове
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Поставете в началото на файла.
3. Грешки в systemd
Ако сте проверили бота за грешки и той е работил нормално, но не иска да се стартира в systemd, можете да прегледате логовете и да разберете в какво е грешката, като прегледате файла:
sudo nano /var/log/syslogМожете да изтеглите този файл и да го прегледате на вашия компютър с Notepad++.
4. Актуализация на бота
Ако искате да добавите или качите нова версия на бота, въведете командата:
sudo systemctl stop botИзпълнете всички необходими манипулации. След това въведете следните команди, за да заработи отново:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botИзточник: habr.com
