Prečo GCP?
Pri písaní telegramových botov som sa stretol s otázkou, ako rýchlo a bezplatne zabezpečiť, aby bot fungoval nepretržite. Možnosti s Heroku a Pythonanywhere majú príliš malé limity, ak máte viac ako jedného bota. Preto som sa rozhodol využiť GCP. Platforma poskytuje 300$ na rok zadarmo + obrovské zľavy pri využívaní týchto prostriedkov (až 94%).

Ako hostiť vášho bota?
Krok 1. Registrácia na GCP
Prejdeme na stránku a klikneme na Začnite zadarmo.

Zadáme svoje údaje a kartu. Peniaze z karty nebudú strhnuté, pokiaľ sami neaktivujete platené predplatné.

Krok 2. Vytvorenie virtuálneho stroja
Po registrácii sa ocitnete na hlavnej stránke služby. Musíte vybrať v sekcii Zdroje kartu Compute Engine.

Je potrebné vytvoriť nový экземпляr.

Ak neplánujete nasadiť DB na virtuálnom stroji, môžete vziať g1-small, inak odporúčam n1-standard.

Bude potrebné vybrať aj operačný systém. Vybral som Debian GNU/Linux 9 (stretch).

Hotovo, VM je vytvorená. Bežná doba nasadenia trvá od 1 do 5 minút.
Krok 3. Nastavenie virtuálneho stroja
Môžete sa pripojiť cez SSH zo svojho PC alebo sa interagovať cez platformu.
Na to kliknite na SSH.
![]()
Otvorí sa vám terminál Linux v novom okne.

Teraz prejdeme na nastavenie. Najprv zadajte príkaz:
sudo apt-get updatena aktualizáciu informácií o najnovších verziách balíkov.
Potom zadáme:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipPython inštalovať netreba, už je nainštalovaný.
Teraz je potrebné nainštalovať všetky potrebné knižnice. Je tu malý nuans, všetky knižnice je potrebné inštalovať dvakrát:
pip3 install ‘name_of_package’na použitie cez príkaz python3, a
sudo pip3 install ‘name_of_package’ pre systemd. Táto utilita vám pomôže spustiť bota a reštartovať ho, ak padne.
Najjednoduchší spôsob spustiť bota cez python3, ale vypne sa, ak sa odpojíte. Môžete použiť screen, ale bot sa nebude sám reštartovať. Môžete tiež použiť crontab s kontrolou portu, ale tento variant sa mi zdá zložitejší ako systemd.
Krok 4. Nahrajeme bota na server
Existujú dva spôsoby, ako nahrať vášho bota. Ak nemáte skúsenosti s Gitom, môžete jednoducho zarchivovať bota do .tar a nahrať ho na server:

Potom ho rozarchivujeme príkazom:
tar -xvf yourfile.tarTeraz váš bot je uložený v priečinku s názvom archívu.
Druhý spôsob cez Git. Nemyslím si, že by som mal vysvetľovať, ako to urobiť ľuďom, ktorí ho vedia použiť.
Po nainštalovaní jeho príkazom:
sudo apt install gitMôžete ho skopírovať na svoju VM.
Potom prejdite k nastaveniu systemd. Na to prejdite do jeho adresára:
cd /etc/systemd/systemA vytvorte súbor bot.service:
sudo nano bot.serviceZapíšte do otvoreného okna nasledujúce:
[Unit]
Description=Telegram bot 'Meno bota'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/názov vášho používateľa/názov zložky, v ktorej sa nachádza bot
ExecStart=/usr/bin/python3 /home/názov vášho používateľa/názov zložky, v ktorej sa nachádza bot/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Zatvorte a uložte súbor. Zatvára sa pomocou príkazu Ctrl+X.
Potom zadajte príkazy po jednom:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Ak všetko pôjde dobre, uvidíte približne nasledovné:

Všetko, teraz váš bot funguje samostatne. Dúfam, že môj článok vám pomôže hostiť vášho bota.
P.S.
1. Skontrolujte svojho bota na chyby
Spustite svojho bota a skontrolujte jeho funkčnosť predtým, ako ho spustíte cez systemd. Na to prejdite do zložky s botom a spustite ho cez python.
cd
python3 bot.py2. Pridajte do súborov s py-skripty kódovanie
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Vložte na začiatok súboru.
3. Chyby v systemd
Ak ste skontrolovali bota na chyby a normálne fungoval, ale nechce sa spustiť v systemd, môžte si pozrieť logy a pochopiť, v čom je chyba, prezeraním súboru:
sudo nano /var/log/syslogMôžete si tento súbor stiahnuť a prezrieť na svojom počítači cez Notepad++.
4. Aktualizácia bota
Ak chcete doplniť alebo načítať novú verziu bota, zadajte príkaz:
sudo systemctl stop botUrobte všetky potrebné úpravy. A potom zadajte nasledujúce príkazy, aby znova začal fungovať:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botZdroj: habr.com
