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
