Пишем своего робота на Python. Урок 15

Запускаем автоматический скрипт на виртуальной машине с удаленного сервера

Дата
27 авг. 2021
Пишем своего робота на Python. Урок 15

В прошлых выпусках мы узнали, как запускать скрипты автоматически по расписанию и как создать свою виртуальную машину. Сегодня мы объединим эти знания и удаленно запустим скрипт на виртуальной машине, чтобы его работа не была привязана к вашему компьютеру.

Съемка и монтаж: Глеб Лиманский

Для начала запустим виртуальную машину, если она была выключена. Когда слева от названия появится зеленая галочка — машина готова к работе.

Кликайте на название виртуальной машины
Кликайте на треугольник, чтобы запустить ее

Есть несколько обязательных настроек, что всё работало как надо. Проверьте, чтобы у пунктов «Allow HTTP traffic» и «Allow HTTPS traffic» стояли галочки, и чтобы ко всем API «облака» был предоставлен полный доступ.

Разрешена передача трафика по протоколам HTTP и HTTPS
Разрешен полный доступ к API Google Cloud

Нажмем на «SSH» в столбике «Connect», чтобы подключиться к виртуальной машине. 

После этого откроется консоль, по своим свойствам идентичная терминалу — она распознает ваш аккаунт. Теперь нужно загрузить файлы нашего проекта на сервер. 

Создадим директорию командой mkdir <название> (у нас оно будет new_robot). Проверить, что она появилась в корневом каталоге, можно командой ls.

Чтобы загрузить файл, нажмите на шестеренку в правом верхнем углу и далее на «Upload file». 

Существует другой способ — с помощью специальных команд Google Cloud. Подробнее о них можно узнать в официальном гайде. Этот способ пригодится нам для загрузки, например, файла .env, куда мы безопасно сохраняли логин и пароль — через «Upload file» он не загрузится и даже не отобразится в списке доступных файлов.

Команда, которая нам нужна, выглядит так:

gcloud compute scp ~/robot/.env ~/.env instance-1:~

«~/robot/.env» — расположение файла на вашем компьютере.

«~/.env» — будущее название файла на вашей виртуальной машине.

«instance-1:~» — название виртуальной машины и будущее расположение файла (в данном случае — корневая директория).

После запуска команды у нас попросят уточнить временную зону, нажимаем Y. Далее с помощью cat .env можем проверить правильность данных в загруженном файле.

После загрузки всех файлов на сервер нужно переместить их в ранее созданную папку. Для этого введем mv <название файла> <название папки> для каждого файла.

Разберемся, как правильно написать bash-файл для виртуальной машины, чтобы скрипт запускался автоматически. Вернемся в окно Python и создадим файл runVM.sh. Начало у него стандартное: #!/bin/bash. Далее указываем директорию, в которой лежит наш проект. Следующей строкой запускаем главный файл (на нашем сервере по умолчанию установлен python3).

Этот файл тоже загрузим на сервер и переместим в папку проекта. Не забудьте с помощью команды ls проверить, что в папке находятся все нужные файлы.

Запускаем bash-файл как обычно: командой bash runVM.sh. Если необходимо настроить crontab, чтобы изменить время и частоту запуска скрипта, сделать это можно точно так же, как мы делали в уроке #13.

Теперь можете не волноваться, включен ваш компьютер или выключен — скрипт будет запускаться на удаленном сервере до тех пор, пока вы не выключите виртуальную машину. 

Если у вас что-то не получилось — пишите в наш Telegram-чат, постараемся подсказать.