Руководство по установке#

Развертывание портала#

Состав дистрибутивов#

Состав дистрибутивов (при развёртывании помещаются в один каталог):

  • PortalUnixDeploy – скрипт установки

  • releasePortal4.zip – архив сборки портала

  • templatesPortal4.zip – архив с шаблоном портала

Важно

На сервере должна присутствовать установленая ИАС и создана пустая БД согласно руководству по установке. (См. Установка системы)

Шаги развертывания#

  1. Зайдите в конфигуратор ИАС и создайте портальный проект с системой координат 3857:

../../../_images/create_proj.png
  1. Добавьте систему координат, которая соответствует реплицируемым данным (необходимо для пересчёта геометрии при репликации). Настройки добавляются в конфигураторе на вкладке «Системы координат».

../../../_images/coordinate.png
  1. Выполните установку компонентов БД:

dotnet %Путь_куда_установлена_ИАС%/Cli/gems.cli.dll db-migrate -c "Server=%адрес_сервера_бд%;Port=%порт_сервера_бд%;Database=%имя_базы данных%;User Id=%пользователь_бд%;Password=%пароль_пользователя_бд%;" -f "Путь_куда_установлена_ИАС" [-s %имя_схемы%]

Важно

Вышеуказанную команду необходимо выполнить два раза подряд! После первого выполнения будет выведено предупреждение о недоступности одного из компонентов БД, который необходим для обновления остальных компонентов и произведена попытка установки этого компонента. После второго выполнения все строки вывода станут зелёными.

Важно

Для того, чтобы убедиться, что все компоненты успешно установлены/обновлены, необходимо выполнить точно такую же команду, только параметр db-migrate заменить на db-validate

  1. При необходимости применить метаданные для созданного проекта (метаданные портала должны совпадать с метаданными ИАС-источника). (См. Обновление метаданных).

  2. Выполните установку портала:

sudo bash %Путь_к_скрипту_деплоя% %Путь_установки% %'connectionString'% -gHost=localhost -PortalWebUiPublicOrigin=%интернет-адрес_портала% -IasRootDirectory=%путь_к_ИАС% -PortalSchema='%схема_портала%'
  1. Настройте nginx.

Внесите изменения в файл /etc/nginx/sites-enabled/%имя_конфигурации%

Параметры portal.ru, ias.crt, ias.key необходимо заменить на свои:

server {
   server_name portal.ru;
   listen 443 ssl http2;
   ssl_certificate /etc/ssl/certs/ias.crt;
   ssl_certificate_key /etc/ssl/private/ias.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
   ssl_ecdh_curve secp384r1;
   ssl_session_cache shared:SSL:10m;
   ssl_session_tickets off;
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
   add_header X-Frame-Options SAMEORIGIN;
   add_header X-Content-Type-Options nosniff;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection keep-alive;
   proxy_set_header Host $host;
   proxy_cache_bypass $http_upgrade;
   proxy_redirect off;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
   client_max_body_size 50m;
   client_body_buffer_size 128k;
   proxy_buffers 4 128k;
   proxy_buffer_size 64k;
   proxy_busy_buffers_size 128k;
   proxy_connect_timeout 777;
   proxy_send_timeout 777;
   proxy_read_timeout 777;
   location / {
      proxy_pass http://localhost:5061/;
   }
   location /api/ {
         proxy_pass http://localhost:5060/api/;
      }
   location /api/signalr/ {
         proxy_pass http://localhost:5060/api/signalr/;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
         proxy_set_header Host $host;
         proxy_cache_bypass $http_upgrade;
      }
}
  1. Перезапустите nginx, после изменений:

systemctl restart nginx

8. Пропишите сопоставление URL портала и его IP-адреса в DNS или в файл hosts (C:/Windows/System32/drivers/tc/hosts) Например, добавить запись в файл hosts вида: %ip_адрес_сервера_портала% %доменное_имя_портала%

../../../_images/url_portal.png
  1. Перезапустите службу аутентификации и авторизации - STS.service:

systemctl restart STS
  1. Настройте службу репликации (См. Установить и настроить сервис репликации) и выполните первичную репликацию данных в портальную БД

  2. Проверьте работоспособность портала (вход в административную часть https://доменное_имя/Admin/Map).

  3. После успешного завершения предыдущих шагов, можно приступить к добавлению и настройке карт портала. (См. Настройка интерактивной градостроительной карты)

Настройка карты «Землепользование»#

  1. Создайте карту «Карта землепользования» в ГИС-конфигураторе. Добавьте в нее необходимые слои:

  • GeoUrbanTerzoneExist,

  • GeoGknParcelExist,

  • GeoAdrCapitalBuild,

  • GeoGknSpecialZone.

Это минимальный набор слоев, без которых не все функции карты будут рабочими. Добавляемые в карту слои должны быть созданы в проекции EPSG:3857. Если портальная БД и GeoServer клонированы с ИАС, то слои необходимо создавать заново.

  1. Добавьте новую карту на странице администрирования портала. На страницу администрирования можно попасть по ссылке https://[адрес портала].ru/admin/map/.

../../../_images/add_map_portal.png
  1. Задайте настройки для карты согласно таблице:

Настройки карты#

Наименование

Значение

карты типа

Землепользование

Наименование

Карта землепользования

Псевдоним

urban

Карта Gisserver

Карта землепользования

Объекты, отображаемые в панели поиска

Объекты недвижимости

Объекты, отображаемые на карте

Не задано

Карта по умолчанию

Да

Изображение

Карта градостроительного занирования.png

  1. В БД создайте записи в таблице Portal_GisMapSwitchGroups для каждого вида карт (ЗОУИТ, Участки и здания, Градостроительное зонирование):

  • Колонка Id заполняется автоматически.

  • Колонка GisMapId содержит ключ карты (узнать его можно из Гис-конфигуратора, нажать на имя карты в колонке слева, в адресной строке браузера скопировать последнюю секцию, например для адреса https://a.gemsdev.ru/system#!/project/tumenmr/gisConfig/map/3282 нужно взять 3282).

  • Колонка Name содержит имя вида карты (например: ЗОУИТ, Участки и здания, Градостроительное зонирование).

  • Колонка ImageBase64 заполняется строкой в формате base64 которая содержит изображение для иконки вида карт.

  • Колонка Alias заполняется согласно виду карты:

  • ЗОУИТ - ProjectionRegions

  • Участки и здания - ParcelsConstructions

  • Градостроительное зонирование - PZZ

  • Колонка LayersGUIDs содержит ключи слоев (узнать можно из Гис-конфигуратора, нажать на имя слоя в средней колонке, в адресной строке браузера скопировать последнюю секцию, например, для адреса https://a.gemsdev.ru/system#!/project/tumenmr/gisConfig/vectorLayer/edit/3147 нужно взять 3147).

../../../_images/deploy1.png

После этих настроек на портале в карте землепользования появится кнопка справа, раскрывающая список видов карт.

ImageBase64 описания#

Настройка карты «Обращения граждан»#

Работа с обращениями состоит из двух частей:

  • подача обращения с портала, в т.ч.: создание обращения, просмотр карты с обращениями, просмотр карточки обращения, установка оценки по выполненному обращению.

  • обработка полученного обращения в ИАС, в т.ч.: просмотр карточки обращения, управление статусами обращения, подготовка решения по обращению.

Для установки карты в проект:

  1. Залейте метаданные подсистемы «Обращения граждан» в проект (.gmdiff или подключить п/с в проект). Если ИАС и Портал работают с разными БД, то в обе.

  2. Добавьте слои. Можно воспользоваться Мультитулом: использовать layers.bat с файлом ../Обращения граждан/Для установки/5. Слои, Карты/layers.csv . (См. multisloi)

  1. Добавьте карты. Можно воспользоваться Мультитулом: использовать maps.bat с файлом …/Обращения граждан/Для установки/5. Слои, Карты/maps.csv. (См. multimap)

  1. В ГИС-конфигураторе проекта портала замените SLD-описания стилей INVISIBLE и V_GEO_FEEDBACK на указанные в sld-файлах в папке …/Обращения граждан/Для установки/6. Стили слоёв.

  2. В ГИС-конфигураторе в карте обращений Портала для слоя с обращениями установите стиль INVISIBLE.

  3. В ГИС-конфигураторе в карту обращений портала и карту обращений ИАС добавьте необходимые слои-подложки.

  4. Запустите батник ../Обращения граждан/Для установки/Скрипт для установки/run.bat, предварительно указав настройки БД в батнике. В ИАС будут созданы каталоги, роли, справочные значения используемых справочников.

Чтобы в ИАС отобразились каталоги, потребуется перезапустить сервер приложения.

  1. Создайте карту с обращениями на Портале, выбрав в качестве источника карту с п.3

  2. Перегенирируйте виды поиска.

  3. Добавьте настройки ЕСИА для Портала (мнемоника и сертификат). Задаются через конфигуратор ИАС.

  4. В случае, если ИАС и Портал работают с разными БД, то настройте репликацию (в обе стороны).

  5. После установки/обновления сборки портала установите компонент БД. Компонент БД нужен для добавления в базу настроек отображения кластеризованых маркеров обращений в карте портала.

Для установки компонента нужно выполнить команду в консоли на сервере:

dotnet /путь/до/gems.cli.dll db-migrate -f /путь/до/PortalUI -c "Username=ЛогинБД;Password=ПарольБД;Host=ХостБД;Database=БД" -o Project.Portal.FeedBackSettings -s схема_проекта
  1. Назначьте пользователю ИАС, ответственному за обработку обращений, роль FeedbackPortal.

Настройка авторизации через ЕСИА и соцсети#

Настроить#

Для добавления возможности входа через аккаунт Google и ВКонтакте

  1. Зарегистрируйте приложение в каждой из указанных сетей в соответствующих консолях.

Консоль для Google https://console.developers.google.com/. Консоль для ВКонтакте https://vk.com/apps?act=manage.

  1. После регистрации в каждой из соц.сетей приложению будут назначены идентификатор клиента и его так называемый секрет. Эти значения необходимо записать в файл appsettings.json сервера аутентификации STS. Файл расположен в корне установки сервера аутентификации. При установке ИАС для сервера аутентификации создается папка IdentityServer. Файл искать в корне этой папки. Т.е. на linux это может быть примерно такой путь /…папка_установки_ИАС…/IAS/IdentityServer.

В файле appsettings.json необходимо создать секцию «Authentication» с двумя разделами для Google и ВКонтакте. Секцию расположить в корне.

Пример, как должна выглядеть секция «Authentication»:

"Authentication": {
"Google":
{ "ClientId": "589412524253-9l9cgi0ookd0kku3e3s3pruphojkp3lk.apps.googleusercontent.com", "ClientSecret": "kuNI9Yt8byU6-56Ohz9XCZPk" }
,
"Vkontakte":
{ "ClientId": "7171450", "ClientSecret": "CN3n03sMhnISvvQ5U2mi" }
}

Значения «ClientId» и «ClientSecret» для каждой соц.сети заменить на свои. Указанные значения можно использовать для теста.

  1. После редактирования файла appsettings.json перезапустите сервер аутентификации. Служба сервера аутентификации называется STS.service

  2. В настройки nginx ИАС добавьте секции:

location /api/providers {
   proxy_pass http://127.0.0.1:5002/api/providers;
 }

 location /signin-vkontakte {
   proxy_pass http://127.0.0.1:5002/signin-vkontakte;
 }

 location /signin-google {
   proxy_pass http://127.0.0.1:5002/signin-google;
 }
  1. Перезапустите службу nginx.

Проверка:

Полное содержимое файла appsettings.json должно выглядеть вот так:

{
"ConnectionStrings":

{ "DefaultConnection": "Server=172.16.55.46;Port=5432;Database=marvelportal;User Id=postgres;Password=admin;ApplicationName=PorvatV4;" }
,
"Logging": {
"IncludeScopes": false,
"LogLevel":

{ "Default": "Debug", "System": "Warning", "Microsoft": "Warning" }
},
"hostConfigName": "localhost",
"Authentication": {
"Google":

{ "ClientId": "589412524253-9l9cgi0ookd0kku3e3s3pruphojkp3lk.apps.googleusercontent.com", "ClientSecret": "kuNI9Yt8byU6-56Ohz9XCZPk" }
,
"Vkontakte":

{ "ClientId": "7171450", "ClientSecret": "CN3n03sMhnISvvQ5U2mi" }
}
}

Необходимо чтобы портальный конфигуратор был доступен в сети интернет.

Активировать возможность входа#

Чтобы кнопка входа через ЕСИА появилась на портале необходимо:

  1. Установить КриптоПРО и JavaCSP на сервере (необходимы для сервиса подписи, иначе через ЕСИА не авторизоваться).

  2. В настройки nginx ИАС добавить секции:

location /api/providers {
   proxy_pass http://127.0.0.1:5002/api/providers;
 }
  1. Перезапустить службу nginx.

  2. В конфигураторе на вкладке «Настройки системы» - «Интеграция», установить галочку «Интегрироваться с ЕСИА» и заполнить настройки.