Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1. Установка Postgresql инсталлятором

Image Modified

Image Modified

Image Modified



Warning
titleВажно!

На следующем шаге нужно указать путь к директории на разделе, выделенном для БД. Иначе файлы баз данных будут храниться на системном разделе.

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



Image Modified

Image Modified

Image Modified

Image ModifiedImage Removed

Image Added

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

2. Проверить 2. Проверить конфигурационный файл C:\Program Files\PostgreSQL\15XX\data\pg_hba.conf, где XX - версия PostgreSQL:

Image Modified


Раздел  "#IPv4 local connections"  должен содержать запись:

...

При разнесенной (выделенный сервер SQL) установке, или необходимости обеспечить внешний доступ к БД, следует добавить раздел "IPv4 network connections":

Image Modified


и строку:

Code Block
languagebash
# IPv4 local connections:

host      all      all      0.0.0.0/0      scram-sha-256


3. Перезапустить службу:

Image Modified


4. Проверить выполняется ли прослушивание на порту 5432 для всех активных адресов:

Code Block
languagepowershell
C:\>netstat -a | findstr 5432

Активные подключения

  Имя    Локальный адрес        Внешний адрес          Состояние
...
  TCP    0.0.0.0:5432           Vitrow2k16:0           LISTENING

...

Code Block
languagebash
c:\>cd "C:\Program Files\PostgreSQL\15XX\bin"
C:\Program Files\PostgreSQL\15XX\bin>psql -U postgres -h 127.0.0.1
Пароль пользователя postgres: <ввести пароль пользователя "postgres", заданный при инсталляции Postgresql>

...

Code Block
languagebash
postgres-#CREATE DATABASE vitrodb withWITH ownerOWNER = vitrodbuser encodingENCODING = 'UTF8' connection limitLOCALE_PROVIDER = -'icu' ICU_LOCALE = 'ru-u-kn-true' TEMPLATE = template0 CONNECTION_LIMIT = -1;


8. Создать новую базу данных с именем workflow:

Code Block
languagebash
postgres-#CREATE DATABASE workflow withWITH ownerOWNER = vitrodbuser encodingENCODING = 'UTF8' connection limitLOCALE_PROVIDER = 'icu' ICU_LOCALE = -1;'ru-u-kn-true' TEMPLATE = template0 CONNECTION_LIMIT = -1;


99. Отключиться от cli postgresql:

...

10. Скачать и распаковать дистрибутив:

Image Modified

Image Modified

Image Modified

Инициализация базы данных

Версия дистрибутива 24.1.38 или выше:

11. Файлы инициализации базы данных лежат в папке DB\Install 11. Скопировать путь к файлу резервной копии базы данных (внутри распакованного дистрибутива):

Code Block
languagebash
C:\distr\Vitro.Server.MultiPlatform.Windows-24.1.12<версия дистрибутива>\DB\vitrodb.bak

12. Запустить восстановление БД из бэкапа:

Code Block
languagebash
C:\Program Files\PostgreSQL\15\bin>psql -U vitrodbuser -h 127.0.0.1 vitrodb < "Install\db_func_create.sql
C:\distr\Vitro.Server.MultiPlatform.Windows-24.1.12<версия дистрибутива>\DB\vitrodb.bak"

13. Скопировать следующие папки из дистрибутива в расположение установки в "C:\Program Files\Vitro" :

Code Block
languagebash
C:\Windows\system32>xcopy C:\\Install\db_table_create.sql
C:\distr\Vitro.Server.MultiPlatform.Windows-24.1.12\vitro <версия дистрибутива>\DB\Install\db_data_init.sql

12. Запустить инициализацию базы из скриптов:

Code Block
languagebash
"C:\Program Files\Vitro\" /e
C:\Windows\system32>xcopy C:\distr\Vitro.Server.MultiPlatform.Windows-24.1.12\Vitro.Server.Core.WebPostgreSQL\ХХ\bin>psql -U vitrodbuser -h 127.0.0.1 -d vitrodb -f "C:\Program Filesdistr\Vitro\Server\Vitro.Server.Core.Web\" /e
MultiPlatform.Windows-<версия дистрибутива>\DB\Install\db_func_create.sql" -f "C:\Windows\system32>xcopy C:\distr\distr\Vitro.Server.MultiPlatform.Windows-24.1.12\Vitro.Server.Workflow.Manager.Web<версия дистрибутива>\DB\Install\db_table_create.sql" -f "C:\Program Filesdistr\Vitro\Server\Vitro.Server.Workflow.Manager.Web\" /eMultiPlatform.Windows-<версия дистрибутива>\DB\Install\db_data_init.sql"

Версия дистрибутива ниже 24.1.38:

11.1 Скопировать путь к файлу резервной копии базы данных (внутри распакованного дистрибутива)14. Скопировать папку файлового хранилища в расположение, в которое смонтирован раздел для хранения:

Code Block
languagebash
C:\Windows\system32>xcopy C:\distr\Vitro.Server.MultiPlatform.Windows-24.1.12<версия дистрибутива>\DB\VitroFileStorage "D:\Data\VitroFileStorage\" /evitrodb.bak

12.1 Запустить восстановление БД из бэкапа15. Внести изменения в конфигурационный файл db.json:

Code Block
languagebash
C:\Program Files\Vitro SoftwarePostgreSQL\Vitro\Server\Conf\db.json
  • изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
Code Block
languagejs
titleJson
 "ConnectionString": "server=localhost;database=vitrodb;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true",
  • изменить параметр "FileStoragePath", указав корректный путь к папке файлового хранилища:
Code Block
languagejs
titleJson
"FileStoragePath": "D:\Data\VitroFileStorage\",
ХХ\bin>psql -U vitrodbuser -h 127.0.0.1 vitrodb < "C:\distr\Vitro.Server.MultiPlatform.Windows-<версия дистрибутива>\DB\vitrodb.bak"

Файлы конфигурации

13. Скопировать следующие папки из дистрибутива в расположение установки в "C:\Program Files\Vitro" 16. Внести изменения в конфигурационный файл workflow.json :

Code Block
languagebash
C:\Program Files\Vitro Software\Vitro\Server\Conf\workflow.json
  • изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
Code Block
languagejs
titleJson
 "ConnectionString": "server=localhost;database=workflow;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true",
  • изменить параметр "BaseUrl", указав корректный Url сайта:
Code Block
languagejs
titleJson
"BaseUrl": "http://vitro.example.ru",
  • изменить параметр "BasePath",  указав корректный корректный относительный путь для Url:
Code Block
languagejs
titleJson
"BasePath": "/workflow/manager",

Для автоматического запуска Веб-приложений создать и настроить задания для планировщика Windows:

17.  Нажать Win+s и в строке поиска ввести "планировщик заданий". Запустить найденное приложение.

Image Removed

18.  В открывшемся окне планировщика на левой панели открыть библиотеку планировщика заданий. На панели "Действия" вызвать функцию "Создать простую задачу". В открывшемся окне ввести "Имя" задачи "Vitro Server .Net Web Application". 

Нажать "Далее".

Image Removed

19.  На шаге "Триггер" мастера создания выбрать пункт "При запуске компьютера". Нажать "Далее".

Image Removed

20.  На шаге "Действие" выбрать пункт "Запустить программу". Нажать "Далее".

Image Removed

21. На шаге "Запуск программы" :

Image Removed

...

в строке "Программа или сценарий" указать полный путь к исполняемому файлу приложения:

Code Block
languagepowershell
"C:\Program Files\Vitro\Server\Vitro.Server.Core.Web\Vitro.Server.Core.Web.exe"

...

в строке аргументов указать:

Code Block
languagepowershell
/urls http://localhost:4615

в строке  "рабочая папка" указать (без кавычек) путь к папке приложения:

Windows\system32>xcopy C:\distr\Vitro.Server.MultiPlatform.Windows-<версия дистрибутива>\Vitro "C:\Program Files\Vitro Software\Vitro\" /e
C:\Windows\system32>xcopy C:\distr\Vitro.Server.MultiPlatform.Windows-<версия дистрибутива>\Vitro.Server.Core.Web "C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Core.Web\" /e
C:\Windows\system32>xcopy C:\distr\Vitro.Server.MultiPlatform.Windows-<версия дистрибутива>\Vitro.Server.Workflow.Manager.Web "C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Workflow.Manager.Web\" /e


14. Скопировать папку файлового хранилища в расположение, в которое смонтирован раздел для хранения:

Code Block
languagebash
C:\Windows\system32>xcopy C:\distr\Vitro.Server.MultiPlatform.Windows-<версия дистрибутива>\DB\VitroFileStorage "D:\Data\VitroFileStorage\" /e


15. Внести изменения в конфигурационный файл db.json:

Code Block
languagebash
C:\Program Files\Vitro Software\Vitro\Server\Conf\db.json
  • изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
Code Block
languagejs
titleJson
 "ConnectionString": "server=localhost;database=vitrodb;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true",
  • изменить параметр "FileStoragePath", указав корректный путь к папке файлового хранилища:
Code Block
languagejs
titleJson
"FileStoragePath": "D:\\Data\\VitroFileStorage",
  • изменить параметр "TempPath", указав корректный путь к папке временных файлов:
Code Block
languagejs
"TempPath": "C:\\Temp",


16. Внести изменения в конфигурационный файл workflow.json:

Code Block
languagebash

...

C:\Program Files\Vitro Software\Vitro\Server\Conf\

...

workflow.json
  • изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
Code Block
languagejs
titleJson
 "ConnectionString": "server=localhost;database=workflow;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true",


17. Внести изменения в конфигурационный файл mail.json:

  • Указать адрес и порт SMTP сервера

22. На шаге "Завершение" отметить флаг "Открыть окно "Свойства"для..." и нажать  "Готово" :

Image Removed

23.  в открывшемся окне свойств установить переключатель в положение "Выполнять для всех пользователей", и отметить флаг "Выполнить с наивысшими правами". Также можно сменить пользователя, от которого будет выполняться  задание. После подтверждения ввести пароль пользователя.

Image Removed

...

  • :

    Code Block
    language

...

  • bash
    "

...

  • Host"

...

  • : "

...

  • smtp.example.ru",
    "Port": 587,
  • Указать данные УЗ для подключения к SMTP серверу:

    Code Block
    languagebash
    "Login": "mail@example.ru",
    "Password": "123456",
  • Указать адрес отправителя

...

  • :

    Code Block
    language

...

netstat -a  Активные подключения

   Имя    Локальный адрес        Внешний адрес          Состояние
...
  TCP    127.0.0.1:4615           Vitrow2k16:0           LISTENING   ...
  TCP    127.0.0.1:4616           Vitrow2k16:0           LISTENING   ...
  • bash
    "FromAddress": "mail@example.ru",
    "FromName": "mail@example.ru",
  • Указать используется ли SSL для подключения к SMTP серверу:

    Code Block
    languagebash
    "EnableSsl": true,
  • Убедиться, что есть параметр SecureSocketOptions:

    Code Block
    languagebash
    "SecureSocketOptions": "StartTls"

    Остальные параметры оставить по умолчанию.

Для автоматического запуска Веб-приложений создать и настроить задания для планировщика Windows:

18.  Нажать Win+s и в строке поиска ввести "планировщик заданий". Запустить найденное приложение.

Image Added


19.  В открывшемся окне планировщика на левой панели открыть библиотеку планировщика заданий. На панели "Действия" вызвать функцию "Создать простую задачу". В открывшемся окне ввести "Имя" задачи "Vitro Server .Net Web Application". 

Нажать "Далее".

Image Added


20.  На шаге "Триггер" мастера создания выбрать пункт "При запуске компьютера". Нажать "Далее".

Image Added


21.  На шаге "Действие" выбрать пункт "Запустить программу". Нажать "Далее".

Image Added


22. На шаге "Запуск программы" :

Image Added

  • в строке "Программа или сценарий" указать полный путь к исполняемому файлу приложения:

    Code Block
    languagepowershell
    "C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Core.Web\Vitro.Server.Core.Web.exe"
  • в строке аргументов указать:

    Code Block
    languagepowershell
    /urls http://localhost:4615
  • в строке  "рабочая папка" указать (без кавычек) путь к папке приложения:

    Code Block
    languagepowershell
    C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Core.Web

23. На шаге "Завершение" отметить флаг "Открыть окно "Свойства"для..." и нажать  "Готово" :

Image Added


24.  в открывшемся окне свойств установить переключатель в положение "Выполнять для всех пользователей", и отметить флаг "Выполнить с наивысшими правами". Также можно сменить пользователя, от которого будет выполняться  задание. После подтверждения ввести пароль пользователя.

Image Added


25. Повторить шаги 18 - 23 для приложения Workflow Manager задав следующие параметры:

Code Block
languagepowershell
"Имя" задачи: "Vitro Workflow Manager .Net Web Application"
"Программа или сценарий":  "C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Workflow.Manager.Web\Vitro.Server.Workflow.Manager.Web.exe"
аргументы команды: /urls http://localhost:4616
"рабочая папка" C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Workflow.Manager.Web


26. запустить задания вручную и проверить выполняется ли прослушивание на портах, заданных в аргументах команд  (здесь 4615 и 4616) для адреса Lo интерфейса:

Code Block
languagepowershell
netstat -a | findstr 4615
netstat -a | findstr 4616

   Имя    Локальный адрес        Внешний адрес          Состояние
...
  TCP    127.0.0.1:4615           Vitrow2k16:0  

26. пример конфигов для обратного проксирования для Nginx (for Windows):

Code Block
languageyml
titleC:\nginx\conf\nginx.conf
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

server {
        listen 80 default_server;
		server_name vitro.example.ru;
		
		proxy_http_version  LISTENING   ...
  TCP    127.0.0.1:4616       1.1;
		proxy_pass_request_headers on;
		proxy_pass_request_body    on;

Vitrow2k16:0          location /LISTENING {
                #proxying traffic to upstream application (Vitro.Server.Core.Web)
                proxy_pass http://127.0.0.1:4615;
				proxy_buffering        on;
	        	proxy_cache      ...


27. Настроить обратное проксирование.
Обратное проксирование можно настроить с помощью различных программных средств, с учетом предпочтений заказчика. В отдельной статье рассмотрена настройка обратного проксирования через IIS.
В рамках данной статьи рассматривается наиболее предпочтительный вариант с использованьем NGINX в качестве обратного прокси. Пример конфигурационного файла NGINX (nginx.conf):

Code Block
languageyml
titleC:\nginx\conf\nginx.conf
worker_processes  1;

# Расширенный лог для отладки
#error_log  logs/error.log info; 

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        STATICon;
	        	proxy_cache_validclient_max_body_size 20G;
    
   200  1d;
	 	 		proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
				proxy_cache_bypass $http_pragma    $http_authorization;
 		       	proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
				proxy_no_cache $http_pragma    $http_authorization;
 	            proxy_cache_use_stale  error timeout invalid_header updating
        	                       http_500 http_502 http_503 http_504;

# КРИТИЧНО: Увеличиваем буферы для тяжелых Kerberos-тикетов
    large_client_header_buffers 4 64k;
    proxy_buffer_size   128k;
    proxy_buffers   4 256k;
    proxy_busy_buffers_size   256k;

    # Поддержка постоянных соединений с браузером
    keepalive_timeout  300s;
    keepalive_requests 1000;

    # 1. Настройка Upstream с Keep-Alive (обязательно для Negotiate/NTLM)
    upstream vitros_backend {
         }
server 127.0.0.1:4615;
        location /workflow/manager {keepalive 64; 
    }

    # Редирект с HTTP на HTTPS
    server {
  proxy_pass http://localhost:4616/workflow/manager      listen 80 default_server;
        listen [::]:80 default_server;
        }
	}
}server_name dev-vs.vitro.dev;

        if ( $host != "dev-vs.vitro.dev" ){
            return 444;
        }

        return 301 https://$host$request_uri;
    }

    # Основной SSL сервер
    server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        server_name dev-vs.vitro.dev;

        ssl_certificate     C:/nginx/conf/ssl/dev-vs.vitro.dev.crt;
        ssl_certificate_key C:/nginx/conf/ssl/dev-vs.vitro.dev.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        
        # Оптимизация SSL для Windows
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        if ( $host != "dev-vs.vitro.dev" ){
            return 444;
        }

        # Общие настройки проксирования для Windows Auth
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_pass_request_body    on;
        proxy_read_timeout 1h;
        proxy_send_timeout 1h;

        location / {
            # 2. Используем upstream
            proxy_pass http://vitros_backend;

            # 3. КРИТИЧНО: Отключаем буферизацию для трансляции NTLM-рукопожатия
            proxy_buffering off;
            proxy_request_buffering off;

            # 4. Сбрасываем заголовок Connection для работы Keep-Alive до бэкенда
            proxy_set_header Connection ""; 
            
            # 5. Проброс заголовков
            proxy_set_header Host $host;
            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;
            
            # Для поддержки WebSockets
            proxy_set_header Upgrade $http_upgrade;
            # proxy_set_header Connection "upgrade"; # Раскомментируйте, если нужны только сокеты
        }

        location /workflow/manager {
            proxy_pass http://localhost:4616/workflow/manager;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_buffering off;
            proxy_set_header Host $host;
        }	
    }
}

Примечание: Файлы *.crt и *.key для https протокола можно получить из pfx файла сертификата. На примере самоподписанного сертификата IIS (не рекомендуется для продукционных сред!):

  1. Откройте IIS Manager → выберите сервер → Server Certificates  Create Self-Signed Certificate.
  2. Кликните правой кнопкой на созданный сертификат → Export. Сохраните его как файл .pfx с паролем.
  3. С помощью утилиты openssl (она часто идет в комплекте с Git для Windows или ставится отдельно), чтобы вытащить ключ и сертификат:
    1. Code Block
      titleИзвлечь ключ
      openssl pkcs12 -in dev-vs.vitro.dev.pfx -nocerts -out dev-vs.vitro.dev.key -nodes
    2. Code Block
      titleИзвлечь сертификат
      openssl pkcs12 -in dev-vs.vitro.dev.pfx -clcerts -nokeys -out dev-vs.vitro.dev.crt


Добавление шаблонов рабочих процессов

  1. Перейти на вкладку Workflow Defenitions в Elsa
    http://vitro.example.ru/workflow/manager/workflow-definitions
    где vitro.example.ru - адрес сайта
     
  2. Нажать Create workflow 
    Image Added

  3. Нажать Import 
    Image Added

  4. Выбрать файл шаблона из папки workflows дистрибутива
    Image Added

  5. После загрузки шаблона нажать Publish 
    Image Added

  6. Перейти обратно на вкладку Workflow defenitions  и убедиться, что шаблон создан

  7. Таким образом добавить все шаблоны из папки workflows дистрибутива

Настройка системы

Необходимо указать адрес портала в ключе Site.PortalUrl.

Для этого нужно:

  1. Перейти в список Конфигурация пространства Центр Администрирования (список по умолчанию скрыт).
  2. Открыть папку Общие настройки 
  3. Для ключа Адрес портала указать в поле Значение (строка) адрес портала в виде https://example.com

    Warning
    Важно!
    Адрес портала не должен заканчиваться символом слэша.

Добавление лицензии

Для работы серверной части требуется лицензионный ключ.

Если лицензионного ключа нет, то запросы на обновление элементов выдают ошибку "Лицензионные ограничения".

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

После установки лицензионный ключ необходимо разместить в списке Лицензии пространства Центр администрирования. 

Ссылка на список выведена в сайдбар:

Image Added