Файл: Разработка чатбота для управления кластером виртуальных машин.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 потоками стандартного ввода, стандартного вывода, стандартного вывода сообщений об ошибках и получение кодов возврата от этих процессов.
-
ПРОЕКТНАЯ ЧАСТЬ
Требуется развернуть чат-бота на виртуальном сервере в облаке с возможностью обновления файлов на ПЭВМ.
Разработку будем осуществлять на Python в среде PyCharm на ПЭВМ с установленной операционной системой Windows 10. Используется виртуальное окружение.
Для выполнения данных условий необходимо создание виртуального сервера для этого:
-
В Панели управления облачной инфраструктурой в существующем или новом проекте активируем KVM. -
В меню "Серверы" добавляем новый сервер. Подойдёт минимальная конфигурация с 1 ядром, 1 ГБ ОЗУ с диском на 10 ГБ и операционная система Ubuntu 18. -
Понадобится статический IP для подключения по SSH. В поле «Внешний IP-адрес» выбираем опцию «Случайный». -
В настройках подключения добавим разрешающие правила для межсетевого экрана: SSH, WEB.
Рисунок -7
По нажатию кнопки «Создать» осуществляется развёртывание сервера. Если пароль для root не был указан заранее, то он генерируется автоматически. После создания сервера просмотреть пароль можно в основных настройках сервера: кликните на сервер в списке или воспользуйтесь меню «Действия\Изменить». Там же отображается назначенный внешний IP-адрес.
Подключаемся к серверу по SSH или через веб-консоль noVNC посредством меню "Действия\Открыть консоль". После авторизации получаем стандартное приглашение:
Рисунок -8
Настройка скриптов для развёртывания службы в виртуальном окружении:
-
Разместим в проекте PyCharm скрипты для обслуживания службы в целевой среде: deploy.sh, run.sh, testbot.service. -
Скрипт deploy.sh для развёртывания и настройки виртуального окружения и автозапуска службы: -
#!/bin/bash -
-
# Запускать в папке проекта (/opt/testbot) -
apt-get update -
apt install -y python3-pip -
apt install -y python3-venv -
# создадим виртуальное окружение и установим в него зависимости согласно requirements.txt -
python3 -m venv ubuntu_env -
-
source ubuntu_env/bin/activate -
-
pip install -r requirements.txt -
-
deactivate -
-
# дадим право на исполнение скрипта запуска -
chmod +x run.sh -
-
# сконфигурируем сервис -
ln -s /opt/testbot/testbot.service /etc/systemd/system/testbot.service -
chmod 664 /etc/systemd/system/testbot.service -
systemctl daemon-reload -
-
# добавим в автозагрузку -
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 с виртуальным сервером:
-
Синхронизация файлов настраивается в меню PyCharm "Tools\Deployment\Configuration". -
На вкладке 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
Далее переходим к настройке виртуального сервера.
Настройка виртуального сервера:
-
Имеет смысл сделать "apt-get update". -
Для удобства можно установить midnight commander "apt install mc". Запустим mc. Видно, что создана папка /opt/testbot, в которую скопированы файлы проекта. -
Перейдём в папку проекта "cd /opt/testbot". Сделаем скрипт prepare.sh исполняемым: "chmod +x prepare.sh" и запустим его "./prepare.sh". -
В результате исполнения скрипта:-
создаётся папка с виртуальным окружением ubuntu_env, в которую с помощью утилиты pip устанавливаются необходимые пакеты по списку из requirements.txt, -
файл run.sh становится исполняемым, -
в папке /etc/systemd/system появляется симлинк на файл testbot.service.
-
Рисунок-16
Запуск службы:
-
С помощью командой reboot по SSH или из панели управления командой "Действия\Перезагрузить". перезагружаем виртуальный сервер. -
Если в исходном в исходном коде имеются указанные строки строки, то бот запускается: -
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).