Защо GCP?
При написване на телеграм ботов се сблъсквах с въпроса как бързо и безплатно да направя така, че ботът да работи постоянно. Вариантите с 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Можете да го клонирате на вашия VM.
След това преминаваме към настройката на systemd. За целта влизаме в директорията му:
cd /etc/systemd/systemИ създаваме файла bot.service:
sudo nano bot.serviceВъведете следното в отвореното прозорче:
[Unit]
Description=Telegram bot 'Име на бота'
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
