Zakaj GCP?
Ko sem pisal telegram bote, sem se soočil s vprašanjem, kako hitro in brezplačno zagotoviti neprekinjeno delovanje bota. Možnosti s Heroku in Pythonanywhere imajo prenizke omejitve, če imate več kot enega bota. Zato sem se odločil za GCP. Platforma ponuja 300 $ brezplačno za eno leto + ogromne popuste pri uporabi teh sredstev (do 94%).

Kako gostiti vašega bota?
Korak 1. Registracija na GCP
Pojdite na spletno stran in kliknemo Začnite brezplačno.

Vnesite svoje podatke in kreditno kartico. Denar z kartice ne bo odtegnjen, razen če sami ne aktivirate plačljive naročnine.

Korak 2. Ustvarjanje virtualnega strežnika
Po registraciji boste na glavni strani storitve. Izbrati morate zavihek Compute Engine v razdelku Viri.

Ustvariti morate nov primer.

Če ne boste nameščali baze podatkov na virtualni napravi, lahko izberete g1-small, sicer priporočam n1-standard.

Izbrati morate tudi operacijski sistem. Izbral sem Debian GNU/Linux 9 (stretch).

Vse, VM je ustvarjena. Običajno njeno ustvarjanje traja od 1 do 5 minut.
Korak 3. Nastavitev virtualnega strežnika
Povežete se lahko prek SSH iz svojega računalnika ali pa interagirate prek platforme.
Za to kliknite na SSH.
![]()
Odprlo se vam bo Linux terminal v novem oknu.

Zdaj se lotimo nastavitve. Najprej vnesite ukaz:
sudo apt-get updateza posodobitev informacij o najnovejših različicah paketov.
Nato vnesite:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipSama knjižnica Python ni potrebna, že je prisotna.
Zdaj je treba namestiti vse potrebne knjižnice. Obstaja majhna posebnost, vse knjižnice je treba namestiti dvakrat:
pip3 install ‘ime_paketa’za uporabo prek ukaza python3, in
sudo pip3 install ‘ime_paketa’ za systemd. To orodje vam bo pomagalo zagnati bota in ga znova pognati, če pade.
Najenostavnejši način za zagon bota je prek python3, a se bo izklopil, če se boste vi odklopili. Lahko uporabite screen, a bot se ne bo sam znova zagnal. Prav tako lahko uporabite crontab s preverjanjem porta, a se mi zdi, da je ta možnost bolj zapletena kot systemd.
Korak 4. Naložite bota na strežnik
Obstajata dva načina za prenos vašega bota. Če se ne razumete z Gitom, lahko bota preprosto arhivirate v .tar in ga naložite na strežnik:

Nato ga razpakiramo s ukazom:
tar -xvf yourfile.tarZdaj vaš bot shranjen v mapi z imenom arhiva.
Drugi način je preko Gita. Mislim, da ni potrebno razlagati, kako to narediti ljudem, ki ga znajo uporabljati.
Po namestitvi z ukazom:
sudo apt install gitLahko ga klonirate na svojo VM.
Nato preidite k nastavitvi systemd. Zato gremo v njegovo imenik:
cd /etc/systemd/systemIn ustvarimo datoteko bot.service:
sudo nano bot.serviceVpišite v odprto okno naslednje:
[Unit]
Description=Telegram bot 'Ime bota'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/ime vašega uporabnika/ime mape, kjer se nahaja bot
ExecStart=/usr/bin/python3 /home/ime vašega uporabnika/ime mape, kjer se nahaja bot/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Zaprite in shranite datoteko. Zapre se z ukazom Ctrl+X.
Nato vnesite ukaze zaporedno:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Če bo vse v redu, boste videli približno naslednje:

Vse, zdaj vaš bot deluje samostojno. Upam, da vam bo moj članek pomagal gostovati vašega bota.
P.S.
1. Preverite svojega bota na napake
Zaženite svojega bota in preverite njegovo delovanje, preden ga zaženete preko systemd. Zato preidite v mapo z botom in ga zaženite preko python.
cd
python3 bot.py2. Dodajte v datoteke s py-skripti kodiranje
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Vstavite na začetek datoteke.
3. Napake v systemd
Če ste svojega bota preverili na napake in je normalno delal, vendar se noče zagnati v systemd, si lahko ogledate dnevnike in ugotovite, kje je napaka, tako da pregledate datoteko:
sudo nano /var/log/syslogLahko prenesete to datoteko in jo pregledate na svojem računalniku preko Notepad++.
4. Posodobitev bota
Če želite dodati ali naložiti novo različico bota, vnesite ukaz:
sudo systemctl stop botOpravite vse potrebne manipulacije. Nato vnesite naslednje ukaze, da ponovno zažene:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botIzvor: habr.com
