Паспорт клиента




  • <внешний адрес> - IP-адрес или доменное имя и порт, по которым будет осуществляться доступ к прикладному решению.


  • <порт для веб> - порт, на котором будет отвечать веб-интерфейс


  • <наименование решения> - желательное имя прикладного решения (http://<внешний адрес>/<наименование решения>), может состоять из латинских букв и цифр, без спецсимволов и пробелов

  • Данные для подключения к MS SQL - адрес сервера, логин и пароль пользователя (используется только аутентификация SQL).


Необходимые компоненты


Перед установкой прикладного решения на сервере должны быть развернуты следующие приложения и компоненты:



  • MS SQL Server (минимально - 2012, рекомендуемый - 2014, поддерживается любая редакция, включая Express Edition)

  • Internet Information Server (от 7 версии)

  • Необходимые компоненты IIS (порядок установки указан ниже)

  • Microsoft .NET Framework (4.6.1 или выше)

  • Microsoft Sync Framework (2.1 или выше)

  • ASP.NET Core 2.2 Runtime (ссылка на скачивание)

  • ASP.NET Core 3.0 Runtime (ссылка на скачивание)


Внимание: после установки ASP.NET Core 2.2 Runtime и ASP.NET Core 3.0 Runtime обязательно требуется перезагрузка сервера (операционной системы).


Установка необходимых компонент для IIS


Cкрипт для выполнения установки (скопируйте текст полностью и выполните как одну команду):


dism.exe /online /enable-feature /featurename:IIS-ApplicationDevelopment /featurename:IIS-ASPNET /featurename:IIS-BasicAuthentication /featurename:IIS-CommonHttpFeatures /featurename:IIS-CustomLogging /featurename:IIS-DefaultDocument /featurename:IIS-DigestAuthentication /featurename:IIS-DirectoryBrowsing /featurename:IIS-HealthAndDiagnostics /featurename:IIS-HttpCompressionDynamic /featurename:IIS-HttpCompressionStatic /featurename:IIS-HttpErrors /featurename:IIS-HttpLogging /featurename:IIS-HttpTracing /featurename:IIS-ISAPIExtensions /featurename:IIS-ISAPIFilter /featurename:IIS-LoggingLibraries /featurename:IIS-ManagementConsole /featurename:IIS-ManagementScriptingTools /featurename:IIS-NetFxExtensibility /featurename:IIS-RequestFiltering /featurename:IIS-RequestMonitor /featurename:IIS-Security /featurename:IIS-StaticContent /featurename:IIS-WebServer /featurename:IIS-WebServerManagementTools /featurename:IIS-WebServerRole /featurename:IIS-WindowsAuthentication /featurename:IIS-ASPNET45 /featurename:IIS-NetFxExtensibility45 /featurename:IIS-NetFxExtensibility /featurename:NetFx4Extended-ASPNET45


Если в системе отсутствует утилита dism.exe, то можно воспользоваться следующей командой:


start /w pkgmgr /l:log.etw /iu:IIS-ApplicationDevelopment;IIS-ASPNET;IIS-BasicAuthentication;IIS-CommonHttpFeatures;IIS-CustomLogging;IIS-DefaultDocument;IIS-DigestAuthentication;IIS-DirectoryBrowsing;IIS-HealthAndDiagnostics;IIS-HttpCompressionDynamic;IIS-HttpCompressionStatic;IIS-HttpErrors;IIS-HttpLogging;IIS-HttpTracing;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-LoggingLibraries;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-NetFxExtensibility;IIS-RequestFiltering;IIS-RequestMonitor;IIS-Security;IIS-StaticContent;IIS-WebServer;IIS-WebServerManagementTools;IIS-WebServerRole;IIS-WindowsAuthentication;IIS-ASPNET45;IIS-NetFxExtensibility45;IIS-NetFxExtensibility;NetFx4Extended-ASPNET45


Кроме того, необходимо установить модуль "URL Rewrite" для IIS по ссылке (для 32-бит) или  для 64-бит. Убедиться, что появился соответствующий значок в настройках IIS:


Screenshot_20191122_163615.png______________PNG__1426___696__________.png


Предварительное разворачивание решения


1. Архив с дистрибутивом решения (должен быть получен от менеджера) распаковать в нужное место (по умолчанию - в корень системного диска C: ).


Структура каталога следующая:



  • express - каталог прикладного решения

    • admin - в каталоге лежит веб-интерфейс и все для его настройки

    • app - каталог для размещения сборок мобильного приложения

    • services - каталог с веб-сервисами



  • GrotemServer - каталог, в котором рекомендуется разворачивать сервер Grotem.Mobile

  • solutions - каталог, в котором рекомендуется разворачивать решения (задается в настройках сервера Grotem.Mobile)

  • metadata - каталог с файлами дял создания мобильного решения (metadata.xml и т.д.)

  • Other - каталог с прочими файлами, в т.ч. обработкой для обмена с 1С УТ.


2. Архив с сервером Grotem скачать по ссылке, содержимое архива распаковать и переместить в каталог GrotemServer.


Внимание: для работы приложения Grotem.Express необходимо скачивать сервер версии 3. Сервер версии 2 с приложением Grotem.Express не совместим.


В итоге, в каталоге GrotemServer должна получиться следующая структура:



  • bitmobile3 - каталог с сервером Grotem

  • fiscal - сервис фискализации для работы с Атол-Онлайн

  • gateway - шлюз для работы с сервером Grotem и другими сервисами

  • synchronization - сервис синхронизации


3. На каталог назначить права для пользователя, от имени которого запускается пул приложений (желательно создать отдельного пользователя, в примере - пользователь grotem):


mceclip0.png


Настройка шлюза Gateway


В оснастке Диспетчер служб IIS добавить новый пул приложений. Для этого:



  • Кликом правой кнопкой мыши по "Пулам приложений" открыть контекстное меню, в которм выбрать "Добавить пул приложений"


mceclip0.png



  • Ввести имя пула (например - gateway)

  • Версия среды CLR.NET - Без управляемого кода

  • Режим управляемого конвейера - Встроенный


mceclip1.png


В "Дополнительных параметрах пула" установить ранее созданного пользователя:


blobid0.png


Далее, в оснастке "Диспетчер служб IIS" нужно добавить новое приложение. Для этого:



  • в структуре перейти на "Default Web Site"

  • в контекстном меню выбрать пункт "Добавить приложение..."

  • в поле "Псевдоним" указать имя, по которому можно будет обрааться к серверу, например - GrotemServer

  • в поле "Пул приложений" выбрать ранее созданный пул

  • в поле "Физический путь" указать путь до каталога gateway


mceclip2.png


Далее, в проводнике Windows открыть каталог gateway, в нем найти файл appsettings.example.json и скопировать его под имененм appsettings.json. В этом файле заполнить секции:


 "Jwt": {
"Issuer": "Identity.API",
"Audience": "http://localhost",
"Key": "{some_big_key_value_here_secret}"
},
"Urls": {
"Synchronization": "http://localhost:5001",
"BitMobile": "http://localhost:5000"
},

Если есть сервис Elasticsearch, заполнить соответствующую секцию данными для доступа.


По аналогии создать и заполнить файл ocelot.json, где для секций BitMobile указать:


 "Host": "localhost",
"Port": 5000

для секций Synchronization:


 "Host": "localhost",
"Port": 5001

для секций Fiscal:


 "Host": "localhost",
"Port": 5002

а также:


"BaseUrl": "http://localhost/grotemserver"

После окончания настроек перезапустить пул Gateway


Настройка сервера Grotem


В "Диспетчере служб IIS" правым кликом по папке "Сайты" вызвать контекстное меню, в котором выбрать - "Добавить веб-сайт". В открывшемся окне заполнить параметры:



  • Имя сайта - bitmobile (пул оставить такой же)

  • Физический путь - путь до каталога с сервером Grotem, из вышеприведенной структуры - bitmobile3

  • Подключить как - указать ранее созданного пользователя (в примере - grotem)

  • Порт - 5000


mceclip3.png


Для настройки сервера внести изменения в конфигурацию приложения (пункт "Редактор конфигурации"):


mceclip4.png




  • DataBaseServer - параметры соединения с БД (укзаать параметры в строке соединения):


    server=localhost;User Id=<username>;Pwd=<password>;Connection Timeout=3600


  • SolutionsFolder - указать каталог для создания решений (solutions)

  • BitMobileServerId - в случае необходимости - изменить префикс сервера

  • RootPassword - установить пароль для доступа к серверу


Либо эти параметры можно изменить путем редактирования файла Web.config в каталоге сервера bitmobile3.


После окончания настроек перезапустить пул bitmobile.


Проверка работоспособности сервера и шлюза


На данном этапе можно проверить работоспособность установленных сервисов. Для этого в командной строке нужно перейти в папку с сервером Grotem (bitmobile3), и с помощью утилиты Utils.exe проверить, например, версию сервера. Ответ должен возвращаться и при обращении к серверу Grotem напрямую (на 5000 порт), и через шлюз (при обращении через http://localhost/grotemserver):


mceclip5.png


Настройка сервиса синхронизации


Настройка сервиса синхронизации происходит по аналогии с сервером Grotem.


В "Диспетчере служб IIS" правым кликом по папке "Сайты" вызвать контекстное меню, в котором выбрать - "Добавить веб-сайт". В открывшемся окне заполнить параметры:



  • Имя сайта - syncronization (пул оставить такой же)

  • Физический путь - путь до каталога с сервисом синхронизации, из вышеприведенной структуры - synchronization

  • Подключить как - указать ранее созданного пользователя (в примере - grotem)

  • Порт - 5001


Далее, перейти в Пулы приложений - syncronization - Основные настройки - Версия среды CLR .NET - Без управляемого кода.


 Далее, в проводнике Windows открыть каталог syncronization, в нем найти файл appsettings.example.json и скопировать его под имененм appsettings.json. В этом файле заполнить секции:


 "Database": {
"Prefix": "BitMobile_1_",
"Server": "{SQL address}",
"Login": "{SQL user}",
"Password": "{SQL user password}"
},
"Jwt": {
"Issuer": "Identity.API",
"Audience": "http://localhost",
"Expires": "360",
"Key": "{some_big_key_value_here_secret}"
},

Если есть сервис Elasticsearch, заполнить соответствующую секцию данными для доступа.


После окончания настроек перезапустить пул syncronization.


Настройка сервиса фискализации fiscal


Внимание! разворачивание и настройка сервиса fiscal производится только если требуется работа с сервисом фискализации Атол-онлайн.


Настройка сервиса фискализации также производится по аналогии с остальными.


В "Диспетчере служб IIS" правым кликом по папке "Сайты" вызвать контекстное меню, в котором выбрать - "Добавить веб-сайт". В открывшемся окне заполнить параметры:



  • Имя сайта - fiscal (пул оставить такой же)

  • Физический путь - путь до каталога с сервисом синхронизации, из вышеприведенной структуры - fiscal

  • Подключить как - указать ранее созданного пользователя (в примере - grotem)

  • Порт - 5002


Далее, перейти в Пулы приложений - syncronization - Основные настройки - Версия среды CLR .NET - Без управляемого кода.


 Далее, в проводнике Windows открыть каталог fiscal, в нем найти файл appsettings.example.json и скопировать его под имененм appsettings.json. В этом файле заполнить секции:


 "ConnectionString": "Server={SQL address};Database=FiscalDB;User Id={SQL user};Password={SQL user password};",
"Urls": {
"Atol": "{Atol-online URL}"
},
"Jwt": {
"Issuer": "Identity.API",
"Audience": "http://localhost",
"Expires": "360", // minute
"Key": "{some_big_key_value_here_secret}"
},

Если есть сервис Elasticsearch, заполнить соответствующую секцию данными для доступа.


После окончания настроек перезапустить пул fiscal.


После запуска сервиса fiscal в БД будет создана база FiscalDB.


Разворачивание решения


В командной строке перейдите в каталог bitmobile3. Здесь находится утилита Utils.exe, с помощью которой выполняются все операции с сервером Grotem.




  • средствами Utils.exe:




    • создать мобильное решение на основе файла metadata.xml из каталога metadata (имя в EN без пробелов)





    • установить пароль решения





    • загрузить метаданные





    • загрузить начальные данные








с помощью SQL Management Studio (или другими средствами)



  • убедиться, что создана БД мобильного решения (имя БД состоит из Bitmobile_<префикс_сервера>_<имя_решения>, например Bitmobile_1_express)

  • к этой БД применить скрипт SuperServiceDatabaseUpdate.sql из каталога metadata


mceclip0.png


В таблицу dbo.dbConfig внести следюущие значения:



  • в строку, где Key=bitmobileURL - в поле Value вставить URL мобильного решения (вида https://express.grotem.com/bitmobile3/solution)

  • где Key=bitmobileLogin - вставить admin

  • где Key=bitmobilePass - вставить пароль от мобильного решения


mceclip1.png


Проверка работоспособности решения


Для проверки работоспособности мобильного устройства нужно открыть в браузере диагностическую страницу.



  • проконтролировать доступ к мобильному решению: в браузере перейти по адресу http(s)://<внешний адрес клиента:порт>/<имя сервера Grotem.Mobile>/<имя решения>/device/ping, где:


    • <внешний адрес клиента:порт> - полученные от клиента данные (см. раздел "Заполнение паспорта клиента", пункт 1)


    • <имя сервера Grotem.Mobile> - имя приложения, под которым был развернут сервер Grotem.Mobile (по умолчанию server)

    • <имя решения>



  • в случае успеха в окне браузера болжен отобразиться ответ "pong"


Настройка прикладного решения


Подключение каталога с прикладным решением к IIS


В останстке "Internet Information Server (IIS)" ("Панель управления" - "Администраирование") перейти в раздел "Default Web Site".



  • в контекстном меню "Default Web Site" выбрать пункт "Добавить витруальный каталог..."

  • в открывшемся окне указать

    • в поле "Псевдоним" - <имя установки> (см. паспорт клиента)

    • в поле "Физический путь" - путь до каталога express в каталоге с решением (по умолчанию c:\inetpub\<имя_распакованого_решения>\express)



  • проверить настройки при помощи "Тест настроек..."


  • если наблюдаются ошибки авторизации - укажите учетные данные в разделе "Подкл. как..."




mceclip2.png


Разворачивание веб-сервисов



  • в IIS создать новое Приложение

    • в структуре "Диспетчера служб IIS" найти подкаталог express\service

    • в контекстном меню выбрать "Преобразовать в приложение"

    • в качестве Application Pool выбрать созданный ранее пул

    • проверить настройки соединения

    • в случае ошибок авторизации - принудительно установить учетные данные для подключения




mceclip3.png


выполнить настройки веб-сервиса:



  • перейти в "Редактор конфигураций"


mceclip4.png



  • адрес сервера БД - в параметры DataAccess:Database:ServerName и DataAccess:DatabaseRo:ServerName

  • имя БД мобильного решения - в DataAccess:Database:DatabaseName и DataAccess:DatabaseRo:DatabaseName

  • признак использования Windows-аутентификации - в DataAccess:Database:UseWindowsAuthentification и DataAccess:DatabaseRo:UseWindowsAuthentification

  • логин (если используется встроенаня авторизация MSSQL) - в DataAccess:Database:UserName и DataAccess:DatabaseRo:DatabaseName

  • пароль (если используется встроенаня авторизация MSSQL) - в DataAccess:Database:Password и DataAccess:DatabaseRo:Password


mceclip5.png



Проверка работоспособности веб-сервисов



Для проверки работоспосбности используется встроенный модуль Swager, автоматически публикуемый по адресу http(s)://<внешний адрес клиента:порт>/<имя прикладного решения>/service/Docs где:





  • <внешний адрес клиента:порт> - полученные от клиента данные


  • <имя установки> - имя установки прикладного приложения (по умолчанию GrotemExpress) (см. соответсвующий параметр в паспорте клиента)



На этой странице нужно получить первоначальный токен, введя учетные данные пользователя (по умолчанию Admin | admin).


mceclip6.png


Отметить в паспорте клиента факт работоспособности веб-сервисов


Разворачивание веб-интерфейса



  • в структуре "Диспетчера служб IIS" найти подкаталог express\service

  • в контекстном меню выбрать пункт "Проводник"


mceclip7.png



  • в каталоге admin скопировать файл index.html.template в index.html


  • в файле index.html заполнить следуюшие параметры:




    • %BASE_HREF% - строкой вида /<имя решения>/admin/ (в 2-х местах)



      • начальный и конечный "слэши" - обязательны




    • %BASIC_URL% - адресом подключения в виде http://<имя решения>[:<порт>]/



      • "слэш" в конце строки обязятелен

      • порт нужно указывать, только если он отличается от стандартных для проотоколво http (80) или https (443)




    • %SERVICE_URL% - строкой вида /<имя решения>/service/



      • начальный и конечный "слэши" - обязательны




    • %API% - заменить на строку api/



    • %VERSION% - заменить на строку version

    • %HASH_LINK% - заменить на строку HASH_LINK

    • %GOOGLEPLAYURL% - оставить без изменений - это ссылка для скачивания приложения с Google Play

    • %ANDROID_URL% - оставить без изменений, либо указать ссылку для скачивания apk-файла для ANDRIOD




В итоге файл должен выглядеть примерно следующим образом (считаем. что параметр <имя решения> принят за GrotemExpress)


...
<head>
<base href='/express/admin/'>

...

<script>
var config = {
"BASE": "/express/admin/",
"BASIC_URL": "http://xx.xx.xx.xx/",
"SERVICE_URL": "/express/service/",
"API": "api/",
"VERSION": "version",
"HASH_LINK": "HASH_LINK",
"ADMIN_SERVICE_DEV": "/"
"GOOGLE_PLAY_URL": "https://play.google.com/store/apps/details?id=com.grotem.express",
"ANDROID_URL": "%ANDROID_URL%"
}
</script>

Проверка работоспособности веб-интерфейса


Если все модули системы настроены корректно, по при открытии в браузере адреса http(s)://<внешний адрес клиента:порт>/<имя прикладного решения>/admin должна открыться страница авторизации сервиса.


mceclip8.png


Публикация мобильного приложения



  • заказать сборку мобильного приложения. При заказе сборки указать адрес для подключения к мобильному решению http(s)://<внешний адрес клиента:порт>/<имя сервера Grotem.Mobile>/<имя решения>

  • полученные файлы (*.apk) разместить в каталоге app (не путать с каталогом admin/app)


Настройка автоматических переадресаций


В оснастке IIS перейдите на виртуальный каталог express и перейдите в модуль "URL Rewrite".


mceclip9.png


В настройке URL Rewrite создайте одно пустое правило - оно будет выступать в качестве шаблона.


mceclip10.png


Далее перейдите в каталог, где расположено прикладное решение и отредактеруйте находящийся там файл Web.config - раздел <rules> должен иметь следующий вид:


<rules>
<rule name="WebAdmin" enabled="true" stopProcessing="true">
<match url="(admin)/.*"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_URI}" matchType="IsDirectory" negate="true" pattern="admin/(api)"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
<add input="{REQUEST_URI}" pattern="admin/(api)" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
</conditions>
<action type="Rewrite" url="{R:1}/"/>
</rule>
<rule name="app to admin" enabled="true" stopProcessing="true">
<match url="([^/]*)app/$"/>
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
</conditions>
<action type="Redirect" url="{R:1}/express/admin/" redirectType="Found"/>
</rule>
<rule name="From Root to login" stopProcessing="true">
<match url="^(\s*)$"/>
<action type="Redirect" url="{R:0}/express/admin/" redirectType="Found"/>
</rule>
</rules>

Убедиться в работоспособности можно, попытавшись открыть в браузере адрес http(s)://<внешний адрес клиента:порт>/<имя прикладного решения>. При этом должна произойти автоматическая переадресация на страницу входа.


Завершающие контрольные шаги



  • Убедиться, что авторизация в веб-интерфейс происходит успешно (по умолчанию под пользователем Admin | admin)

  • Выйти из системы - убедиться, что вернулись на экран авторизации

  • Убедиться, что скачивается мобильное приложение

  • Повторно войти в систему и сменить пароль для пользователя Admin (в разделе "Сотрудники"). Рекомендуем выйти и повторно войти в систему, чтобы убедиться, что пароль установлен корректно.


Установка лицензий



  • Запросить лицензии (адрес https://clients.superagent.ru/getlicense/)

  • Активировать лицензии на сервере Grotem.Mobile с помощью Utils.exe

  • Убедиться, что вход в мбоильное приложение и первоначальная синхронизация проходят успешно (по умолчанию с пользователем Admin и новым паролем)


Установка сертификата для Push-уведомлений на iOS


Операционаая система iOS для отправки Push-уведомлений требует установку специального сертификата.


Файл сертификата PushCert.p12 находится в подкаталоге Certs каталога metadata.


Установка сертификата производится при помощи утилиты Utils.exe, запускаемй с ключом -ucert (подробности смотрите в справке Utils.exe -h)