Varför GCP?
När jag skrev Telegram-botar stötte jag på frågan om hur man snabbt och gratis gör så att boten arbetar kontinuerligt. Alternativen med Heroku och Pythonanywhere har för små begränsningar om du har mer än en bot. Därför beslutade jag mig för att använda GCP. Plattformen erbjuder 300 USD gratis i ett år + stora rabatter när du använder dessa medel (upp till 94%).

Hur hostar man din bot?
Steg 1. Registrera dig på GCP
Gå till webbplatsen och klickar på Kom igång gratis.

Ange dina uppgifter och kortet. Pengarna kommer inte att dras från kortet om du inte själv aktiverar en betald prenumeration.

Steg 2. Skapa en virtuell maskin
Efter registreringen hamnar du på startsidan av tjänsten. Du måste välja fliken Compute Engine under avsnittet Resurser.

Du behöver skapa en ny instans.

Om du inte kommer att distribuera en databas på en virtuell maskin, kan du ta g1-small, annars rekommenderar jag n1-standard.

Du behöver också välja ett operativsystem. Jag valde Debian GNU/Linux 9 (stretch).

Klart, VM:n är skapad. Den vanliga distributionen tar mellan 1 och 5 minuter.
Steg 3. Konfigurera den virtuella maskinen
Du kan ansluta via SSH från din PC eller interagera via plattformen.
För detta, klicka på SSH.
![]()
Du får öppna en Linux-terminal i ett nytt fönster.

Låt oss nu gå vidare till konfigurationen. Först skriver vi kommandot:
sudo apt-get updateför att uppdatera informationen om de senaste versionerna av paketen.
Därefter skriver vi:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipSjälva Python behöver du inte installera, det finns redan.
Nu behöver du installera alla nödvändiga bibliotek. Det finns en liten nyans, alla bibliotek måste installeras två gånger:
pip3 install 'name_of_package'för att använda dem via kommandot python3, och
sudo pip3 install 'name_of_package' för systemd. Detta verktyg hjälper dig att starta boten och starta om den om den kraschar.
Det enklaste sättet att köra boten är genom python3, men den kommer att stängas av om du kopplar ifrån. Du kan använda screen, men boten kommer inte att starta om sig själv. Du kan också använda crontab med portkontroll, men jag tycker att det alternativet är svårare än systemd.
Steg 4. Ladda upp boten till servern
Det finns två sätt att ladda upp din bot. Om du inte är vän med Git kan du helt enkelt komprimera boten i .tar och ladda upp den till servern:

Efter det avkomprimerar vi den med kommandot:
tar -xvf yourfile.tarNu finns din bot i mappen med namnet på arkivet.
Det andra sättet är via Git. Jag tror inte att jag behöver förklara hur man gör detta för personer som vet hur man använder det.
Efter installationen med kommandot:
sudo apt install gitDu kan klona det till din VM.
Därefter går vi vidare till att konfigurera systemd. För detta går vi in i dess katalog:
cd /etc/systemd/systemOch skapar filen bot.service:
sudo nano bot.serviceSkriv in följande i det öppnade fönstret:
[Unit]
Description=Telegram-bot 'Botnamn'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/ditt användarnamn/din mapp där boten ligger
ExecStart=/usr/bin/python3 /home/ditt användarnamn/din mapp där boten ligger/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Stäng och spara filen. Stäng med kommandot Ctrl+X.
Därefter skriver du in kommandona en i taget:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Om allt går bra, ser du något i stil med följande:

Nu fungerar din bot autonomt. Jag hoppas att min artikel hjälper dig att hosta din bot.
P.S.
1. Kontrollera din bot för fel
Kör din bot och kontrollera dess funktionalitet innan du kör den via systemd. För att göra detta, gå till mappen med boten och kör den med python.
cd
python3 bot.py2. Lägg till teckenkodning i py-skriptfilerna
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Sätt in i början av filen.
3. Fel i systemd
Om du har testat boten för fel och den fungerade bra, men inte vill starta i systemd, kan du kolla loggarna för att förstå vad felet är genom att granska filen:
sudo nano /var/log/syslogDu kan ladda ner denna fil och granska den på din dator med Notepad++.
4. Uppdatera boten
Om du vill lägga till eller ladda upp en ny version av boten, skriv in kommandot:
sudo systemctl stop botGör alla nödvändiga manipulationer. Skriv sedan följande kommandon för att få den att fungera igen:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botKälla: habr.com
