Perché GCP?
Quando ho iniziato a scrivere bot Telegram, mi sono trovato a dover affrontare la questione di come far funzionare il bot in modo costante e gratuito. Le opzioni come Heroku e Pythonanywhere hanno limiti troppo ridotti se hai più di un bot. Perciò ho deciso di utilizzare GCP. La piattaforma offre $300 gratuiti per un anno e enormi sconti sull'utilizzo di questi fondi (fino al 94%).

Come ospitare il tuo bot?
Passo 1. Registrazione su GCP
Visitiamo il sito e clicchiamo su Inizia gratuitamente.

Inserisci i tuoi dati e la carta. Non verranno addebitati soldi sulla carta, a meno che tu non attivi un abbonamento a pagamento.

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

È necessario creare un nuovo istanza.

Se non prevedi di implementare un DB su macchina virtuale, puoi scegliere g1-small, altrimenti consiglio n1-standard.

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

Tutto qui, la VM è creata. La normale implementazione richiede da 1 a 5 minuti.
Passo 3. Configurazione della macchina virtuale
Puoi collegarti tramite SSH dal tuo PC o interagire tramite la piattaforma.
Per fare ciò, fai clic su SSH.
![]()
Si aprirà un terminale Linux in una nuova finestra.

Ora procediamo con la configurazione. Iniziamo digitando il comando:
sudo apt-get updateper aggiornare le informazioni sulle versioni più recenti dei pacchetti.
Successivamente digitiamo:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipNon è necessario installare Python, è 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 essere utilizzate tramite il comando python3, e
sudo pip3 install ‘name_of_package’ per systemd. Questa utility ti aiuterà a far funzionare il bot e a riavviarlo se si arresta.
Il modo più semplice per far funzionare il bot tramite 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 della porta, ma mi sembra che questa opzione sia più complessa rispetto a systemd.
Passo 4. Carica il bot sul server
Ci sono due modi per caricare il tuo bot. Se non sei pratico di Git, puoi semplicemente archiviare il bot in .tar e caricarlo sul server:

Dopo di che, estraiamo il file con il comando:
tar -xvf yourfile.tarOra il tuo bot si trova nella cartella con il nome dell'archivio.
Il secondo metodo è tramite Git. Non credo sia necessario spiegare come farlo a chi sa già utilizzarlo.
Dopo averlo installato con il comando:
sudo apt install gitPuoi clonarlo sulla tua VM.
Dopo di che, procediamo alla configurazione di systemd. Per fare ciò, entriamo nella sua directory:
cd /etc/systemd/systemE creiamo il file bot.service:
sudo nano bot.serviceInserisci nel file aperto 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. Puoi chiuderlo 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 qualcosa di simile:

Bene, ora il tuo bot funziona autonomamente. Spero che il mio articolo ti aiuti a hostare il tuo bot.
P.S.
1. Controlla il tuo bot per errori
Avvia il tuo bot e controlla il suo funzionamento prima di lanciarlo tramite systemd. Per farlo, vai nella cartella del bot e avvialo con python.
cd
python3 bot.py2. Aggiungi la codifica nei 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 ed ha funzionato correttamente, ma non si avvia in systemd, puoi controllare i log e capire qual è l'errore esaminando il file:
sudo nano /var/log/syslogPuoi scaricare questo file e visualizzarlo sul tuo computer tramite Notepad++.
4. Aggiornamento del bot
Se vuoi aggiungere o caricare una nuova versione del bot, usa il comando:
sudo systemctl stop botEsegui tutte le operazioni necessarie. Poi inserisci i seguenti comandi affinché riprenda a funzionare:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botFonte: habr.com
