...
1. Установка Postgresql инсталлятором
| Warning | ||
|---|---|---|
| ||
На следующем шаге нужно указать путь к директории на разделе, выделенном для БД. Иначе файлы баз данных будут храниться на системном разделе. Для переноса уже существующего хранилища на другой раздел следуйте инструкции. |
| Warning | ||
|---|---|---|
| ||
| Настройки логирования по умолчанию не являются оптимальными и могут очень быстро заполнить диск логами. Нужно выполнить настройку по инструкции. |
2. Проверить 2. Проверить конфигурационный файл C:\Program Files\PostgreSQL\15XX\data\pg_hba.conf, где XX - версия PostgreSQL:
Раздел "#IPv4 local connections" должен содержать запись:
...
При разнесенной (выделенный сервер SQL) установке, или необходимости обеспечить внешний доступ к БД, следует добавить раздел "IPv4 network connections":
и строку:
| Code Block | ||
|---|---|---|
| ||
# IPv4 local connections: host all all 0.0.0.0/0 scram-sha-256 |
3. Перезапустить службу:
4. Проверить выполняется ли прослушивание на порту 5432 для всех активных адресов:
| Code Block | ||
|---|---|---|
| ||
C:\>netstat -a | findstr 5432
Активные подключения
Имя Локальный адрес Внешний адрес Состояние
...
TCP 0.0.0.0:5432 Vitrow2k16:0 LISTENING
|
...
| Code Block | ||
|---|---|---|
| ||
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 | ||
|---|---|---|
| ||
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 | ||
|---|---|---|
| ||
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. Скачать и распаковать дистрибутив:
Инициализация базы данных
Версия дистрибутива 24.1.38 или выше:
11. Файлы инициализации базы данных лежат в папке DB\Install 11. Скопировать путь к файлу резервной копии базы данных (внутри распакованного дистрибутива):
| Code Block | ||
|---|---|---|
| ||
C:\distr\Vitro.Server.MultiPlatform.Windows-24.1.12<версия дистрибутива>\DB\vitrodb.bak |
12. Запустить восстановление БД из бэкапа:
| Code Block | ||
|---|---|---|
| ||
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 | ||
|---|---|---|
| ||
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 | ||
|---|---|---|
| ||
"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 | ||
|---|---|---|
| ||
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 | ||
|---|---|---|
| ||
C:\Program Files\Vitro SoftwarePostgreSQL\Vitro\Server\Conf\db.json |
- изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"ConnectionString": "server=localhost;database=vitrodb;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true", |
- изменить параметр "FileStoragePath", указав корректный путь к папке файлового хранилища:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"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 | ||
|---|---|---|
| ||
C:\Program Files\Vitro Software\Vitro\Server\Conf\workflow.json |
- изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"ConnectionString": "server=localhost;database=workflow;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true", |
- изменить параметр "BaseUrl", указав корректный Url сайта:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"BaseUrl": "http://vitro.example.ru", |
- изменить параметр "BasePath", указав корректный корректный относительный путь для Url:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"BasePath": "/workflow/manager", |
Для автоматического запуска Веб-приложений создать и настроить задания для планировщика Windows:
17. Нажать Win+s и в строке поиска ввести "планировщик заданий". Запустить найденное приложение.
18. В открывшемся окне планировщика на левой панели открыть библиотеку планировщика заданий. На панели "Действия" вызвать функцию "Создать простую задачу". В открывшемся окне ввести "Имя" задачи "Vitro Server .Net Web Application".
Нажать "Далее".
19. На шаге "Триггер" мастера создания выбрать пункт "При запуске компьютера". Нажать "Далее".
20. На шаге "Действие" выбрать пункт "Запустить программу". Нажать "Далее".
21. На шаге "Запуск программы" :
в строке "Программа или сценарий" указать полный путь к исполняемому файлу приложения:
Code Block language powershell "C:\Program Files\Vitro\Server\Vitro.Server.Core.Web\Vitro.Server.Core.Web.exe"в строке аргументов указать:
Code Block language powershell /urls http://localhost:4615в строке "рабочая папка" указать (без кавычек) путь к папке приложения:
Code Block language powershell C:\Program Files\Vitro\Server\Vitro.Server.Core.Web
22. На шаге "Завершение" отметить флаг "Открыть окно "Свойства"для..." и нажать "Готово" :
23. в открывшемся окне свойств установить переключатель в положение "Выполнять для всех пользователей", и отметить флаг "Выполнить с наивысшими правами". Также можно сменить пользователя, от которого будет выполняться задание. После подтверждения ввести пароль пользователя.
24. Повторить шаги 18 - 23 для приложения Workflow Manager задав следующие параметры:
| Code Block | ||
|---|---|---|
| ||
"Имя" задачи: "Vitro Workflow Manager .Net Web Application"
"Программа или сценарий": "C:\Program Files\Vitro\Server\Vitro.Server.Workflow.Manager.Web\Workflow.Manager.Web.exe"
аргументы команды: /urls http://localhost:4616
"рабочая папка" C:\Program Files\Vitro\Server\Vitro.Server.Workflow.Manager.Web |
25. запустить задания вручную и проверить выполняется ли прослушивание на портах, заданных в аргументах команд (здесь 4615 и 4616) для адреса Lo интерфейса:
| Code Block | ||
|---|---|---|
| ||
netstat -a Активные подключения
Имя Локальный адрес Внешний адрес Состояние
...
TCP 127.0.0.1:4615 Vitrow2k16:0 LISTENING ...
TCP 127.0.0.1:4616 Vitrow2k16:0 LISTENING ... |
26. пример конфигов для обратного проксирования для Nginx (for Windows):
...
| language | yml |
|---|---|
| title | C:\nginx\conf\nginx.conf |
...
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 | ||
|---|---|---|
| ||
C:\Windows\system32>xcopy C:\distr\Vitro.Server.MultiPlatform.Windows-<версия дистрибутива>\DB\VitroFileStorage "D:\Data\VitroFileStorage\" /e |
15. Внести изменения в конфигурационный файл db.json:
| Code Block | ||
|---|---|---|
| ||
C:\Program Files\Vitro Software\Vitro\Server\Conf\db.json |
- изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"ConnectionString": "server=localhost;database=vitrodb;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true", |
- изменить параметр "FileStoragePath", указав корректный путь к папке файлового хранилища:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"FileStoragePath": "D:\\Data\\VitroFileStorage", |
- изменить параметр "TempPath", указав корректный путь к папке временных файлов:
| Code Block | ||
|---|---|---|
| ||
"TempPath": "C:\\Temp", |
16. Внести изменения в конфигурационный файл workflow.json:
| Code Block | ||
|---|---|---|
| ||
C:\Program Files\Vitro Software\Vitro\Server\Conf\workflow.json |
- изменить строку соединения, указав в качестве значения для атрибута "server" имя или IP сервера БД, а в качестве значения для атрибута "database" название созданной в п.7 базы данных:
| Code Block | ||||
|---|---|---|---|---|
| ||||
"ConnectionString": "server=localhost;database=workflow;user id=vitrodbuser;password=@pwd4vitro!;Include Error Detail=true", |
17. Внести изменения в конфигурационный файл mail.json:
Указать адрес и порт SMTP сервера:
Code Block language bash "Host": "smtp.example.ru", "Port": 587,Указать данные УЗ для подключения к SMTP серверу:
Code Block language bash "Login": "mail@example.ru", "Password": "123456",Указать адрес отправителя:
Code Block language bash "FromAddress": "mail@example.ru", "FromName": "mail@example.ru",Указать используется ли SSL для подключения к SMTP серверу:
Code Block language bash "EnableSsl": true,Убедиться, что есть параметр SecureSocketOptions:
Code Block language bash "SecureSocketOptions": "StartTls"Остальные параметры оставить по умолчанию.
Для автоматического запуска Веб-приложений создать и настроить задания для планировщика Windows:
18. Нажать Win+s и в строке поиска ввести "планировщик заданий". Запустить найденное приложение.
19. В открывшемся окне планировщика на левой панели открыть библиотеку планировщика заданий. На панели "Действия" вызвать функцию "Создать простую задачу". В открывшемся окне ввести "Имя" задачи "Vitro Server .Net Web Application".
Нажать "Далее".
20. На шаге "Триггер" мастера создания выбрать пункт "При запуске компьютера". Нажать "Далее".
21. На шаге "Действие" выбрать пункт "Запустить программу". Нажать "Далее".
22. На шаге "Запуск программы" :
в строке "Программа или сценарий" указать полный путь к исполняемому файлу приложения:
Code Block language powershell "C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Core.Web\Vitro.Server.Core.Web.exe"в строке аргументов указать:
Code Block language powershell /urls http://localhost:4615в строке "рабочая папка" указать (без кавычек) путь к папке приложения:
Code Block language powershell C:\Program Files\Vitro Software\Vitro\Server\Vitro.Server.Core.Web
23. На шаге "Завершение" отметить флаг "Открыть окно "Свойства"для..." и нажать "Готово" :
24. в открывшемся окне свойств установить переключатель в положение "Выполнять для всех пользователей", и отметить флаг "Выполнить с наивысшими правами". Также можно сменить пользователя, от которого будет выполняться задание. После подтверждения ввести пароль пользователя.
25. Повторить шаги 18 - 23 для приложения Workflow Manager задав следующие параметры:
| Code Block | ||
|---|---|---|
| ||
"Имя" задачи: "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 | ||
|---|---|---|
| ||
netstat -a | findstr 4615
netstat -a | findstr 4616
Имя Локальный адрес Внешний адрес Состояние
...
TCP 127.0.0.1:4615 Vitrow2k16:0 LISTENING ...
TCP 127.0.0.1:4616 Vitrow2k16:0 LISTENING ... |
27. Настроить обратное проксирование.
Обратное проксирование можно настроить с помощью различных программных средств, с учетом предпочтений заказчика. В отдельной статье рассмотрена настройка обратного проксирования через IIS.
В рамках данной статьи рассматривается наиболее предпочтительный вариант с использованьем NGINX в качестве обратного прокси. Пример конфигурационного файла NGINX (nginx.conf):
| Code Block | ||||
|---|---|---|---|---|
| ||||
worker_processes 1;
# Расширенный лог для отладки
#error_log logs/error.log info;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
client_max_body_size 20G;
# КРИТИЧНО: Увеличиваем буферы для тяжелых 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;
keepalive 64;
}
# Редирект с HTTP на HTTPS
server {
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 (не рекомендуется для продукционных сред!):
- Откройте IIS Manager → выберите сервер → Server Certificates → Create Self-Signed Certificate.
- Кликните правой кнопкой на созданный сертификат → Export. Сохраните его как файл
.pfxс паролем. - С помощью утилиты openssl (она часто идет в комплекте с Git для Windows или ставится отдельно), чтобы вытащить ключ и сертификат:
Code Block title Извлечь ключ openssl pkcs12 -in dev-vs.vitro.dev.pfx -nocerts -out dev-vs.vitro.dev.key -nodesCode Block title Извлечь сертификат openssl pkcs12 -in dev-vs.vitro.dev.pfx -clcerts -nokeys -out dev-vs.vitro.dev.crt



























