Санкт-Петербургское государственное унитарное предприятие «Санкт-Петербургский информационно-аналитический центр» ПЛАТФОРМА АВТОМАТИЗАЦИИ ПОЛНОМОЧИЙ ОРГАНОВ ВЛАСТИ РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА Правообладатель: Санкт-Петербургское государственное унитарное предприятие «Санкт-Петербургский информационно-аналитический центр» Санкт-Петербург 2019 2 Содержание Обозначения и сокращения ..................................................................................................... 3 1. Общие сведения .............................................................................................................. 4 2. Структура программы..................................................................................................... 5 3. Настройка программы .................................................................................................... 6 4. Проверка программы ...................................................................................................... 14 5. Сообщения системному программисту ........................................................................ 15 3 Обозначения и сокращения В настоящем документе приняты следующие сокращения и обозначения: Сокращение Обозначения 1 Платформа ИОГВ ОМСУ ПО 2 Платформа автоматизации полномочий органов власти Исполнительные органы государственной власти Орган местного самоуправления Программное обеспечение «Статистика» Программный компонент «Статистика» Платформы Реестр Программный компонент «Реестр государственных и муниципальных услуг» Платформы Система криптографической защиты информации СКЗИ СУБД CMS Система управления базами данных Content management system; информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления контентом 4 Общие сведения 1.1. Описание системы 1.1.1 Описание Реестра Реестр предназначен для формирования и ведения в электронной форме Реестра государственных и муниципальных услуг (функций). Реестр выполняет следующие функции: хранение информации; обработка информации; предоставление информации. 1. Описание программного компонента «Статистика» Подсистема «Статистика» предназначена для: централизованного сбора, анализа и хранения статистических данных о предоставляемых ИОГВ государственных услугах, предоставляемых ОМСУ муниципальных услугах, предоставляемых государственными учреждениями и другими организациями услугах, в которых размещается государственное задание (заказ)а; предоставления статистических данных об указанных услугах. Подсистема «Статистика» выполняет следующие функции: сбор информации; хранение информации; обработка информации; предоставление информации. 1.1.2 1.2. Состав технических и программных средств 1.2.1. Состав технических и программных средств Реестра Используемое программное обеспечение, необходимое для развертывания: операционная система: Ubuntu Server 16.04 LTS 64bit, Oracle Linux 7.x; язык программирования: PHP; PHP-фреймворк: CodeIgniter 3.1; база данных: PostgreSQL; веб-сервер: apache HTTP server. 1.2.2. Состав технических и программных средств программного компонента «Статистика» Используемое программное обеспечение, необходимое для развертывания операционная система: Ubuntu Server 16.04 LTS 64bit, Oracle Linux 7.x; язык программирования: PHP; веб-фреймворк: 1С Битрикс; база данных: PostgreSQL; веб-сервер: apache HTTP server. 5 2. Структура программы 2.1. Структура Реестра Подсистема структурно представляет собой MVC-веб приложение, разработанное с использованием веб-фреймворка Codeigniter 3.1 и языка программирования PHP 7.1. В качестве СУБД используется база данных PostgreSQL версии 9.5. 2.2. Структура программного компонента «Статистика» Подсистема состоит из системы управления содержимым сайта 1С Битрикс, а также компонентов, реализующие внутреннюю логику подсистемы, разработанные с применением языка программирования PHP 7.1. Так же в состав подсистемы входит внутренняя база данных, которая агрегирует статистические данные. 6 Настройка программы 3.1. Настройка Реестра 3.1.1. Настройка сервера приложений PHP-FPM Для настройки сервера приложений PHP-FPM необходимо выполнить следующие действия: скачать архив или установить пакет php7.x-fpm из репозитория ОС; установить зависимости для полноценной работы php из репозитория ОС: php7.xcommon php7.x-fpm php7.x-pgsql php7.x-mbstring php7.x-mbstring php7.x-xml php7.x-readline php7.x-fpm php7.x-gd php7.x-mcrypt php7.x-zip php-memcache php-memcached; установить следующие параметры в файл /etc/php/7.x/fpm/php.ini: short_open_tag = On session.gc_maxlifetime = 21600 mbstring.func_overload = 0 opcache.max_accelerated_files = 100000 session.save_handler = memcached session.save_path = "/tmp/memcached.sock" realpath_cache_size = 4096K; перезапустить сервер php7.x-fpm: systemctl restart php7.x-fpm.service. 3.1.2. Настройка веб-сервера Nginx Для настройки веб-сервера Nginx необходимо выполнить следующие действия: скачать архив или установить пакет nginx 1.xx.x из репозитория ОС; внести следующие параметры в файл /etc/nginx/nginx.conf: user www-data; worker_processes 4; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; 3. events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 165; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*.conf; }; создать файл /etc/nginx/sites-available/site.conf со следующим содержанием: server { listen 80; server_name $server_name; index index.html index.htm index.php; client_max_body_size 1024M; client_body_buffer_size 4M; fastcgi_read_timeout 300s; 7 root /srv/www/rgu; index index.html index.php; location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { expires max; log_not_found off; } location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }; создать ссылку на файл site.conf: ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/; разархивировать файлы статики в директорию /mnt/mount/; перезапустить веб-сервер Nginx: systemctl restart nginx.service. 3.1.3. Настройка сервера базы данных PostgreSQL 9.x Для настройки сервера базы данных PostgreSQL 9.x необходимо выполнить следующие действия: скачать архив или установить пакет Postgrsql 9.x из репозитория ОС; развернуть резервную копию схемы rgu; запустить сервер кеша командой systemctl start postgresql.service. 3.1.4. Настройка фреймворка CodeIgniter Для настройки фреймворка CodeIgniter необходимо выполнить следующие действия: распаковать актуальный дамп фреймворка "CodeIgniter" в директорию /srv/www/rgu/; внести следующие изменения в файл настроек фреймворка "CodeIgniter" /srv/www/rgu/application/config/database.php (Postgresql – подключение к базе данных): $active_group = 'default'; $query_builder = TRUE; $db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'postgres', 'password' => '', 'database' => 'rgu_pre', 'dbdriver' => 'postgre', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 8 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE ); внести следующие изменения в файл настроек фреймворка "CodeIgniter" /srv/www/rgu/application/config/config.php: $ssl = "ON"; $base_domain = 'domain'; - где domain используемое имя домена switch ($server_name) { case 'rgu.gu.spb.ru': $config['base_url_stat'] = 'http://statistic.gu.spb.ru/'; - URL сервера ПК "Статистика" $config['base_url_gu'] = 'https://gu.spb.ru/'; - URL портала "Государственных услуг" $config['storageSet'] = 'http://app.mfc.adc.spb:8081/StorageSet/SetImageServlet'; - URL сервиса StorageSet $config['storageGet'] = 'http://app.mfc.adc.spb:8081/ScanStorage/rs/scans/' . $config['personId'] . '/'; - URL сервиса ScanStorage break; }. 3.1.5. Запуск приложения Для запуска приложения необходимо запустить серверы postgresql, php7.x-fpm и nginx. После этого продукт будет доступен по адресу http://domain/, где domain - имя домена. 3.2. Настройка подсистемы «Статистика» 3.2.1. Настройка сервера PHP-FPM Для настройки сервера PHP-FPM необходимо выполнить следующие действия: скачать архив или установить пакет php7.x-fpm из репозитория ОС; установить зависимости для полноценной работы php из репозитория ОС: php7.xcommon php7.x-fpm php7.x-mysql php7.x-mbstring php7.x-mbstring php7.x-xml php7.x-readline php7.x-fpm php7.x-gd php7.x-mcrypt php7.x-zip php-memcache php-memcached; установить следующие параметры в файл /etc/php/7.x/fpm/php.ini: short_open_tag = On session.gc_maxlifetime = 1440 mbstring.func_overload = 2 opcache.max_accelerated_files = 100000 session.save_handler = memcacheв session.save_path = "/tmp/memcached.sock" realpath_cache_size = 4096K; перезапустить сервер php7.x-fpm: systemctl restart php7.x-fpm.service. 3.2.2. Настройка веб-сервера Nginx Для настройки веб-сервера Nginx необходимо: скачать архив или установить пакет nginx 1.xx.x из репозитория ОС; внести следующие параметры в файл /etc/nginx/nginx.conf: user www-data; worker_processes 4; worker_rlimit_nofile 65535; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { 9 use epoll; worker_connections 20000; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; charset utf-8; sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; keepalive_timeout 90; keepalive_requests 5000; types_hash_max_size 2048; send_timeout 10m; client_body_timeout 10m; client_header_timeout 10m; gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_min_length 1100; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript application/xml application/xml+rss text/javascript;gzip_disable "msie6"; fastcgi_buffers 16 512k; fastcgi_buffer_size 512k; fastcgi_connect_timeout 600s; fastcgi_busy_buffers_size 512k; fastcgi_max_temp_file_size 0; fastcgi_temp_file_write_size 10m; reset_timedout_connection on; server_names_hash_bucket_size 100; limit_req_zone $binary_remote_addr zone=req2rm:10m rate=2r/m; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*.conf; }; создать файл /etc/nginx/sites-available/site.conf со следующим содержанием: server { listen 80; server_name $server_name; server_name_in_redirect off; index index.html index.htm index.php; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; text/xml 10 proxy_set_header Host $host; client_max_body_size 1024M; client_body_buffer_size 200M; root /srv/www/statistic; fastcgi_read_timeout 3600s; fastcgi_send_timeout 3600s; location / { try_files $uri $uri/ @bitrix; #if (!-e $request_filename) { # rewrite ^(.*)$ /bitrix/urlrewrite.php break; #} } location ~ \.php$ { try_files $uri @bitrix; fastcgi_pass fastcgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location @bitrix { fastcgi_pass fastcgi; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php; } # location ^~ /bitrix/admin/ { # try_files $uri @bitrixadm; # fastcgi_pass fastcgi; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # include fastcgi_params; # } location @statistics { try_files $uri $uri/; fastcgi_pass fastcgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location /mail { try_files $uri $uri/; fastcgi_pass fastcgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location @bitrixadm{ fastcgi_pass fastcgi; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/bitrix/admin/404.php; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { 11 allow all; log_not_found off; access_log off; } location ~* \.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|woff|woff2|eot|otf|ttf|json)$ { root /srv/www/statistic; access_log off; expires max; error_page 404 = /404.html; } location ~ (/\.ht|/bitrix/modules|/upload/support/not_image|/bitrix/php_interface) { deny all; } location ~ /.svn/ { deny all; } location ~ /\.ht { deny all; } }; создать ссылку на файл site.conf: ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sitesenabled/; разархивировать файлы статики в директорию /mnt/mount/; перезапустить веб-сервер Nginx: systemctl restart nginx.service. 3.2.3. Настройка сервера базы данных MySQL 5.7.x Для настройки сервера базы данных MySQL 5.7.x необходимо выполнить следующий действия: скачать архив или установить MySQL 5.7.x из репозитория ОС; при установке необходимо задать пароль администратора базы данных; запустить консоль базы данных командой mysql -u root -p пароль администратора базы данных; создать базу данных с помощью sql запроса CREATE DATABASE 'statistic' CHARACTER SET utf8 COLLATE utf8_unicode_ci; создать пользователя с помощью sql запроса GRANT ALL PRIVILEGES ON statistic.* TO root@localhost IDENTIFIED BY 'пароль'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP PRIVILEGES ON statistic.* TO root@'%.localhost' IDENTIFIED BY 'пароль'; импортировать дамп-файл содержащий данные необходимые данные для работы приложения командой mysql -u root -p -h localhost -D statistic -o < дамп_файл.sql. 3.2.4. Настройка кеш сервера Memcached 1.x Для настройки кеш сервера Memcached 1.x необходимо выполнить следующие действия: скачать архив или установить memcached 1.x из репозитория ОС; создать файл настроек для memcached следующего содержания: # memcached default config file # 2003 - Jay Bonci <[email protected]> # This configuration file is read by the start-memcached script provided as # part of the Debian GNU/Linux distribution. # Run memcached as a daemon. This command is implied, and is not needed for the 12 # daemon to run. See the README.Debian that comes with this package for more # information. -d # Log memcached's output to /var/log/memcached logfile /var/log/memcached.log # Be verbose # -v # Be even more verbose (print client commands as well) # -vv # Start with a cap of 64 megs of memory. It's reasonable, and the daemon default # Note that the daemon will grow to this size, but does not start out holding this much # memory -m 512 # Default connection port is 11211 #-p 11211 -s /tmp/memcached.sock -a 0755 # Run the daemon as root. The start-memcached will default to running as root if no # -u command is present in this config file -u www-data # Specify which IP address to listen on. The default is to listen on all IP addresses # This parameter is one of the only security measures that memcached has, so make sure # it's listening on a firewalled interface. #-l 127.0.0.1 # Limit the number of simultaneous incoming connections. The daemon default is 1024 # -c 1024 # Lock down all paged memory. Consult with the README and homepage before you do this # -k # Return error when memory is exhausted (rather than removing items) # -M # Maximize core file limit # -r -t 8; перезапустить приложение memcached: systemctl restart memcached.service. 3.2.5. Настройка CMS 1С Битрикс Для настройки CMS 1С Битрикс необходимо выполнить следующие действия: распаковать актуальный дамп CMS «1С Битрикс» в директорию /srv/www/statistic/; внести следующие изменения в файл настроек CMS «1С Битрикс» /srv/www/statistic/bitrix/php_interface/dbconn.php: DBType = "mysql"; $DBHost = "localhost"; $DBLogin = "root"; $DBPassword = "Пароль пользователя БД MySQL"; $DBName = "statistic"; $DBDebug = false; $DBDebugToFile = false; define("BX_MEMCACHE_HOST", "unix:///tmp/memcached.sock"); define("BX_MEMCACHE_PORT", "0"); создать файл /srv/www/statistic/bitrix/.settings_extra.php следующего содержания: <?php 13 return array( 'cache' => array( 'value' => array( 'type' => 'memcache', 'memcache' => array( 'host' => 'unix:///tmp/memcached.sock', 'port' => '0', ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), ), ); ?>; 3.2.6. Запуск приложения Запуска приложения необходимо запустить серверы MySQL, memcached, php7.x-fpm и NGinx. После этого продукт будет доступен по адресу http://domain/, где domain - имя домена. 14 4. Проверка программы Для проверки работоспособности системы необходимо выполнить типовой сценарий тестирования всех программных компонентов, входящих в состав подсистем. Пользовательские сценарии должны выполняться с применением веб-браузеров, удовлетворяющих требованиям подсистем. В случае возникновения ошибок, необходимо проверить корректность настроек компонентов системы, описанных в пункте 3 данного руководства. Для проверки некоторых функций программы со стороны пользователя Системы необходимо дополнительно установить СКЗИ Крипто Про CSP. Порядок установки данного ПО приведён на Web-сайте производителя. 15 Сообщения системному программисту 5.1. Сообщения Реестра Для анализа и отладки программных компонентов предусмотрена возможность включить расширенный режим уровня вывода информации в файл логов сервера приложения (DEBUG). Для этого необходимо в конфигурационных файлах сервера приложений поставить соответствующему классу компонента уровень журналирования DEBUG. После чего произвести анализ информации, записанной в лог-файлы armIogvEmployeService и armSmevService. 5.1.1. Выполнение настройки и проверки программы Тексты сообщений, выдаваемых в ходе выполнения настройки и проверки программы, описание их содержания и действий, которые необходимо предпринять по этим сообщениям, представлены в Таблице 2. Таблица 2. Сообщения, выдаваемые в ходе выполнения настройки и проверки программы Действие системного Сообщение Описание сообщения программиста 1 2 3 Ошибка базы данных. Неверно настроено Проверить параметры соединение с БД либо подключения к серверу Невозможно подключиться базы данных к серверу базы данных, сервер БД недоступен используя предоставленные параметры Неверно настроено соединение с БД либо сервер БД недоступен 5. An uncaught encountered Exception Type: RuntimeException was Ошибка загрузки модели. Проверить наличие класса В списке autoload (автозагрузки) прописан несуществующий класс (модель) Message: Unable to locate the model you have specified: Ошибка загрузки Проверить наличие класса вспомогательного класса Unable to load the requested class: (библиотеки) В списке autoload (автозагрузки) прописан несуществующий класс (библиотека) 5.1.2. Выполнение программы Тексты сообщений, выдаваемых в ходе выполнения программы, описание их содержания и действий, которые необходимо предпринять по этим сообщениям, представлены в Таблице 3. An Error Was Encountered Сообщение 1 Таблица 3. Сообщения, выдаваемые в ходе выполнения программы Действие системного Описание сообщения программиста 2 3 started Сервис запущен shutdown Сервис остановлен 16 Сообщение Описание сообщения 1 2 Действие системного программиста 3 Connection refused to host Отсутствует сетевое Проверить доступность соединение с хостом хостов по сети при помощи команды telnet <номер порта> Starting Tomcat Server Сервис Tomcat запущен Tomcat Server stopped Сервис Tomcat остановлен BeanCreationException: creating bean with name Server is now live Error Сервис Tomcat не может Запустить сервис ActiveMQ соединиться с сервисом ActiveMQ Сервис ActiveMQ запущен Сервис ActiveMQ остановлен 5.2. Сообщения подсистемы «Статистики» Для анализа и отладки программных компонентов предусмотрена возможность включить расширенный режим уровня вывода информации в файл логов сервера приложения (DEBUG). Для этого необходимо в конфигурационных файлах сервера приложений поставить соответствующему классу компонента уровень журналирования DEBUG. После чего произвести анализ информации, записанной в лог-файлы armIogvEmployeService и armSmevService. 5.2.1. Выполнение настройки и проверка программы Тексты сообщений, выдаваемых в ходе выполнения настройки и проверки программы, описание их содержания и действий, которые необходимо предпринять по этим сообщениям, представлены в Таблице 4. Таблица 4. Сообщения, выдаваемые в ходе выполнения и настройки и проверки программы Действие системного Сообщение Описание сообщения программиста 1 2 3 Fatal error: Undefined class name Не ядро определен Подключить 'ciblockelement' in продукта подключенный модуль и соответствующий модуль перед использованием его классов Fatal error: emalloc(): Unable to Ошибка говорит о том, Увеличить объем allocate XXX bytes что не хватает памяти для используемой памяти выполнения скриптов Fatal error: Allowed memory size Ошибка указывает, что Увеличить параметр php of ... bytes exhausted... для открытия не хватает "memory_limit" в php.ini. памяти php MySQL server has gone away или В процессе выполнения Установить в Lost connection to server during запроса сервер оборвал bitrix/php_interface/after_co query соединение. nnect.php: При переносе на другой Дамп БД создается Изменить опцию хостинг: "#1064 - You have an в MySQL версии 4.1 или mysqldump: -error in your SQL syntax... выше, compatible=mysql40 Stopping ActiveMQ Server 17 Сообщение Описание сообщения 1 'DEFAULT CHARSET=..."Out of range value adjusted for column 'USER_ID' или Incorrect integer value: '' for column 'SESS_SESSION_ID' Действие системного программиста 3 2 а устанавливается на более ранней версии MySQL, которая не поддерживает объявление кодировки для таблицы. Out of range value adjusted for Установлен MySQL Необходимо из значения column 'USER_ID' или Incorrect версии 5.x для переменной sql-mode integer value: '' for column убрать 'SESS_SESSION_ID'Out of STRICT_TRANS_TABLES memory; restart server and try again (needed XXXXX bytes) Out of memory; restart server and MySQL-серверу не Необходима перезагрузить try again (needed XXXXX bytes) хватает памяти веб-сервера и MySQL. на выборку данных. 5.2.2. Выполнение программы Тексты сообщений, выдаваемых в ходе выполнения программы, описание их содержания и действий, которые необходимо предпринять по этим сообщениям, представлены в Таблице 5. Таблица 5. Сообщения, выдаваемые в ходе выполнения программы Действие системного Сообщение Описание сообщения программиста 1 2 3 started Сервис запущен shutdown Сервис остановлен Connection refused to host Отсутствует сетевое Проверить доступность соединение с хостом хостов по сети при помощи команды telnet <номер порта> Starting Tomcat Server Сервис Tomcat запущен Tomcat Server stopped Сервис Tomcat остановлен BeanCreationException: creating bean with name Error Сервис Tomcat не может Запустить сервис ActiveMQ соединиться с сервисом ActiveMQ Server is now live Сервис ActiveMQ запущен Stopping ActiveMQ Server Сервис остановлен ActiveMQ 18 ЛИСТ РЕГИСТРАЦИИ ИЗМЕНЕНИЙ Номера листов (страниц) Изм. Изме-нен- Заменых ненных новых аннулированных Всего листов (стр.) в документе № документа Входящий № сопроводительного документа Подпись Дата