Dlaczego GCP?
Podczas pisania botów do Telegrama natrafiłem na pytanie, jak szybko i za darmo sprawić, aby bot działał nieprzerwanie. Opcje z Heroku i Pythonanywhere mają zbyt małe limity, jeśli masz więcej niż jednego bota. Dlatego postanowiłem skorzystać z GCP. Platforma oferuje bezpłatne 300$ na rok oraz ogromne zniżki przy korzystaniu z tych środków (do 94%).

Jak umieścić swojego bota na serwerze?
Krok 1. Rejestracja w GCP
Przechodzimy na stronę i klikamy Rozpocznij za darmo.

Wprowadzamy swoje dane i kartę. Środki z karty nie będą pobierane, jeśli samodzielnie nie aktywujesz płatnej subskrypcji.

Krok 2. Tworzenie maszyny wirtualnej
Po rejestracji znajdziesz się na stronie głównej usługi. Musisz wybrać zakładkę Compute Engine w sekcji Zasoby.

Należy stworzyć nowy egzemplarz.

Jeśli nie zamierzasz wdrażać bazy danych na maszynie wirtualnej, możesz wybrać g1-small, w przeciwnym razie polecam n1-standard.

Należy również wybrać system operacyjny. Wybrałem Debian GNU/Linux 9 (stretch).

Gotowe, maszyna wirtualna została stworzona. Jej standardowe uruchomienie zajmuje od 1 do 5 minut.
Krok 3. Konfiguracja maszyny wirtualnej
Możesz połączyć się przez SSH z własnego PC lub współdziałać przez platformę.
Aby to zrobić, kliknij na SSH.
![]()
Otworzy się terminal Linux w nowym oknie.

Teraz przejdźmy do konfiguracji. Najpierw wpisz polecenie:
sudo apt-get updateaby zaktualizować informacje o najnowszych wersjach pakietów.
Następnie wpisz:
sudo apt-get install python3-setuptools
sudo apt-get install python3-pipSamego Pythona nie trzeba instalować, już jest.
Teraz musisz zainstalować wszystkie niezbędne biblioteki. Jest mały szczegół, wszystkie biblioteki muszą być instalowane podwójnie:
pip3 install 'name_of_package'do użytku poprzez komendę python3, oraz
sudo pip3 install 'name_of_package' dla systemd. To narzędzie pomoże Ci uruchomić bota i wznawiać go, jeśli się zatrzyma.
Najprostszym sposobem uruchamiania bota jest użycie python3, ale wyłączy się, gdy się odłączysz. Można użyć screen, ale wtedy bot nie będzie się sam wznawiał. Można także użyć crontab z kontrolą portu, ale ten sposób wydaje mi się trudniejszy niż systemd.
Krok 4. Wgrywanie bota na serwer
Są dwa sposoby wgrania twojego bota. Jeśli nie znasz Gita, możesz po prostu spakować bota do .tar i wgrać go na serwer:

Następnie rozpakowujemy go poleceniem:
tar -xvf yourfile.tarTeraz twój bot znajduje się w folderze o nazwie archiwum.
Drugi sposób przez Git. Myślę, że nie trzeba tłumaczyć, jak to zrobić osobom, które potrafią go używać.
Po zainstalowaniu go poleceniem:
sudo apt install gitMożesz sklonować go na swojej maszynie wirtualnej.
Następnie przechodzimy do konfiguracji systemd. W tym celu przechodzimy do jego katalogu:
cd /etc/systemd/systemI tworzymy plik bot.service:
sudo nano bot.serviceWpisujemy w otwartym oknie następujące:
[Unit]
Description=Telegram bot 'Nazwa bota'
After=syslog.target
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/nazwa twojego użytkownika/nazwa folderu, w którym leży bot
ExecStart=/usr/bin/python3 /home/nazwa twojego użytkownika/nazwa folderu, w którym leży bot/bot.py
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Zamknij i zapisz plik. Zamykasz go za pomocą polecenia Ctrl+X.
Następnie wpisz polecenia jedno po drugim:
sudo systemctl daemon-reload
sudo systemctl enable bot
sudo systemctl start bot
sudo systemctl status bot
Jeśli wszystko będzie w porządku, zobaczysz mniej więcej to:

To wszystko, teraz twój bot działa samodzielnie. Mam nadzieję, że mój artykuł pomoże Ci wdrożyć bota.
P.S.
1. Sprawdź swojego bota pod kątem błędów
Uruchom swojego bota i sprawdź jego działanie, zanim uruchomisz go przez systemd. W tym celu przejdź do folderu z botem i uruchom go przez python.
cd
python3 bot.py2. Dodaj do plików z skryptami py kodowanie
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Wstaw na początku pliku.
3. Błędy w systemd
Jeśli sprawdziłeś bota pod kątem błędów i działał poprawnie, ale nie chce się uruchomić w systemd, możesz sprawdzić logi i zrozumieć, w czym tkwi błąd, przeglądając plik:
sudo nano /var/log/syslogMożesz pobrać ten plik i przeglądać go na swoim komputerze w Notepad++.
4. Aktualizacja bota
Jeśli chcesz dodać lub przesłać nową wersję bota, wprowadź polecenie:
sudo systemctl stop botWykonaj wszystkie niezbędne operacje. A następnie wprowadź następujące polecenia, aby ponownie go uruchomić:
sudo systemctl daemon-reload
sudo systemctl start bot
sudo systemctl status botŹródło: habr.com
