### ### WEB-Сервер-КС ### ### Copyright (C) ООО Кейсистемс 2020 ### ### Версия 3.1.8 ### ВНИМАНИЕ! Для выполнения операции необходимы права суперпользователя. Данная инструкция описывает пример для работы с контейнером с идентификатором 1. После создания экземпляра контейнера с помощью платформы WEB-Сервер-КС Докер получаем следующее: 1) Контейнер с именем wsks-3.1.8_work_001 (посмотреть можно командой # docker ps -a) где, - wsks -> web server keysystems - 3.1.8 -> версия <>.<>.<> - work -> константа, означает рабочую версию (production) - 001 -> идентификатор контейнера 2) Каталог управления /opt/wsks-3.1.8_work_001/*.* Структура каталога управления: /opt/wsks-3.1.8_001 |-- /conf.ks # каталог конфигурационных файлов для http сервера |-- apache2.conf |-- sslks.conf |-- /ctl # каталог с файлами управления .NET Core приложениями |-- /app # каталог модулей запуска .NET Core приложений |-- /tar_files # каталог для архивов исходного кода для разворачивания .NET Core приложений |-- app_start.sh # bash скрипт запуска .NET Core приложений |-- app_stop.sh # bash скрипт остановки .NET Core приложений |-- readme.txt # текущий файл описания |-- ws_addapp.sh # bash скрипт развертывания нового .NET Core приложения |-- ws_const_var.sh # файл констант и параметров |-- ws_delapp.sh # bash скрипт удаления .NET Core приложения |-- ws_info.sh # bash скрипт просмотра процессов |-- ws_start.sh # bash скрипт запуска web сервара (используется сервисом systemd) |-- ws_stop.sh # bash скрипт остановки web сервера (используется сервисом systemd) |-- ws_updapp.sh # bash скрипт обновления существующего .NET Core приложения |-- /log # каталог логирования работы http сервера |-- *.log |-- /ssl # Самоподписанные демо сертификаты для ssl соединения |-- wsks-19.08_demo.crt |-- wsks-19.08_demo.key |-- /template # каталог шаблонов файлов конфигурации и управления .NET Core приложениями |-- 5xxx_app.t |-- 5xxx_ks.conf.t |-- appsettings.Production.json.t |-- ports_5xxx.conf.t |-- /www # каталог для развертывания рабочих каталогов .NET Core приложений |-- /html |-- COPYRIGHT # файл лиценезии 3) Файл в структуре systemd, который обеспечивает автоматический запуск контейнера и приложений, после перезапуска хоста. /lib/systemd/system/wsks-3.1.8_work_001.service Основные команды развертывания и удаления .Net Core приложений в экземпляре контейнера WEB-Сервер-КС. 1) Развертывание нового .NET Core приложения. Последовательность действий: - поместить архив исходных файлов *.tar.gz в каталог /opt/wsks-3.1.8_001/ctl/tar_files Существуют определенные правила по формированию архива приложения - внутри архива на первом уровне должна присутствовать только одна единственная корневая папка с произвольным именем, а уже внутри нее исходные файлы. Например, архив можно сформировать следующей командой: tar -cvzf <имя архива>.tar.gz <имя каталога> - запустить развертывание приложения, выполнив команду: bash /opt/wsks-3.1.8_001/ctl/ws_addapp.sh <тип приложения> <имя файла архива> <порт> <4.> <5.> <6.> где, <1.тип приложения> -> "wBKS" - приложения семейства - Веб Бюджет "sBKS" - приложения семейсива - Смарт Бюджет "sSiUp" - Сервис ОД и ЭЦП "wSVOD" - приложения семейства - Веб Свод "sSVOD" - приложения семейства - Смарт Свод "wSA" - Сервис Авторизации "sTSH" - Сервис Планировщика <2.имя файла архива> -> имя файла архива *.tar.gz <3. порт> -> порт Apache, по которому будет доступно приложение <4.> <5.> <6.> -> дополнительные обязательные параметры, указываемые в зависимости от типа приложения Дополнительные параметры: тип "wBKS": <4.тип источника СУБД> <5.имя источника СУБД> <6.база данных источника СУБД> тип "sSiUp": <4. код криптопровайдера> ,поддерживается два вендора криптопровайдера КриптоПро или ViPNet, параметр указывается в том случае, если это неКриптоПро. значение должно быть -> "cpro" или "vnet", по умолчанию "cpro" Практические примеры: a) Задача - развернуть .NET Core приложение "Веб Бюджет" на базе архива /opt/wsks-3.1.8_001/ctl/tar_files/wBKS_20.1.1.tar.gz для работы с СУБД MSSQL с именем сервера "KSDB_DEMO\SQL" и базы данных "bks_192" по 5443 порту. выполняем команду: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_addapp.sh "wBKS" "wBKS_20.1.1.tar.gz" "5443" "0" "KSDB_DEMO\SQL" "bks_192" в логах выполнения видим что-то типа этого: ========================================================================================================================= [ OK ] Проверка доступности порта 5443 для устанавливаемого приложения. [ OK ] Проверка\Создание пользователя www-data. useradd: пользователь «www-data» уже существует [ OK ] Создание каталога приложения /opt/wsks-3.1.8_001/www/html/wsks_5443. [ OK ] Создание файла запуска приложения /opt/wsks-3.1.8_001/ctl/app/5443_app.sh. [ OK ] Создание файла конфигурации Apache для приложения /opt/wsks-3.1.8_001/conf.ks/5443_ks.conf. [ OK ] Создание файла конфигурации портов Apache для приложения /opt/wsks-3.1.8_001/conf.ks/ports_5443.conf. [ OK ] Создание файла настроек для приложения /opt/wsks-3.1.8_001/www/html/wsks_5443/appsettings.Production.json. [ OK ] FireWall: Создание\проверка правила для разрешения соединений по порту 5443. Warning: ALREADY_ENABLED: 5443:tcp [ OK ] Остановка сервиса wsks-3.1.8_work_001.service. [ OK ] Запуск сервиса wsks-3.1.8_work_001.service. ========================================================================================================================= Если установка выполнена успешно, то при запуск стартовой страницы в браузере: https://:5443 должна появится форма логина. Аналогично разворачивается сервис Бюджет-Смарт, для это нужно указать тип "sBKS" и соответственно указать свой файл архива [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_addapp.sh "sBKS" "sBKS_1902.tar.gz" "5443" В клиентской части для работы с сервисом приложений Бюджет-Смарт нужно указать : https://:5443/service.ashx Примечание: Если вдруг в архиве используется нестандартная стартующая dll, то ее наименование необходимо передать в первом параметре типа после двоеточия ("wBKS:web_core.dll"), например: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_addapp.sh "wBKS:web_core.dll" "wBKS_20.1.1.tar.gz" "5443" "0" "KSDB_DEMO\SQL" "bks_192" т.о. стандартная стартующая dll будет перезаписана. б) Задача - развернуть .NET Core приложение "Сервис ОД и ЭЦП" на базе архива /opt/wsks-3.1.8_001/ctl/tar_files/sSiUp3.3.7139.Crypto11.tar.gz - Для КриптоПро по порту 5444 выполняем команду: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_addapp.sh "sSiUp" "sSiUp3.3.7139.Crypto11.tar.gz" "5444" "cpro" - Для ViPNet по порту 5445 выполняем команду: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_addapp.sh "sSiUp" "sSiUp3.3.7139.Crypto11.tar.gz" "5445" "vnet" Перед установкой .NetCore приложения Сервис ОД и ЭЦП, обязательно необходимо установить провайдера ЭЦП на хосте. Общая информация: После успешного развертывания приложения в структуре каталогов управления экземпляром контейнера дополнительно появляются: /opt/wsks-3.1.8_001/ctl/app |-- <порт>_app.sh - основной файл запуска .NET Core приложения |-- <порт>_app.err - файл ошибок запуска .NET Core приложения /opt/wsks-3.1.8_001/conf.ks |-- <порт>_ks.conf - конфигурационный файл для HTTP сервер |-- ports_<порт>.conf - конфигурационный файл порта для HTTP сервер /opt/wsks-3.1.8_001/www/html |-- /wsks_<порт> - целевой каталог файлов приложения |-- *.* где, <порт> - значение порта, по которому происходило разворачивание .Net Core приложения дианазон портов от 5443 до 5493 включительно. 2) Удаление существующего развернутого .NET Core приложения Для удаления необходимо запустить: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_delapp.sh <порт> Например, для удаление .NET Core приложения по порту 5443 выполняем команду: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_delapp.sh 5443 в логах выполнения видим что-то типа этого: ========================================================================================================================= [ OK ] Удаление каталога приложения: /opt/wsks-3.1.8_001/www/html/wsks_5443. [ OK ] Удаление файла запуска приложения: /opt/wsks-3.1.8_001/ctl/app/5443_app.sh. [ OK ] Удаление файла конфигурации Apache для приложения: /opt/wsks-3.1.8_001/conf.ks/5443_ks.conf. [ OK ] Удаление файла конфигурации порта Apache для приложения: /opt/wsks-3.1.8_001/conf.ks/ports_5443.conf. [ OK ] Остановка сервиса wsks-3.1.8_work_001.service. [ Инфо ] Запуск сервиса wsks-3.1.8_work_001.service отменен. Отсутствуют установленные приложения. Для установки приложений используйте скрипт ws_addapp.sh. См. инструкция по разверыванию /opt/wsks-3.1.8_001/ctl/readme.txt ========================================================================================================================= Общая информация: При удаленни приложения, физически удаляются: - Файлы конфигурации http сервера для приложения - Файлы запуска приложения - целевой каталог файлов приложения ВАЖНО!!! При удалении приложения "Сервис ОД и ЭЦП", в конфигурации по умолчанию вместе с каталогом приложения будут удалены и файлы ОД. Будьте внимательны! ВАЖНО!!! При удалении последнего приложения, сервис экземпляра контейнера не запускается (т.к. нет развернутых приложений), т.е. контейнер останавливается. 3) Обновление существующего развернутого .NET Core приложения Для обновления существующего развернутого приложения необходимо запустить: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_updapp.sh <тип> <имя файла архива> <порт> Например, для для обновления развернутого по 5443 порту .NET Core приложения Бюджет-Смарт на базе архива /opt/wsks-3.1.8_001/ctl/tar_files/sBKS_19.3.1.2347.tar.gz выполняем команду: [root@demosrv]# bash /opt/wsks-3.1.8_001/ctl/ws_updapp.sh "sBKS" "sBKS_19.3.1.2347.tar.gz" "5443" ВАЖНО!!! При обновлении файлы настроек и конфигураций appsettings.json.t и appsettings.Production.json не перезаписываются. ВАЖНО!!! Архив обновления должен включать полный набор файлов приложений. Поставка изменений не допускается, т.к. обновление производится путем полного удаления содержимого рабочего каталога приложения и последующей записи файлов из архива обновления. ВАЖНО!!! Если криптопровайдер установлен после разворачивания сервиса, который использует ЭЦП, то необходимо перезапустить контейнер с помощью команд ws_stop.sh и ws_start.sh. Это необходимо для обновления ссылок на библиотеки криптопровайдера внутри контейнера $ docker exec -d -t ${dks_cont_name} su -c "ldconfig" Общая информация: При выполнении каких-либо действий связанных с созданием, удалением и обновлением веб приложения всегда производится остановка сервиса и соотвественно контейнера. Нужно об этом помнить, т.к. другие развернутые в контейнере приложения в этот момент будут недоступны. В контейнере http сервер Apache 2.4 выступает в роли прокси сервера, который перенаправляет запросы на встроеный ASP.NET Core веб сервер Kestrel, который в свою очередь уже непосредственно связан с приложением. При разворачивании приложения веб серверу Kestrel назначается порт, равный порту Apache с добавлением цифры 0. Например, для порта Apache 5443, для Kestrel будет назначен порт 54430. Схема развертывания: Хост | | Реверсивный ______________________________________________________ | прокси сервер | | | Apache 2.4 | ASP.NET Core приложение 1 | | _______________ | ___________ ______________ | | | | | | | | | | | | порт=5443 | <---- Http --+-->| Kestrel |<- Http контекст -->| Приложение | | | | | | |___________| |______________| | | | | | порт=54430 | | | | |______________________________________________________| | | | Internet <-- Https -+-> | | ______________________________________________________ | | | | | | | | | ASP.NET Core приложение N | | | | | ___________ ______________ | | | | | | | | | | | | порт=54xx | <---- Http --+-->| Kestrel |<- Http контекст -->| Приложение | | | | | | |___________| |______________| | | |_______________| | порт=54xx0 | | |______________________________________________________|