Perché GCP?
Scrivendo bot per Telegram, mi sono trovato di fronte alla questione di come far funzionare un bot in modo continuo, rapidamente e gratuitamente. Le opzioni con Heroku e Pythonanywhere hanno limiti troppo ridotti se hai più di un bot. Per questo ho deciso di utilizzare GCP. La piattaforma offre $300 gratuiti per un anno + enormi sconti sull'utilizzo di questi fondi (fino al 94%).

Come ospitare il tuo bot?
Passo 1. Registrazione su GCP
Visitiamo il sito e facciamo clic su Inizia gratis.

Inserisci i tuoi dati e la carta. I soldi dalla carta non verranno addebitati se non attivi tu un abbonamento a pagamento.

Passo 2. Creiamo una macchina virtuale
Dopo la registrazione, ti troverai sulla pagina principale del servizio. Devi selezionare nella sezione Risorse la scheda Compute Engine.

È necessario creare una nuova istanza.

Se non deployerai un DB su macchina virtuale, puoi scegliere g1-small, altrimenti ti consiglio n1-standard.

Dovrai anche scegliere il sistema operativo. Io ho scelto Debian GNU/Linux 9 (stretch).

Tutto, la VM è stata creata. Di solito il suo deployment richiede da 1 a 5 minuti.
Passo 3. Configurazione della macchina virtuale
Puoi connetterti tramite SSH dal tuo PC oppure interagire attraverso la piattaforma.
Per fare questo, clicca su SSH.
![]()
Si aprirà un terminale Linux in una nuova finestra.

Ora passiamo alla configurazione. Prima digita il comando:
sudo apt-get updateper aggiornare le informazioni sulle ultime versioni dei pacchetti.
Dopo inserisci:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipNon è necessario installare Python stesso, è già presente.
Ora è necessario installare tutte le librerie necessarie. C'è un piccolo dettaglio: tutte le librerie devono essere installate due volte:
pip3 install ‘name_of_package’per utilizzarle tramite il comando python3, e
sudo pip3 install ‘name_of_package’ per systemd. Questo strumento ti aiuterà a far partire il bot e a riavviarlo se si arresta.
Il modo più semplice per avviare il bot è attraverso python3, ma si spegnerà se ti disconnetti. Puoi usare screen, ma il bot non si riavvierà da solo. Puoi anche usare crontab con un controllo di porta, ma mi sembra che questa opzione sia più complicata rispetto a systemd.
Passo 4. Carichiamo il bot sul server
Ci sono due modi per caricare il tuo bot. Se non sei esperto con Git, puoi semplicemente comprimere il bot in un file .tar e caricarlo sul server:

Dopo di che, estrailo con il comando:
tar -xvf yourfile.tarOra il tuo bot si trova nella cartella con il nome dell'archivio.
Il secondo modo tramite Git. Penso che non sia necessario spiegare come farlo a chi sa usarlo.
Dopo averlo installato con il comando:
sudo apt install gitPuoi clonarlo sulla tua VM.
Dopo di che, passiamo alla configurazione di systemd. Per farlo, entriamo nella sua directory:
cd /etc/systemd/systemE creiamo il file bot.service:
sudo nano bot.serviceScriviamo nella finestra che si apre quanto segue:
[Unit]
Description=Telegram bot 'Nome del bot'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/nome del tuo utente/nome della cartella in cui si trova il bot
ExecStart=/usr/bin/python3 /home/nome del tuo utente/nome della cartella in cui si trova il bot/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Chiudi e salva il file. Si chiude con il comando Ctrl+X.
Dopo di che, inserisci i comandi uno dopo l'altro:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Se tutto va bene, vedrai più o meno quanto segue:

Tutto, ora il tuo bot funziona autonomamente. Spero che il mio articolo ti aiuti a ospitare il tuo bot.
P.S.
1. Controlla il tuo bot per errori
Esegui il tuo bot e controlla che funzioni prima di avviarlo tramite systemd. Per fare ciò, vai nella cartella con il bot e avvialo tramite python.
cd
python3 bot.py2. Aggiungi la codifica ai file con gli script py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Inserisci all'inizio del file.
3. Errori in systemd
Se hai controllato il bot per errori e funzionava correttamente, ma non vuole avviarsi in systemd, puoi controllare i log e capire qual è l'errore esaminando il file:
sudo nano /var/log/syslogPuoi scaricare questo file e visionarlo sul tuo computer tramite Notepad++.
4. Aggiornamento del bot
Se vuoi aggiungere o caricare una nuova versione del bot, inserisci il comando:
sudo systemctl stop botFai tutte le manipolazioni necessarie. Poi inserisci i seguenti comandi per farlo funzionare di nuovo:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botFonte: habr.com
