Сервис "Файловое хранилище"
Установка filestorage
Так как у многих МФЦ в качестве сервера используется openserver установка будет показана на его примере
1) Необходимо получить установочный архив - скачать его нужно из личного кабинета МФЦ на портале обновлений
2) Выбрать сервер, на котором будет располагаться хранилище - это должена быть машина с большим объемом диска, по процессору и памяти требования не большие. На этой машине должен быть открыть 80 порт для доступа с сервера приложений, сервера ЭДО, серверов СМЭВ2, СМЭВ3 (если они разделены).
3) На выбранном сервере развернуть инфраструктуру для работы приложения - web сервер apache + php5(7). Для примера будем использовать openserver.
4) Распаковать установочный архив в папку, являющуюся корнем сайта.
5) Переименовать файл /config/config.php.tmpl в /config/config.php
6) Открыть его текстовым редактором и прописать настройки
array(
'name' => 'test', // Имя хранилища - нужен при множестве хранилищ - пока не используется
'db' => array( // Доступ к базе в которой ведется список сохраненных файлов
'host' => '192.168.1.5',
'port' => '5432',
'dbname'=> 'filestorage41',
'user' => 'postgres',
'pass' => '2222'
),
'prefix' => '', // Префикс ИД сохрененного файла - нужен при множестве хранилищ - пока не используется
'path_for_files'=>'C://bigData/dataFS' // Имя папки для хранения файлов
параметр db - это НЕ база данных, на которой работает МФЦ, это отдельная база только для хранилища - в ней хранятся ссылки на файлы. Если пароль к БД у вас содержит спецсимволы, то вписать его нужно в виде - urlencode('ваш пароль') Пример :
'dbname'=> 'filestorage41',
'user' => 'postgres',
'pass' => urlencode('!@#$QAZ')
7) Открыть приложение в браузере, программа педложит создать базу - нажать "Создать базу"
8) После создания базы страница перезагрузится и сообщит о том, что сервер работает.
Необходимые модули PHP:
php5-fileinfo
Масштабирование файлового хранилища
При необходимости файловое хранилище можно горизонтально масштабировать. Ниже будет приведен пример горизонгального масштабирования ФХ.
Создадим 3 сервера для хранения файлов - 3 отдельных машины с настроенным окружением (веб сервер + PHP), лучше всего настроить один, а потом скопировать на остальные или воспользоваться вредствами виртуалтзации типа Docker. База данных серверов ФХ может быть как одна на всех так и отдельная для каждого.
сервера будут называться fs1, fs2, fs3. также нам понадобится 4-й сервер, который будет заниматься балансировкой нагрузки. В качестве балансировщика будем использовать nginx.
На каждом из серверов-хранилищ в конфигурационном файле нужно прописать префикс хранилища, этот префикс должен соответствовать имени сервера
После этого файлы сохраняемые на этом ФХ будут иметь идентификатор вида fs1_12345
Теперь настроим балансир. После установки nginx его нужно настроить как балансировщик нагрузки
В конфигурационном файле (в debian/ubuntu linux это /etc/nginx/nginx.conf) нужно заменить секцию http на следующее содержимое
http {
upstream fs.ru {
server 192.168.10.5;
server 192.168.10.6;
server 192.168.10.7;
}
server{
listen 80;
location / {
proxy_pass http://fs.ru;
}
location ~.*fs1_.* {
proxy_pass http://192.168.10.5;
}
location ~.*fs2_.* {
proxy_pass http://192.168.10.6;
}
location ~.*fs3_.* {
proxy_pass http://192.168.10.7;
}
}
}
адреса 192.168.10.5, 192.168.10.6, 192.168.10.7 - это ip серверов хранилищ fs1, fs2, fs3 соответственно, можно использовать и dns имена, в таком случае необходимо обеспечить доступность серверов хранилищ по именам с сервера балансировщика.
такая настройка говорит серверу, что все запросы в адресе которых есть строка "fs1_" нужно отправлять на сервер 192.168.10.5, так же и для fs2_ и fs3_(это нужно для операций чтения файлов), запросы не подходящие под эти услови будут отправлены на сервер fs.ru. В свою очередь запросы к fs.ru будут проксироваться динамически на сервера хранилищ (описано в секции upstream). По умолчанию метод проксирования - round-robin, т.е. запросы по очереди пересылаются на следующий сервер из списка. В приведенном примере первый запрос пойдет на 192.168.10.5, второй на 192.168.10.6, третий на 192.168.10.7 четвертый снова на 192.168.10.5 и так далее.
В настройках программы в форме "НАСТРОЙКА ХРАНЕНИЯ БОЛЬШИХ ФАЙЛОВ" нужно указать адрес проксирующего сервера
после этих настроек файлы при сохранении в ФХ будут динамически распределяться между несколькими экземплярами серверов. Таким образом для больших МФЦ можно обеспечить повышенную отказоустойчивость программы и уменьшить нагрузку на файловые хранилища.