Giter Site home page Giter Site logo

english_chat_with_dashleb-bot's Introduction

Пример развертывания приложения в ранее созданной и активной виртуальной машине в Яндекс.Облаке

Рекомендуемые ресурсы виртуальной машины:

Рекомендуемые ресурсы виртуальной машины

Порядок команд в терминале:

  1. Подключение к виртуальной машине - ssh [email protected], где для примера: dashleb - имя пользователя в виртуальной машине в Яндекс.Облаке, 51.250.105.13 - IP виртуальной машины
  2. sudo apt install python-is-python3 - установили Python
  3. pwd - можно вывести для информации рабочий каталог (результат в примере: /home/dashleb/)
  4. mkdir projects - создали каталог для проектов
  5. cd projects/ - перешли в каталог для проектов
  6. git - проверить наличие, если нет - установить его
  7. sudo apt-get upgrade - не обязательно, но можно
  8. sudo apt-get update - обязательно, иначе ошибку выдаёт на следующем шаге
  9. sudo apt install python3.10-venv - обязательно, иначе не будет работать установка виртуального окружения
  10. mkdir /home/dashleb/python-venvs/ - создаем каталог под виртуальное окружение
  11. python -m venv /home/dashleb/python-venvs/- устанавливаем виртуальное окружение
  12. source /home/dashleb/python-venvs/bin/activate - активируем виртуальное окружение !!! если все хорошо, должно появиться его название в круглых скобочках - (python-venvs) - перед именем пользователя и названием виртуальной машины
  13. 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)

  1. pip install -r /home/dashleb/projects/English_Chat_with_DashLeb-bot/requirements.txt - устанавливаем библиотеки из файла requirements.txt
  2. cd /home/dashleb/projects/English_Chat_with_DashLeb-bot - перешли к нашему проекту
  3. sudo apt install uvicorn - иногда требуется
  4. 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 нужно выполнить несколько шагов:

  1. Зарегистрируйте аккаунт на Yandex Cloud и создайте виртуальную машину (VM) в управлении облачным аккаунтом.

  2. Установите на вашу виртуальную машину все необходимые зависимости, включая интерпретатор Python (sudo apt-get install python3-pip python3-dev на Ubuntu/Debian), а также необходимые библиотеки, указанные в вашем requirements.txt файле с помощью команды pip install -r requirements.txt.

  3. Откройте порты, если ваш бот будет использовать вебхуки. По умолчанию телеграм боты используют порт 443, 80, 88 или 8443 для вебхуков.

  4. Загрузите код телеграм-бота на виртуальную машину. Это можно сделать, например, через git clone, если ваш код находится в Git-репозитории, или просто скопировать файлы через SCP (scp) или FTP.

  5. Настройте окружение, в котором будет работать бот, используя переменные окружения или .env файлы, чтобы хранить чувствительные данные (например, токен бота).

  6. Настройте 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
  1. Активируйте и стартуйте ваш сервис:
sudo systemctl enable yourbot
sudo systemctl start yourbot
  1. Проверьте статус вашего бота, чтобы убедиться, что он работает корректно:
sudo systemctl status yourbot
  1. Не забудьте обновить вашего бота в соответствии с последними изменениями в вашем коде и перезапустить сервис при необходимости.

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

english_chat_with_dashleb-bot's People

Contributors

dashleb33 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.