Miks GCP?
Kui ma kirjutasin Telegrami bote, tekkis mul küsimus, kuidas kiiresti ja tasuta tagada, et bot töötaks pidevalt. Heroku ja Pythonanywhere variandid on üsna madalate limiitidega, kui teil on rohkem kui üks bot. Seetõttu otsustasin kasutada GCP-d. Platvorm pakub tasuta 300 dollarit aastas + tohutud soodustused nende rahade kasutamisel (kuni 94%).

Kuidas hostida oma boti?
Samm 1. Registreerimine GCP-s
Liigume veebilehele ja vajutame Alustage tasuta.

Sisestage oma andmed ja kaardirekviseer. Raha teie kaardilt ei arvestata, kui te ise ei aktiveeri tasulist tellimust.

Samm 2. Looge virtuaalne masin
Pärast registreerimist jõuate teenuse avalehele. peate valima Ressursside jaotises Compute Engine vahekaart.

On vajalik luua uus eksemplar.

Kui te ei kavatse andmebaasi käitada virtuaalses masinas, siis võite valida g1-small, vastasel juhul soovitan n1-standard.

On vajalik valida ka opsüsteem. Mina valisin Debian GNU/Linux 9 (stretch).

Kõik, VM on loodud. Tavaline paigaldusaeg on 1 kuni 5 minutit.
Samm 3. Virtuaalse masina seadistamine
Saate ühendust luua SSH kaudu oma arvutist või suhelda platvormi kaudu.
Selleks klõpsake SSH-l.
![]()
Teie ees avanevad Linuxi terminal uues aknas.

Nüüd liigume seadistamise juurde. Esiteks sisestage käsk:
sudo apt-get updatepakettide uusimate versioonide teabe värskendamiseks.
Seejärel sisestage:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipPythonit installima ei pea, see on juba olemas.
Nüüd on vajalik installida kõik vajalikud raamatukogud. On üks väike nüanss, kõik raamatukogud tuleb installida kaks korda:
pip3 install ‘name_of_package’python3 käskluse kaudu kasutamiseks, ja
sudo pip3 install ‘name_of_package’ systemd jaoks. See utiliit aitab teil boti käivitada ja selle uuesti käivitada, kui see kokku kukkub.
Lihtsaim viis boti käivitamiseks on python3 kaudu, kuid see peatub, kui te logite välja. Võite kasutada screeni, kuid bot ei käivitu uuesti iseseisvalt. Samuti võite kasutada crontabi koos pordi kontrollimisega, kuid mulle tundub, et see variant on keerulisem kui systemd.
Samm 4. Laadime boti serverisse
On kaks viisi, kuidas oma boti serverisse laadida. Kui te ei tunne Gitit, võite oma boti lihtsalt .tar formaadis arhiveerida ja serverisse laadida:

Pärast seda dekompressime selle käsuga:
tar -xvf yourfile.tarNüüd asub teie bot arhivi nimega kaustas.
Teine meetod Git'i kaudu. Ei tasu selgitada, kuidas seda teha inimestele, kes oskavad seda kasutada.
Pärast installimist käivitage see käsuga:
sudo apt install gitSaate selle endale VM-i kloonida.
Pärast seda jätkame systemd seadistamisega. Selleks liikume selle kausta:
cd /etc/systemd/systemJa loome faili bot.service:
sudo nano bot.serviceKopeerige avatud aknasse järgmine:
[Unit]
Description=Telegram bot 'Bot's Name'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/teie kasutajanimi/kausta nimi, kus bot asub
ExecStart=/usr/bin/python3 /home/teie kasutajanimi/kausta nimi, kus bot asub/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Sulgege ja salvestage fail. Sulgemiseks kasutage käsku Ctrl+X.
Pärast seda sisestage käsud ükshaaval:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Kui kõik on hästi, näete umbkaudu järgmist:

Kõik, nüüd töötab teie bot iseseisvalt. Loodan, et minu artikkel aitab teil oma boti hostida.
P.S.
1. Kontrollige oma boti vigu
Käivitage oma bot ja kontrollige selle tööd enne, kui käivitate selle läbi systemd. Selleks minge boti kausta ja käivitage see pythoniga.
cd
python3 bot.py2. Lisage py-skriptide failidesse kodeering
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Kopeerige faili algusesse.
3. Vead systemd-s
Kui olete boti vigade osas kontrollinud ja see töötas normaalselt, kuid see ei soovi systemd-s käivituda, siis saate vaadata logisid ja mõista, mis on vale, vaadates faili:
sudo nano /var/log/syslogSaate selle faili alla laadida ja vaadata oma arvutis Notepad++-s.
4. Boti uuendamine
Kui soovite botile uusi funktsioone lisada või uue versiooni üles laadida, sisestage käsk:
sudo systemctl stop botTehke kõik vajalikud toimingud. Seejärel sisestage järgmised käsud, et see uuesti töötaks:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botAllikas: habr.com
