Это старая версия документа!
В данном программном документе приведено руководство системного программиста по установке и настройке системы сбора, обработки и хранения результатов измерений (далее система), предназначенной для сохранения и предоставления любых переданных данных, а в частности – с учебных устройств, разработанных на кафедре ПМиВТ МФ МГТУ им. Н. Э. Баумана.
Функциональным назначением системы является приём, сохранение и предоставление данных, полученных в процессе проведения замеров. Основные функции системы состоят в приёме и обработке данных JSON формата, сохранение и предоставлении по запросу, для последующей обработкой операторами. Для функционирования системы требуется серверная операционная си-стема, система управления базами данных, веб-сервер с поддержкой языка программирования PHP 7.2 и программный код.
Система сбора, обработки и хранения результатов измерений состоит из комплекса программного обеспечения, необходимого для её выполнения. На серверной операционной системе запущен веб-сервер, ожидающий HTTP запроса. При вхождение запроса выполняется сценарий, зависящий от вызываемого при запросе файла.
Подготовка системы к работе делится на несколько этапов, выполнение которых будет рассматриваться на примере системы GNU/Linux Debian 9.
Обновите базу пакетов
$ apt-get update
Найдите нужный пакет
$ apt-cache search mysql-server
Установите пакет mariaDB
$ apt-get install mariadb-server-*
Если будет просить ввести root пароль, то оставьте его пустым Инициализируйте систему безопасности MySQL
$ mysql_secure_installation
После этого система будет задавать вопросы, рассмотренные в разделе «сообщения системного программисту».
Откройте конфигурационный файл «50-server.cnf» расположенный по пути /etc/mysql/mariadb.conf.d/ и в разделе [mysql] добавьте строку lower_case_table_names = 1 для регистронезависимости имён таблиц. Перезапустите mysql для внесения изменений
$ systemctl restart mysql
Зайдите в mysql и создайте новую базу данных:
$ mysql –u root –p (после нужно ввести пароль) CREATE DATABASE Production;
Если ошибок нет, то база успешно создана. Создайте пользователя, под которым сайт будет работать с БД, пользователя для запроса данных, и пользователя-администратора базы данных для удалённого администрирования, следующей командой:
CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘password’;
Выдайте пользователям привилегии. Для сайта:
$ GRANT SELECT,INSERT,UPDATE,DELETE ON production.* TO ‘username’@’localhost’ IDENTIFIED BY ‘password’;
Для запроса данных:
$ GRANT SELECT ON production.* TO ‘username’@’localhost’ IDENTIFIED BY ‘password’; GRANT FILE ON *.* TO ‘username’@’localhost’ IDENTIFIED BY ‘password’;
Для администратора:
$ GRANT ALL PRIVILEGES ON production.* TO ‘username’@’localhost’ IDEN-TIFIED BY ‘password’;
Выйдите из базы данных.
$ Exit
Воссоздайте структуру базы данных с помощью SQL файла дампа.
mysql -u username -p Production < data-dump.sql
(Структура базы данных рассматривается в Приложении 1.)
Установите apache2 веб-сервер
$ apt-get install apache2
Создайте каталог для сайта.
$ mkdir –p /var/www/site.ru/
Настройте конфигурацию виртуального хоста.
$ nano /etc/apache2/sites-available/site.ru.conf
Вставьте в созданный файл конфигурации следующие настройки:
<VirtualHost *:80> ServerAdmin admin@e-mail ServerName site.ru ServerAlias www.site.ru DocumentRoot /var/www/site.ru/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/site.ru> Options ExecCGI </Directory> </VirtualHost>
Сохраните файл и включите сайт.
a2ensite site.ru.conf
Отключите стандартный сайт.
a2dissite 000-default.conf
Перезапустите apache.
systemctl restart apache2
Импортируйте ключ подписи и включите PPA.
$ wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -echo "deb https://packages.sury.org/php/stretch main" | sudo tee /etc/apt/sources.list.d/php.list
Установите сертификаты.
$ apt-get install ca-certificates apt-transport-https
Обновите пакеты.
$ apt-get update
Установите пакеты php 7.2 с наиболее используемыми расширениями
$ apt-get install php7.2 php7.2-cli php7.2-common php7.2-opcache php7.2-curl php7.2-mbstring php7.2-mysql php7.2-zip php7.2-xml php7.2-json
Проверьте результат установки запросом версии php
$ php –v
В конфигурационном файле php.ini располагающемся по пути /etc/php/7.2/apache2/php.ini значение «short_open_tag» укажите «on».
Для доступа к файлам сайта можно использовать FTP или SSH.
Установите пакет ftp
$ apt-get install proftpd
Откройте конфигурационный файл proftpd.conf, путь к которому /etc/proftpd/proftpd.conf В строке DefaultRoot укажите /var/www/site.ru/ В строке User укажите пользователя, которого создадите позднее http-admin В строке Group укажите группу http Проверьте, чтобы весь раздел <Anonymous> был закомментирован.
Установите SSH
$ apt-get install openssh-server
Запустите сервис ssh
$ service ssh start
Для загрузки файла на сервер используйте команду
$ scp /path/to/file.http User@remote.host:/var/www/site.ru
Для загрузки папки на сервер используйте команду с ключом –r
$ scp –r path/to/dir User@remote.host:/var/www/site.ru
Для скачивания с сервера на локальную машину используйте команду
$ scp User@remote.host:/var/www/site.ru/file.http local/path/to/dir
Создайте группу и http пользователя этой группы.
$ groupadd http $ adduser User $ usermod –aG sudo,http User
Выдайте пользователю владение директорией сайта
$ chown –R User:http /var/www/site.ru/
Для возможности экспорта из mysql выдайте разделу /var/www/site.ru/export/ доступ другим пользователям.
$ chmod –R 777 /var/www/site.ru/export/
В случае, если для доступа к файлам сайта было решено использовать FTP, создайте пользователя http-admin и добавьте ему группу http
$ adduser http-admin $ usermod –aG http http-admin
Смените владельца директории сайта на группу http
$ chgrp –R http /var/www/site.ru/
Для проведения проверки системы рекомендуется внести данные в ручном режиме через веб-интерфейс, или же провести тестовую передачу данных с устройства. После выполнение внесения данных, проверьте хранимые данные SQL запросом:
SELECT sd.Num as Num,sd.Type as Type,sd.Value as Value,li.Date as Date,li.uid as Unit FROM save_data sd INNER JOIN ( SELECT Num_i as Num, Date, ul.uname as uid FROM info inf INNER JOIN ( SELECT uNum,uName as uname FROM units_list) as ul ON inf.Prib_id = ul.uNum ORDER BY inf.Num_i DESC) as li ON li.Num = sd.Num
При запуске инициализации системы безопасности MySQL будут заданы вопросы:
«Enter current password for root (enter for none)». Нажмите Enter, текущий пароль root пустой.
«Set root password? [Y/n]». Введите Y. Да, установить пароль root для подключения к MariaDB. Теперь введите «новый» пароль root.
«Remove anonymous users? [Y/n]». Введите Y. Удалить анонимного пользователя.
«Disallow root login remotely? [Y/n]». Введите Y. Запретить подключаться под пользователем root к MariaDB с удаленных машин.
«Remove test database and access to it? [Y/n]». Введите Y. Удалить тестовую базу test.
«Reload privilege tables now? [Y/n]». Введите Y. Перезагрузить таблицу привилегий для вступления их в силу.