====== АННОТАЦИЯ ======
В данном программном документе приведено руководство системного программиста по установке и настройке WEB-интерфейса предоставляющего возможность ввода данных о результатах измерения прибора КЛОП-МН в систему хранения и обработки результатов измерений.
====== Структура программы ======
Структура WEB-интерфейса повторяет структуру сервера webrobo.mgul.ac.ru
Программа включает в себя модули обработки приема HTTP-запросов и парсинга их содержимого, а также WEB-страницу, состоящую из HTML файла, файлов скрипта и стилей для него, а также конфигурационного файла, содержащего наборы мест измерений.
В корневой директории проекта расположены запускающий файл "serv.js", а также файлы, содержащие информацию о проекте и об используемых модулях.
В директории "/node_modules" хранятся сами модули.
По пути "/public/klop_in" находятся статические файлы страницы отправки записей в базу "index.html", "style.css", "script.js", файл с группами точек "places.json" и файл конфигурации "settings.json"
По пути "/public/klop_in/places" находятся статические файлы страницы редактирования списка групп точек "index.html", "style.css", "script.js"
В директории "/routes" лежит скрипт "klop_api.js", отвечающий за пересылку данных на сервер с базой данных.
====== Настройка программы ======
===== Подготовка к размещению программы =====
Обновите базу пакетов
$ apt-get update
Установите необходимый для работы пакет node.js
$ apt-get install nodejs
Теперь сервер готов к размещению программы.
===== Размещение программы =====
Поместите архив с проектом в выбранную вами директорию. В данном примере используем удаленное подключение по SSH.
$ scp d:/klop_in.zip nozemiso@webrobo.mgul.ac.ru:/home/nozemiso
Распакуйте архив с программой
unzip klop_in.zip
Удалите скачанный архив
rm klop_in.zip
Теперь программа готова к дальнейшей настройке, корневой директорией проекта является "/home/nozemiso/klop_in"
===== Настройка списков мест проведения измерений =====
Файл со списком мест (/public/klop_in/places.json) имеет следующую структуру.
{
"ИМЯ_НАБОРА_МЕСТ_1": ["ИМЯ_МЕСТА_1", "ИМЯ_МЕСТА_2", ..., "ИМЯ_МЕСТА_N"],
"ИМЯ_НАБОРА_МЕСТ_2": ["ИМЯ_МЕСТА_1", "ИМЯ_МЕСТА_2", ..., "ИМЯ_МЕСТА_N"],
...
"ИМЯ_НАБОРА_МЕСТ_N": ["ИМЯ_МЕСТА_1", "ИМЯ_МЕСТА_2", ..., "ИМЯ_МЕСТА_N"]
}
Пример: файл списка мест, с сервера webrobo
{
"МГУЛ 1 этаж": ["4", "30", "43", "Акт. зал", "65", "Буфет", "103"],
"МГУЛ 2 этаж": ["270", "261", "251", "242", "233", "222", "204"],
"МГУЛ 3 этаж": ["303", "319", "334", "344", "356", "365", "374"],
"МГУЛ 4 этаж": ["476", "463", "449", "440", "432", "419", "404"],
"МГУЛ 5 этаж": ["505", "520", "532", "540", "558", "570", "579"]
}
Чтобы создать новый набор мест следует добавить в файл строку соответствующего формата. Также можно использовать готовую форму для ввода новых групп точек после окончания настройки программы. Всю информацию вы найдете в пункте документации "Руководство пользователя"
===== Настройка и запуск сервера =====
Чтобы запустить WEB-сервер введите следующую команду, находясь в корневой директории проекта.
1. Создаем файл конфигурации
touch /etc/systemd/system/klop_in-application.service
2. Вносим содержимое и сохраняем
[Unit]
After=network-online.target
[Service]
WorkingDirectory=ПУТЬ_К_КОРНЕВОЙ_ДИРЕКТОРИИ_ПРОЕКТА
ExecStart=ПУТЬ_К_ФАЙЛУ_SERV_JS
Restart=on-failure
[Install]
WantedBy=multi-user.target
3. Активируем сервис
systemctl enable klop_in-application
4. Активируем сервис
systemctl start klop_in-application
По умолчанию программа будет прослушивать 3000 порт. Чтобы это изменить в файле serv.js измените строку 11. При изменении порта на 80 эта строка примет следующий вид:
const PORT = process.env.PORT || 80;
===== Настройка работы программы =====
Для того чтобы дать доступ к редактированию групп точек определенного круга лиц, предусмотрены api-ключи, который вы можете изменять самостояльно. Чтобы установить связь между человеком и ключом рекомендуеся использовать ключ, содержащий в себе указание на человека или организацию, например, имя_фамилия_ключ.
Редактирование api-ключей производится путем редактирования файла public/klop_in/settings.json
Пример файла settings.json
{
"keys" : ["NeKKxx1", "key1", "key2"],
"delayedSending" : true
}
Рассмотрим функционал используемых полей:
Поле "keys" представляет собой список ключей, используя которые пользователь может редактировать список групп точек. Для добавления нового ключа внесите его в список поле keys. Для удаления - удалите ключ из поля.
Пример - измененный файл settings.json, удален ключ "key2", добавлен ключ "NewKey"
{
"keys" : ["NeKKxx1", "key2", "NewKey"],
"delayedSending" : true
}
Поле "delayedSending" отвечает за режим отправки записей. Если поле установлено в true, записи отправляются в базу раз в секунду. Если поле установлено в false - задержки при отправке записей не происходит.
====== Проверка программы ======
Для проверки программы рекомендуется ввести в интерфейс какие-либо данные, а в поле Api key ввести ключ "NeKKxx1". Данный ключ связан с тестовым устройством "TEST".
В случае успешного формирования и выполнения запросов вы увидите сообщение об успешной отправке строк в базу.
Затем перейдите по ссылке "Просмотр базы данных" и убедитесь в наличии тестовой записи и соответствии данных в ней введенным вами данным.
Для проверки работы формы редактирования ключей рекомендуется ввести в поле Api key ввести ключ "NeKKxx1", данный ключ дает доступ на редактирование набора групп точек.
* В поле Действие выбрать "добавить"
* В поле Название группы ввести Test
* В поле Кол-во точек ввести 2
* В поле название точек, точки назвать соответственно test1, test2
При успешном добавлении группы точек, появится сообщение "Группа Test успешно добавлена"