Файл: Разработка чатбота для управления кластером виртуальных машин.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.10.2023

Просмотров: 143

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


В соответствие с проведённым анализом принято решение программирования на языке Python он подойдет для написания чат-бота предназначенного для управления кластером виртуальных машин».

Рассмотрим библиотеки данного языка необходимые для написания чат-бота.

Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности [34].

Модуль datetime предоставляет классы для обработки времени и даты разными способами. Поддерживается и стандартный способ представления времени, однако больший упор сделан на простоту манипулирования датой, временем и их частями [35].

JSON (JavaScript Object Notation) - простой формат обмена данными, основанный на подмножестве синтаксиса JavaScript. Модуль json позволяет кодировать и декодировать данные в удобном формате [36].

Time - модуль для работы со временем в Python [37].

Модуль SqlLite3. SQLite – это автономный, работающий без сервера транзакционный механизм базы данных SQL. Python получил модуль sqlite3 в версии 2.5, что позволяет создавать базу данных SQLite в любой настоящей версии Python, без необходимости скачивания дополнительных инструментов [38].

Модуль telebot необходим для создания и подключения чат-бота.

Urllib — это модуль Python, который можно использовать для открытия URL-адресов. Он определяет функции и классы для обработки URL-адресов [39].

Модуль messagebox предоставляет базовый класс шаблона, а также множество удобных методов для часто используемых конфигураций. Поля сообщений являются модальными и будут возвращать подмножество (True, False, OK, None, Yes, No) на основе выбора пользователя [40]. 35 Requests — это модуль Python, который можно использовать для отправки всех видов HTTP-запросов. Это простая в использовании библиотека с множеством функций, от передачи параметров в URL до отправки пользовательских заголовков и проверки SSL [41].

Модуль sys обеспечивает доступ к некоторым переменным и функциям, взаимодействующим с интерпретатором python [42].

Модуль subprocess отвечает за выполнение следующих действий: порождение новых процессов, соединение c потоками стандартного ввода, стандартного вывода, стандартного вывода сообщений об ошибках и получение кодов возврата от этих процессов.


  1. ПРОЕКТНАЯ ЧАСТЬ


Требуется развернуть чат-бота на виртуальном сервере в облаке с возможностью обновления файлов на ПЭВМ.

Разработку будем осуществлять на Python в среде PyCharm на ПЭВМ с установленной операционной системой Windows 10. Используется виртуальное окружение.  

Для выполнения данных условий необходимо создание виртуального сервера для этого:

  1. В Панели управления облачной инфраструктурой в существующем или новом проекте активируем KVM.

  2. В меню "Серверы" добавляем новый сервер. Подойдёт минимальная конфигурация с 1 ядром, 1 ГБ ОЗУ с диском на 10 ГБ и операционная система Ubuntu 18.

  3. Понадобится статический IP для подключения по SSH. В поле «Внешний IP-адрес» выбираем опцию «Случайный».

  4. В настройках подключения добавим разрешающие правила для межсетевого экрана: SSH, WEB.




Рисунок -7

По нажатию кнопки «Создать» осуществляется развёртывание сервера. Если пароль для root не был указан заранее, то он генерируется автоматически. После создания сервера просмотреть пароль можно в основных настройках сервера: кликните на сервер в списке или воспользуйтесь меню «Действия\Изменить». Там же отображается назначенный внешний IP-адрес.

Подключаемся к серверу по SSH или через веб-консоль noVNC посредством меню "Действия\Открыть консоль". После авторизации получаем стандартное приглашение:



Рисунок -8

Настройка скриптов для развёртывания службы в виртуальном окружении:

  1. Разместим в проекте PyCharm скрипты для обслуживания службы в целевой среде: deploy.sh, run.sh, testbot.service.

  2. Скрипт deploy.sh для развёртывания и настройки виртуального окружения и автозапуска службы:

  3. #!/bin/bash



  4. # Запускать в папке проекта (/opt/testbot)

  5. apt-get update

  6. apt install -y python3-pip

  7. apt install -y python3-venv

  8. # создадим виртуальное окружение и установим в него зависимости согласно requirements.txt

  9. python3 -m venv ubuntu_env



  10. source ubuntu_env/bin/activate



  11. pip install -r requirements.txt



  12. deactivate



  13. # дадим право на исполнение скрипта запуска

  14. chmod +x run.sh



  15. # сконфигурируем сервис

  16. ln -s /opt/testbot/testbot.service /etc/systemd/system/testbot.service

  17. chmod 664 /etc/systemd/system/testbot.service

  18. systemctl daemon-reload



  19. # добавим в автозагрузку

  20. systemctl enable testbot




systemctl status testbot

Рисунок -9

Скрипт run.sh запускает основной файл через python:

#!/bin/bash
SCRIPT=$(readlink -f "$0")

BASEDIR=$(dirname "$SCRIPT")
echo "Executing service in '$BASEDIR'"
cd $BASEDIR
source $BASEDIR/ubuntu_env/bin/activate
python $BASEDIR/testbot.py

Рисунок -10

Файл testbot.service отвечает за автозапуск службы посредством systemd:

[Unit]

Description=TestBot
[Service]

ExecStart=/opt/testbot/run.sh
[Install]

WantedBy=multi-user.target

Рисунок-11

Настройка синхронизации файлов из PyCharm с виртуальным сервером:

  1. Синхронизация файлов настраивается в меню PyCharm "Tools\Deployment\Configuration".

  2. На вкладке Connection укажем тип соединения SFTP, внешний IP-адрес сервера, логин, пароль. Выберем папку для хранения файлов проекта. Допустим, это будет папка /opt.



Рисунок-12

На вкладке Mappings в поле Deployment path укажем относительный путь проекта внутри Root Path. Например, /TestBot:



Рисунок-13

На вкладке Excluded Paths необходимоуказать папки и файлы, которые не должны синхронизироваться. На локальной машине (Local path) это, например, папка с настройками проекта .idea и папки с виртуальными окружениями. НБ! На виртуальном сервере виртуальное окружение будет создано автоматически.



Рисунок-14
Для настройки автоматической синхронизации нужно установить галочку в главном меню PyCharm "Tools\Deployment\Automatic Upload". Теперь при сохранении редактируемого файла в PyCharm будет срабатывать автоматическая синхронизация и через считанные миллисекунды файл обновится на виртуальном сервере.

Для первой синхронизации в контекстном меню проекта нужно вызвать команду "Deployment\Upload to {имя сервера}". PyCharm покажет лог загрузки в отдельном окне File Transfer:



Рисунок-15

Далее переходим к настройке виртуального сервера.

Настройка виртуального сервера:

  1. Имеет смысл сделать "apt-get update".

  2. Для удобства можно установить midnight commander "apt install mc". Запустим mc. Видно, что создана папка /opt/testbot, в которую скопированы файлы проекта.

  3. Перейдём в папку проекта "cd /opt/testbot". Сделаем скрипт prepare.sh исполняемым: "chmod +x prepare.sh" и запустим его "./prepare.sh".

  4. В результате исполнения скрипта:

    1. создаётся папка с виртуальным окружением ubuntu_env, в которую с помощью утилиты pip устанавливаются необходимые пакеты по списку из requirements.txt,

    2. файл run.sh становится исполняемым,

    3. в папке /etc/systemd/system появляется симлинк на файл testbot.service.


Рисунок-16

Запуск службы:

  1. С помощью командой reboot по SSH или из панели управления командой "Действия\Перезагрузить". перезагружаем виртуальный сервер. 

  2. Если в исходном в исходном коде имеются указанные строки строки, то бот запускается:

  3. bot = telegram.Bot(token=settings.TOKEN, request=Request(**kwargs))

bot.send_message(chat_id=settings.MASTER_CHAT_ID, text='Я запущен')

Рисунок-17

В случае отсутствия вышеуказанных строк, подключимся к серверу по SSH или в веб-консоли по команде "Действия\Открыть консоль". Далее проверим состояние сервиса с помощью команды "systemctl status testbot". Должен отобразиться статус active (running):



Рисунок-18

Дальше проверяем работу чат-бота.

Перезапуск службы:

Для перезапуска сервиса имеется два способа:

  • Перезапустить виртуальный сервер из Панели управления.

  • Перезапустить только сам сервис из консоли с помощью команды "systemctl restart testbot".



Заключение.

В ходе выполнения курсовой работы был проведен обзор и сравнительный анализ технических средств для разработки чат-бота, а именно рассмотрены общие понятия чат-бота и его преимущества, а также где применяются чат-боты, была представлена статистика и анализ языков программирования и выбран язык для разработки чат-бота, а также произведен выбор других средств для реализации проекта. Таким образом Поставленные задачи на курсовое проектирование выполнены в полном объеме.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Понятие языка программирования [Электронный ресурс]. – URL: https://ibrain.kz/informatika/ponyatie-yazyk-programmirovaniya (Дата обращения: 17.05.2020).

2. Виды языков программирования [Электронный ресурс]. – URL: http://csaa.ru/vidy-jazykov-programmirovanija/ (Дата обращения: 17.05.2020).

3. Рейтинг языков программирования 2020 [Электронный ресурс]. – URL: https://techrocks.ru/2020/02/08/programming-languages-rank-2020/ (Дата обращения: 17.05.2020).

4. Язык программирования Python [Электронный ресурс]. – URL: https://web-creator.ru/articles/python (Дата обращения: 17.05.2020).

5. Интернет технологии [Электронный ресурс]. – URL: https://www.internet-technologies.ru/articles/php-ruby-python (Дата обращения: 17.05.2020).

6. Википедия [Электронный ресурс]. – URL: https://ru.wikipedia.org/wiki/JavaScript (Дата обращения: 17.05.2020).

7. Введение в язык Java [Электронный ресурс]. – URL: http://www.codenet.ru/webmast/java/03.php (Дата обращения: 17.05.2020).


8. Хабр, учебный процесс в IT [Электронный ресурс]. – URL: https://habr.com/ru/company/skillbox/blog/443412/ (Дата обращения: 17.05.2020).