Zašto GCP?
Pri pisanju Telegram botova naišao sam na pitanje kako brzo i besplatno učiniti da bot radi neprekidno. Opcije s Heroku i Pythonanywhere imaju premale limite ako imate više od jednog bota. Stoga sam odlučio iskoristiti GCP. Platforma nudi besplatno 300 USD na godinu + ogromne popuste pri korištenju tih sredstava (do 94%).

Kako hostati vašeg bota?
Korak 1. Registracija na GCP
Idemo na stranicu i pritisnemo Započnite besplatno.

Unesite svoje podatke i karticu. Novac s kartice neće biti terećen ako sami ne aktivirate plaćenu pretplatu.

Korak 2. Kreiranje virtualne mašine
Nakon registracije bit ćete na glavnoj stranici usluge. Potrebno je odabrati u odjeljku Resursi karticu Compute Engine.

Potrebno je stvoriti novu instancu.

Ako ne planirate implementirati BDD na virtualnoj mašini, možete uzeti g1-small, inače preporučujem n1-standard.

Također ćete morati odabrati OS. Odabrao sam Debian GNU/Linux 9 (stretch).

Sve, VM je stvorena. Obično njeno postavljanje traje od 1 do 5 minuta.
Korak 3. Podešavanje virtualne mašine
Možete se povezati putem SSH sa svog računala ili surađivati putem platforme.
Za to kliknite na SSH.
![]()
Otvorit će vam se Linux terminal u novom prozoru.

Sada prelazimo na podešavanje. Prvo upišite naredbu:
sudo apt-get updateza ažuriranje informacija o najnovijim verzijama paketa.
Zatim upišite:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipPython ne morate instalirati, već postoji.
Sada je potrebno instalirati sve potrebne biblioteke. Postoji mala napomena, sve biblioteke potrebno je instalirati dvaput:
pip3 install 'name_of_package'za korištenje putem naredbe python3, i
sudo pip3 install 'name_of_package' za systemd. Ovaj alat će vam pomoći pokrenuti bota i ponovno ga pokretati ako padne.
Najjednostavniji način pokretanja bota putem python3, ali će se isključiti ako se odjavite. Možete koristiti screen, ali bot se neće sam ponovno pokretati. Također možete koristiti crontab s provjerom porta, ali mislim da je ova opcija složenija od systemd.
Korak 4. Upload bota na server
Postoje dva načina za upload vašeg bota. Ako ne znate raditi s Gitom, možete jednostavno arhivirati bota u .tar i prenijeti ga na server:

Nakon toga, raspakirajte ga naredbom:
tar -xvf yourfile.tarSada vaš bot se čuva u mapi s imenom arhiva.
Drugi način preko Gita. Mislim da ne treba objašnjavati kako to učiniti ljudima koji znaju koristiti Git.
Nakon instalacije s naredbom:
sudo apt install gitMožete ga preuzeti na svoju VM.
Nakon toga prelazimo na postavljanje systemd. Za to idemo u njegov direktorij:
cd /etc/systemd/systemI kreiramo datoteku bot.service:
sudo nano bot.serviceUnesite u otvorenom prozoru sljedeće:
[Unit]
Description=Telegram bot 'Ime bota'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/ime vašeg korisnika/naziv mape u kojoj se nalazi bot
ExecStart=/usr/bin/python3 /home/ime vašeg korisnika/naziv mape u kojoj se nalazi bot/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Zatvorite i spremite datoteku. Zatvara se s naredbom Ctrl+X.
Nakon toga unesite naredbe redom:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Ako je sve u redu, vidjet ćete otprilike sljedeće:

Sve, sada vaš bot radi samostalno. Nadam se da će vam moj članak pomoći da hostate svog bota.
P.S.
1. Provjerite svog bota na greške
Pokrenite svog bota i provjerite njegovo funkcioniranje prije nego ga pokrenete preko systemd. Za to idite u mapu s botom i pokrenite ga preko python.
cd
python3 bot.py2. Dodajte u datoteke s py-skriptama kodiranje
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Umetnite na početak datoteke.
3. Greške u systemd
Ako ste provjerili bota na greške i normalno je radio, ali se ne želi pokrenuti u systemd, možete pogledati logove i shvatiti u čemu je problem gledajući datoteku:
sudo nano /var/log/syslogMožete preuzeti tu datoteku i pregledati je na svom računalu preko Notepad++.
4. Ažuriranje bota
Ako želite dodati ili uploadati novu verziju bota, unesite naredbu:
sudo systemctl stop botIzvršite sve potrebne radnje. A zatim unesite sljedeće naredbe da bi ponovno radio:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botIzvor: habr.com
