- Подключение к виртуальной машине - ssh [email protected], где для примера: dashleb - имя пользователя в виртуальной машине в Яндекс.Облаке, 51.250.105.13 - IP виртуальной машины
- sudo apt install python-is-python3 - установили Python
- pwd - можно вывести для информации рабочий каталог (результат в примере: /home/dashleb/)
- mkdir projects - создали каталог для проектов
- cd projects/ - перешли в каталог для проектов
- git - проверить наличие, если нет - установить его
- sudo apt-get upgrade - не обязательно, но можно
- sudo apt-get update - обязательно, иначе ошибку выдаёт на следующем шаге
- sudo apt install python3.10-venv - обязательно, иначе не будет работать установка виртуального окружения
- mkdir /home/dashleb/python-venvs/ - создаем каталог под виртуальное окружение
- python -m venv /home/dashleb/python-venvs/- устанавливаем виртуальное окружение
- source /home/dashleb/python-venvs/bin/activate - активируем виртуальное окружение !!! если все хорошо, должно появиться его название в круглых скобочках - (python-venvs) - перед именем пользователя и названием виртуальной машины
- cd /home/dashleb/projects/ - переходим в каталог с проектами
14.1. git clone [email protected]:dashleb33/English_Chat_with_DashLeb-bot.git - клонируем репозиторий с приложением, которое нужно развернуть, если репозиторий собственный либо
14.2. git clone https://github.com/dashleb33/English_Chat_with_DashLeb-bot.git - можно по ссылке https, если не планируем репозиторий потом менять и нет прав на него, т.к. он не собственный
(подробнее см. тут: https://docs.github.com/ru/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls)
- pip install -r /home/dashleb/projects/English_Chat_with_DashLeb-bot/requirements.txt - устанавливаем библиотеки из файла requirements.txt
- cd /home/dashleb/projects/English_Chat_with_DashLeb-bot - перешли к нашему проекту
- sudo apt install uvicorn - иногда требуется
- uvicorn main:app --host=0.0.0.0 - запускаем приложение из каталога, где лежит проект (параметр --host=0.0.0.0 означает, что приложение запущено на всех портах виртуальной машины) (http://51.250.105.13:8000/summarization) - по этому адресу открывается наше приложение, где 51.250.105.13 - IP виртуальной машины
Затем для того, чтобы деплой на Яндекс.Облаке работал при закрытом терминале, необходимо использовать специальные инструменты, такие как nohup или screen (https://russianblogs.com/article/35331498181/)
Nohup - это команда Unix, которая позволяет запускать процессы в фоновом режиме и сохранять их вывод в отдельном файле, который можно просмотреть позже. Для использования nohup необходимо выполнить команду в следующем формате:
nohup command > logfile 2>&1 &
где command - команда, которую нужно выполнить, logfile - файл, в который будет записываться вывод команды, 2>&1 - перенаправление стандартного вывода и вывода ошибок в файл logfile, & - запуск процесса в фоновом режиме.
Screen - это программа Unix, которая позволяет запускать процессы в отдельных виртуальных терминалах, которые можно открывать и закрывать по мере необходимости. Для использования screen необходимо выполнить команду в следующем формате:
screen -S sessionname
где sessionname - имя новой сессии. После этого можно запустить процесс внутри сессии и отключиться от нее, нажав клавиши Ctrl+A и затем D. Для повторного подключения к сессии нужно выполнить команду:
screen -r sessionname
где sessionname - имя сессии. Таким образом, для того чтобы деплой на Яндекс.Облаке работал при закрытом терминале, можно использовать либо nohup, либо screen. В зависимости от конкретной ситуации и требований проекта, один из этих инструментов может оказаться более удобным и эффективным.
-
Зарегистрируйте аккаунт на Yandex Cloud и создайте виртуальную машину (VM) в управлении облачным аккаунтом.
-
Установите на вашу виртуальную машину все необходимые зависимости, включая интерпретатор Python (
sudo apt-get install python3-pip python3-dev
на Ubuntu/Debian), а также необходимые библиотеки, указанные в вашемrequirements.txt
файле с помощью командыpip install -r requirements.txt
. -
Откройте порты, если ваш бот будет использовать вебхуки. По умолчанию телеграм боты используют порт 443, 80, 88 или 8443 для вебхуков.
-
Загрузите код телеграм-бота на виртуальную машину. Это можно сделать, например, через
git clone
, если ваш код находится в Git-репозитории, или просто скопировать файлы через SCP (scp
) или FTP. -
Настройте окружение, в котором будет работать бот, используя переменные окружения или
.env
файлы, чтобы хранить чувствительные данные (например, токен бота). -
Настройте
systemd
сервис (или другой менеджер служб), чтобы ваш бот автоматически запускался при старте системы и перезапускался в случае сбоев. Создайте файл с описанием сервиса, например/etc/systemd/system/yourbot.service
.
Пример содержимого для yourbot.service
:
[Unit]
Description=Your Telegram Bot
After=network.target
[Service]
User=youruser
WorkingDirectory=/path/to/your/bot
ExecStart=/usr/bin/python3 bot.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
- Активируйте и стартуйте ваш сервис:
sudo systemctl enable yourbot
sudo systemctl start yourbot
- Проверьте статус вашего бота, чтобы убедиться, что он работает корректно:
sudo systemctl status yourbot
- Не забудьте обновить вашего бота в соответствии с последними изменениями в вашем коде и перезапустить сервис при необходимости.
Помните, что детали могут отличаться в зависимости от конкретной конфигурации вашего приложения и виртуальной машины Yandex Cloud. Пожалуйста, следите за официальной документацией и рекомендациями по безопасности.