Proč GCP?
Při psaní telegramů pro roboty jsem narazil na otázku, jak rychle a zdarma zajistit, aby bot neustále fungoval. Možnosti Heroku a Pythonanywhere jsou příliš nízké, pokud máte více než jednoho robota. Rozhodl jsem se tedy použít GCP. Platforma poskytuje 300 $ zdarma na rok + obrovské slevy při použití těchto prostředků (až 94 %).

Jak hostit svého robota?
Krok 1: Zaregistrujte se do GCP
Jděte na webové stránky a tlačit Začněte zdarma.

Zadejte své údaje a kartu. Peníze z karty nebudou strženy, pokud si placené předplatné sami neaktivujete.

Krok 2. Vytvořte virtuální stroj
Po registraci se ocitnete na hlavní stránce služby. Musíte vybrat kartu Compute Engine v sekci Resources.

Musíte vytvořit novou instanci.

Pokud se nechystáte nasadit databázi na virtuální stroj, pak si můžete vzít g1-small, jinak doporučuji n1-standard.

Budete také muset vybrat OS. Vybral jsem si Debian GNU/Linux 9 (stretch).

To je vše, virtuální počítač je vytvořen. Jeho obvyklé nasazení trvá od 1 do 5 minut.
Krok 3: Nastavte virtuální počítač
Můžete se připojit přes SSH z vašeho PC nebo komunikovat prostřednictvím platformy.
Chcete-li to provést, klikněte na SSH.
![]()
Tím se otevře linuxový terminál v novém okně.

Nyní přejdeme k nastavení. Nejprve zadejte příkaz:
sudo apt-get updatek aktualizaci informací o nejnovějších verzích balíčků.
Poté, co vstoupíme:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipSamotný Python není třeba instalovat, už tam je.
Nyní musíte nainstalovat všechny potřebné knihovny. Existuje malá nuance, všechny knihovny musí být nainstalovány dvakrát:
pip3 install ‘name_of_package’pro použití prostřednictvím příkazu python3 a
sudo pip3 install ‘name_of_package’ pro systemd. Tento nástroj vám pomůže spustit robota a restartovat jej, pokud dojde k jeho zhroucení.
Nejjednodušší způsob, jak spustit robota, je přes python3, ale pokud se odpojíte, vypne se. Můžete použít obrazovku, ale robot se sám nerestartuje. Můžete také použít crontab s kontrolou portu, ale myslím, že tato možnost je složitější než systemd.
Krok 4. Nahrajte robota na server
Existují dva způsoby, jak nahrát robota. Pokud nejste Git friendly, můžete bota jednoduše zazipovat do .tar a nahrát jej na server:

Poté jej rozbalte příkazem:
tar -xvf yourfile.tarNyní je váš robot uložen ve složce s názvem archivu.
Druhý způsob je přes Git. Myslím, že nemá cenu vysvětlovat lidem, kteří to umí, jak to udělat.
Po instalaci pomocí příkazu:
sudo apt install gitMůžete jej naklonovat do svého VM.
Poté přejdeme k nastavení systemd. Chcete-li to provést, přejděte do jeho adresáře:
cd /etc/systemd/systemA vytvořte soubor bot.service:
sudo nano bot.serviceV okně, které se otevře, zadejte následující:
[Unit]
Description=Telegram bot 'Имя бота'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/название вашего юзера/название папки в которой лежит бот
ExecStart=/usr/bin/python3 /home/название вашего юзера/название папки в которой лежит бот/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Zavřete a uložte soubor. Zavřeno pomocí Ctrl+X.
Poté postupně zadávejte příkazy:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Pokud vše půjde dobře, uvidíte něco takového:

Všechno, váš robot nyní funguje nezávisle. Doufám, že vám můj článek pomůže hostit vašeho robota.
PS
1. Zkontrolujte, zda váš robot neobsahuje chyby
Spusťte robota a otestujte jej, než jej spustíte přes systemd. Chcete-li to provést, přejděte do složky s robotem a spusťte python.
cd <папка вашего бота>
python3 bot.py2. Přidejte kódování do souborů pomocí py skriptů
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Vložte na začátek souboru.
3. Chyby v systemd
Pokud jste zkontrolovali chyby robota a fungovalo to dobře, ale nechce se spustit v systemd, můžete se podívat na protokoly a zjistit, co je chyba, zobrazením souboru:
sudo nano /var/log/syslogTento soubor si můžete stáhnout a zobrazit na svém počítači pomocí programu Notepad++.
4. Aktualizace robota
Pokud chcete přidat nebo nahrát novou verzi robota, zadejte příkaz:
sudo systemctl stop botPodívejte se na všechny potřebné manipulace. A pak zadejte následující příkazy, aby to znovu fungovalo:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botZdroj: www.habr.com
