De ce GCP?
Când am scris boți pentru Telegram, m-am confruntat cu întrebarea cum să fac botul să funcționeze constant, rapid și gratuit. Opțiunile cu Heroku și Pythonanywhere au limite prea mici dacă aveți mai mult de un bot. De aceea, am decis să folosesc GCP. Platforma oferă gratuit 300$ pentru un an + discounturi uriașe la utilizarea acestor fonduri (până la 94%).

Cum să găzduiți botul vostru?
Pasul 1. Înregistrare pe GCP
Accesăm site-ul și apăsăm Începeți gratuit.

Introduceți datele și cardul. Banii de pe card nu vor fi debitați dacă nu activați voi înșivă un abonament plătit.

Pasul 2. Crearea unei mașini virtuale
După înregistrare, veți ajunge pe pagina principală a serviciului. Trebuie să selectați în secțiunea Resurse tab-ul Compute Engine.

Este necesar să creați un nou exemplar.

Dacă nu veți dezvolta o bază de date pe mașina virtuală, atunci puteți alege g1-small, altfel vă recomand n1-standard.

Va trebui să alegeți și un sistem de operare. Eu am ales Debian GNU/Linux 9 (stretch).

Gata, VM-ul a fost creat. De obicei, desfășurarea ei durează între 1 și 5 minute.
Pasul 3. Configurarea mașinii virtuale
Puteți să vă conectați prin SSH de pe PC-ul vostru sau să interacționați prin platformă.
Pentru asta, apăsați pe SSH.
![]()
Se va deschide un terminal Linux într-o fereastră nouă.

Acum să trecem la configurare. Începem prin a introduce comanda:
sudo apt-get updatepentru a actualiza informațiile despre cele mai recente versiuni ale pachetelor.
După, introduceți:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipPython în sine nu trebuie instalat, acesta este deja prezent.
Acum este necesar să instalați toate bibliotecile necesare. Există o mică nuanță, toate bibliotecile trebuie instalate de două ori:
pip3 install ‘name_of_package’pentru a fi utilizate prin comanda python3, și
sudo pip3 install ‘name_of_package’ pentru systemd. Această utilitară vă va ajuta să rulați botul și să-l reporniți dacă acesta se oprește.
Cel mai simplu mod de a rula botul este prin python3, dar acesta se va opri dacă vă deconectați. Puteți folosi screen, dar botul nu se va reintra singur. De asemenea, puteți folosi crontab cu verificarea portului, dar consider că această opțiune este mai complicată decât systemd.
Pasul 4. Încărcarea botului pe server
Există două moduri de a încărca botul vostru. Dacă nu sunteți familiarizați cu Git, puteți să arhivați botul într-un fișier .tar și să-l încărcați pe server:

După asta, dezarhivați-l cu comanda:
tar -xvf yourfile.tarAcum botul vostru este stocat în folderul cu numele arhivei.
A doua metodă prin Git. Cred că nu trebuie să explic cum se face asta oamenilor care știu să-l folosească.
După instalarea acestuia cu comanda:
sudo apt install gitPuteți să-l clonați pe VM-ul dumneavoastră.
După aceasta, trecem la configurarea systemd. Pentru aceasta accesați directorul său:
cd /etc/systemd/systemȘi creăm fișierul bot.service:
sudo nano bot.serviceIntroducem în fereastra deschisă următoarele:
[Unit]
Description=Telegram bot 'Numele botului'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/numele utilizatorului dumneavoastră/numele folderului în care se află botul
ExecStart=/usr/bin/python3 /home/numele utilizatorului dumneavoastră/numele folderului în care se află botul/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Închideți și salvați fișierul. Se închide cu comanda Ctrl+X.
După aceasta, introduceți comenzile pe rând:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Dacă totul este bine, veți vedea cam așa:

Asta e, acum botul dumneavoastră funcționează autonom. Sper ca articolul meu să vă ajute să găzduiți botul.
P.S.
1. Verificați botul pentru erori
Rulați botul dumneavoastră și verificați dacă funcționează înainte de a-l rula prin systemd. Pentru aceasta, mergeți în folderul cu botul și rulați-l prin python.
cd
python3 bot.py2. Adăugați în fișierele cu scripturi py codificarea
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Inserare la începutul fișierului.
3. Erori în systemd
Dacă ați verificat botul pentru erori și a funcționat corect, dar nu vrea să pornească în systemd, puteți verifica jurnalele și înțelege unde este problema vizionând fișierul:
sudo nano /var/log/syslogPuteți descărca acest fișier și vizualiza pe computerul dumneavoastră prin Notepad++.
4. Actualizarea botului
Dacă doriți să adăugați sau să încărcați o nouă versiune a botului, introduceți comanda:
sudo systemctl stop botFaceți toate manevrele necesare. Apoi introduceți următoarele comenzi pentru a-l face să funcționeze din nou:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botSursa: habr.com
