Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:1605:643.mgul.16051-01_32_01 [2020/06/14 13:33] kostylev |
doc:1605:643.mgul.16051-01_32_01 [2020/06/23 12:59] (текущий) kostylev [Программные зависимости] |
||
---|---|---|---|
Строка 6: | Строка 6: | ||
Программный интерфейс входит в состав системы отображения метеорологических данных МФ МГТУ им. Н.Э. Баумана. | Программный интерфейс входит в состав системы отображения метеорологических данных МФ МГТУ им. Н.Э. Баумана. | ||
- | Основные функции программного интерфейса состоят получении, передачи и обработке метеорологической информации в формате JSON. | + | Основные функции программного интерфейса состоят в получении, передачи и обработке метеорологической информации в формате JSON. |
====== Структура системы ====== | ====== Структура системы ====== | ||
Строка 13: | Строка 13: | ||
Программный интерфейс в ходе своей работы использует Redis - резидентную систему управления базами данных NoSQL, работающую со структурами данных "ключ-значение". Redis работает на порте 6379. | Программный интерфейс в ходе своей работы использует Redis - резидентную систему управления базами данных NoSQL, работающую со структурами данных "ключ-значение". Redis работает на порте 6379. | ||
- | ====== Установка необходимых программных зависимостей ====== | + | ====== Программные зависимости ====== |
Для функционирования программного интерфейса необходимо инсталлировать резидентную систему управления базами данных класса NoSQL Redis версии 6.0.1. | Для функционирования программного интерфейса необходимо инсталлировать резидентную систему управления базами данных класса NoSQL Redis версии 6.0.1. | ||
Строка 28: | Строка 28: | ||
* graphql - модуль, предоставляющий возможность проектирования, используя архитектуру GraphQL | * graphql - модуль, предоставляющий возможность проектирования, используя архитектуру GraphQL | ||
* express-graphql - модуль, связывающий фреймворк express и graphql | * express-graphql - модуль, связывающий фреймворк express и graphql | ||
- | Все вышеперечисленные модули устанавливаются с помощью команды: | + | * fetch - модуль для отправки асинхронных запросов |
+ | Все вышеперечисленные можно установить по-отдельности с помощью команды: | ||
<code>$ npm install "имя пакета"</code> | <code>$ npm install "имя пакета"</code> | ||
+ | Также все программные зависимости можно установить одной командой. Данный процесс описан в разделе "Установка программного интерфейса на сервер". | ||
Все вышеописанное программное обеспечение необходимо устанавливать на операционные системы семейства Linux и Windows. При использовании Windows единственным ограничением будет необходимое использование операционной системы Windows 7 или выше. | Все вышеописанное программное обеспечение необходимо устанавливать на операционные системы семейства Linux и Windows. При использовании Windows единственным ограничением будет необходимое использование операционной системы Windows 7 или выше. | ||
+ | ====== Установка программного интерфейса на сервер ====== | ||
+ | ===== Установка NO-SQL базы данных Redis ===== | ||
+ | Сначала необходимо установить кэширующее средство Redis. Для этого: | ||
+ | - Обновим пакет apt: | ||
+ | <code>$ sudo apt update</code> | ||
+ | 2. Установим пакет build-essential: | ||
+ | <code>$ sudo apt-get install build-essential</code> | ||
+ | 3. Установим Redis: | ||
+ | <code>$ sudo apt install redis-server</code> | ||
+ | 4. Перезагрузим Redis: | ||
+ | <code>$ sudo systemctl restart redis.service</code> | ||
+ | 5. Поставим автозапуск сервера Redis при запуске сервера: | ||
+ | <code>$ sudo systemctl enable redis.service</code> | ||
+ | 6. Проверим работу Redis: | ||
+ | <code>$ redis-cli</code> | ||
+ | 7. Введем команду: | ||
+ | <code>$ ping</code> | ||
+ | В результате должно вывестись сообщение "PONG", что будет означать успешную установку Redis | ||
+ | |||
+ | ===== Установка Node.js ===== | ||
+ | |||
+ | 1. Установим сам Node.js: | ||
+ | <code>$sudo apt install nodejs </code> | ||
+ | 2. Установим менеджер пакетов: | ||
+ | <code>$sudo apt install npm </code> | ||
+ | |||
+ | ===== Установка программных зависимостей ===== | ||
+ | Для установки ранее описанных программных зависимостей необходимо создать файл package.json, находящийся в приложении 1 данного программного документа, после чего, поместив его в директорию проекта, ввести команду: | ||
+ | <code>$npm install</code> | ||
+ | Все необходимые программные зависимости установятся одной командой. | ||
====== Настройка программного интерфейса ====== | ====== Настройка программного интерфейса ====== | ||
Строка 42: | Строка 74: | ||
app.use('/GraphQL',GraphQLRouter) | app.use('/GraphQL',GraphQLRouter) | ||
</code> | </code> | ||
+ | Также допустимо и отчасти рекомендуется использовать GraphQL явно, вставляя его в основной файл Express-приложения для большего быстродействия, без добавления в папку routes. | ||
====== Проверка работоспособности ====== | ====== Проверка работоспособности ====== | ||
Строка 59: | Строка 92: | ||
|Redis connection failed | База данных Redis, необходимая для работы программного интерфейса, либо выключена, либо работает неисправно. | Проверить запущена ли база данных Redis. В случае повторного возникновения данного сообщения перезагрузить ее, или переустановить, при необходимости. | | |Redis connection failed | База данных Redis, необходимая для работы программного интерфейса, либо выключена, либо работает неисправно. | Проверить запущена ли база данных Redis. В случае повторного возникновения данного сообщения перезагрузить ее, или переустановить, при необходимости. | | ||
+ | ====== Приложение 1 ====== | ||
+ | ===== Файл package.json ===== | ||
+ | <code> | ||
+ | { | ||
+ | "name": "diplom", | ||
+ | "version": "0.0.0", | ||
+ | "private": true, | ||
+ | "scripts": { | ||
+ | "start": "node ./bin/www" | ||
+ | }, | ||
+ | "dependencies": { | ||
+ | "cookie-parser": "~1.4.4", | ||
+ | "debug": "~2.6.9", | ||
+ | "express": "~4.16.1", | ||
+ | "express-graphql": "^0.9.0", | ||
+ | "fetch": "^1.1.0", | ||
+ | "graphql": "^15.0.0", | ||
+ | "http-errors": "~1.6.3", | ||
+ | "moment": "^2.24.0", | ||
+ | "morgan": "~1.9.1", | ||
+ | "node-fetch": "^2.6.0", | ||
+ | "node-jq": "^1.11.0", | ||
+ | "pug": "2.0.0-beta11", | ||
+ | "redis": "^2.8.0", | ||
+ | "request": "^2.88.0", | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </code> | ||