ПЗ Ибрагимов (1228405), страница 7
Текст из файла (страница 7)
В начале 2015 года компания Netcraft опубликовала исследования популярности http-серверов [25].
В рейтинге активных сайтов Apache прочно закрепился в лидерах и занимает 50,72% (+0,15) доли рынка (89,8 млн хостов). На втором месте держится nginx с долей в 14,82% (+0,09). На третьем месте IIS, занимающий 10,55% (в прошлом месяце было 11,72%). На четвёртом месте http-сервер, обслуживающий инфраструктуру Google – 8,12%. При сужении выборки до миллиона крупнейших web-сайтов доли Apache, nginx и IIS составляют 49,57%, 21,09% и 12,27%, соответственно. За месяц популярность nginx среди крупнейших сайтов выросла с 20,72% до 21,09%.
Рисунок 17 – Рейтинг популярности web-серверов
При установке сервера в систему я пользовался пакетом «lamp». Этот пакет включает в себя сразу все инструменты для поднятия сервера, установки и настройки MySQL сервера и PHP интерпритатора последней версии. Все это можно установить отдельно, скачивая и устанавливая отдельный пакет, но зачем «создавать велосипед», когда умные люди уже все сделали и предоставили удобную возможность пользоваться их наработками.
-
Работа сервера и клиентов
Так же перед началом разработки надо понять, как будет происходить обмен данными между сервером и клиентом. Как отдельные составляющие сервера будут обмениваться информацией и как, пользователь будет получать запрашиваемую информацию.
Сервер представляет собой персональный компьютер, подключенный к локальной сети предприятия. На котором установлена серверная версия Ubuntu 12.04 LTS. Поверх установлен LAMP-сервер, в который входит Apache 2.2.3, PHP 5.5, MySQL 5.6.23 [26].
На клиентских машинах стоит операционная система Windows XP с предустановленным Internet Explorer. Но в списке разрешенного программного обеспечения находится web-браузер Opera, который и будет использоваться для доступа к информации на сервере, в связи с тем, что он лучше поддерживает JavaScript и более быстр в работе.
Вся работа сервера и клиента строиться на передаче данных по HTTP протоколу на восьмидесятом порту по внутренней локальной сети предприятия.
Рисунок 18 – Схема работы сервера и клиентов
Клиент заходит в web-браузер, открывает серверное программное обеспечение, перейдя по нужному адресу. Благодаря информации расположенной на странице, клиент формирует запросы к серверу, сервер обрабатывает эти запросы и запускает соответствующие PHP-скрипты. PHP-скрипты в свою очередь, если требуется, то обращаются к базе данных MySQL и возвращают результат сгенерированной HTML-разметки веб-серверу. Веб-сервер передает данные обратно клиенту, а web-браузер клиента отображает сгенерированную PHP-скриптом информацию в виде статичной HTML-страницы.
-
Проектирование и разработка базы данных
После того, как был сделан выбор базы данных (БД), следует перейти к этапу проектирования и разработки новой базы данных.
-
Проектирование базы данных
Проектирование БД – одна из наиболее сложных и ответственных задач, связанных с созданием информационной системы (ИС). В результате её решения должны быть определены содержание БД, эффективный для всех её будущих пользователей способ организации данных и инструментальные средства управления данными.
Основная цель процесса проектирования БД состоит в получении такого проекта, который удовлетворяет следующим требованиям:
-
корректность схемы БД, т.е. база должна быть гомоморфным образом моделируемой предметной области (ПО), где каждому объекту предметной области соответствуют данные в памяти ЭВМ, а каждому процессу – адекватные процедуры обработки данных;
-
обеспечение ограничений (на объёмы внешней и оперативной памяти и другие ресурсы вычислительной системы);
-
эффективность функционирования (соблюдение ограничений на время реакции системы на запрос и обновление данных);
-
защита данных (от аппаратных и программных сбоев и несанкционированного доступа);
-
простота и удобство эксплуатации;
-
гибкость, т.е. возможность развития и адаптации к изменениям предметной области и/или требований пользователей.
База данных для АРМ диспетчера автобазы была спроектирована в MS Visio и представлена на рисунке 19.
Рисунок 19 – Результат проектирования структуры базы данных
На данном этапе была спроектирована структура базы данных для АРМ диспетчера автобазы. Учтены все требуемые связи, выделены первичные ключи и создана визуальная схема в MS Visio.
-
Создание базы данных
После того, как была спроектирована структура будущей базы данных, можно переходить к этапу создания базы данных на сервере. Существует два способа создания базы данных на сервере:
-
консольный;
-
графический.
Первый способ – консольный, больше подходит опытным пользователям и менее удобен в использовании. Для того чтобы создать базу данных с помощью консоли, мы должны подключится к серверу MySQL и выполнить следующий запрос:
create database имя_базы_данных;
Перед тем, как в новой БД создать таблицы, нам надо указать серверу в какую именно БД мы создаем таблицы, т.е. надо выбрать БД для работы. Для этого используется оператор use. Синтаксис выбора БД для работы следующий:
use имя_базы_данных;
Для создания таблиц в SQL существует оператор create table. Создание базы данных имеет следующий синтаксис:
create table имя_таблицы (имя_первого_столбца тип, имя_второго_столбца тип, ..., имя_последнего_столбца тип );
Использование первого способа – это не самый лучший вариант создания БД, т.к. высока вероятность допущения ошибки, плюс надо обладать навыками работы с консолью, а так же знать нюансы определенных запросов.
Поэтому существует второй способ – графический. Для создания БД используется графический интерфейс, с помощью которого и происходит создание БД на сервере. Есть множество возможных программ, которые предоставляют возможности управления БД с помощью графического интерфейса. Для создания АРМ диспетчера автобазы использовалась программа, написанная на PHP – phpMyAdmin [27].
Создание новой БД с помощью phpMyAdmin изображено на рисунке 20.
Рисунок 20 – Создание новой базы данных с помощью phpMyAdmin
Так же просто происходит и создание новой таблицы в БД. Пример изображен на рисунке 21.
Рисунок 20 – Создание новой таблицы в БД с помощью phpMyAdmin
С помощью phpMyAdmin были созданы все таблицы по структуре, спроектированной в пункте 3.5.1.
-
Разработка АРМ
В данном подразделе описаны основные этапы разработки программной составляющей АРМ диспетчера автобазы.
Все страницы АРМ создавались с помощью PHP-генерации страницы на сервере. Для более привлекательного интерфейса и повышения функциональности страниц использовались такие библиотеки JavaScript, как:
-
jQuery 2.1.0 [28];
-
Bootstrap 3.0 [29].
-
Подготовка форм путевых листов
Перед написанием программного продукта сначала требовалось решить, каким образом будут формироваться путевые листы (пункт 3.1.2.1), т.к. диспетчер будет работать только в браузере, без каких либо дополнительных программных средств.
Формы путевых листов были предоставлены заказчиком в виде MS Word документа. Необходимо было определить, каким образом сервер будет редактировать эти путевые листы, а так же как браузер будет их отображать и отправлять на печать.
В результате было найдено достаточно не тривиальное решение:
-
MS Word документ был скопирован в MS Excel в виде таблицы;
-
полученная MS Excel таблица была сохранена как .html-документ.
Полученные html-формы и используются на сервере для генерации новых путевых листов.
-
Форма входа и разграничение прав доступа
Первым делом при создании АРМ диспетчера автобазы требовалось учесть вопросы, касающиеся безопасности будущей системы, а так же разграничение прав пользователей. В связи с этим было решено создание формы входа в АРМ диспетчера автобазы. Для более надежной защиты при передаче данных пароля на сервер используется шифрование с помощью хеш-функции MD5.
Рисунок 21 – Форма входа в АРМ диспетчера автобазы
При попытке войти в систему с неправильными данными АРМ уведомит об этом пользователя.
Рисунок 22 – Уведомление о неправильности данных входа
После того, как пользователь ввел коректные «Логин» и «Пароль» система автоматически определит, какие права имеет данный пользователь и в зависимости от этого переадресует его на интерфейс диспетчера или заместителя начальника МАБ.
-
Создание интерфейса диспетчера
Интерфейс диспетчера делится на три основные составляющие:
-
создание нового путевого листа,
-
завершение путевого листа,
-
список путевых листов.
-
Создание нового путевого листа
Для автоматизации создания путевого листа было решено использовать списки для структурных подразделений, автомобилей, водителей и организаций заказчиков.
Часть PHP-скрипта, генерирующего страницу создания нового путевого листа приведен ниже.
<?php
date_default_timezone_set('Russia/Moscow');
include ('header.php');
echo '<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
Новый путевой лист
</h3>
</div>
<div class="panel-body">
<form action="add_new.php" role="form" method="POST">
<div class="form-group">
<select class="form-control" name="subdivision">
<option disabled selected>Выберите структурное подразделение</option>';
include ('../front/subdivision.php');
echo ' </select>
</div>’;
Как видно из примера каждый из списков создается с помощью подключаемого PHP-скрипта, в приведенном примере это:
include ('../front/subdivision.php');
Сам подключаемый PHP-скрипт выглядит следующим образом:
<?php
$sql = "SELECT * FROM structural_subdivision";
$stmt = $db->prepare($sql);
$stmt -> execute();
while($row = $stmt->fetch()) {
echo "<option value='{$row['name']}'";
if($structural_subdivision == $row['name']){
echo ' selected';
}
echo ">{$row['name']}</option>";
}
В результате был написан PHP-скрипт, который генерирует по запросу сервера html-страницу. Пример полученной страницы можно увидеть на рисунке 23.
Рисунок 23 – Форма создания нового путевого листа
















