====== АННОТАЦИЯ ====== В данном программном документе приведено руководство системного программиста по установке и настройке 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 успешно добавлена"