Настройка работы сборки через RabbitMQ
Настройка работы сборки через RabbitMQ
Установка среды разработки Erlang
Скачать установщик с https://www.erlang.org/downloads и запустить от имени администратора
Отметьте необходимые пункты для устновки и нажмите "Next"
Выберите директорию установки и нажмите "Next"
В следующем окне нажмите "Install" По окончании установки, нажмите "Close"
Установка RabbitMQ
Скачать установщик с https://www.rabbitmq.com/download.html, запустить установку от имени администратора (нельзя запускать от пользователя с кириллицей), должны соблюдаться следующие требования:
- Одновременно должна быть установлена только одна версия Erlang (64-разрядная версия);
- Erlang должен быть установлен с использованием учетной записи администратора;
- Путь установки должен содержать только символы ASCII;
Выберите устанавливаемые компоненты и нажмите "Next":
Выберите путь установки и нажмите "Install":
После окончания установки нажмите "Finish":
Если в ходе установки будет запрошено добавление правил в брандмауэр Windows согласитесь и нажмите "ОК".
Запуск и настройка службы RabbitMQ
Открыть терминал
C:\Windows\System32\cmd.exe /k cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.11\sbin
Выполнить
rabbitmq-plugins enable rabbitmq_management
- Перезапустить службу RabbitMQ, для этого нажать сочетание клавишь Win + R, в открывшемся окне "Выполнить" ввести
services.msc
и нажать "ОК". Откроется окно управления службами, в котором выбрать службу RabbitMQ нажать правой кнопкой мыши и выбрать "Перезапустить":
- Перейти в web-интерфейс управления сервером RabbitMQ для этого в адресной строке браузера ввести http://localhost:15672/
- Войти под логин/пароль: guest/guest
- На вкладке Admin добавить пользователя stack с паролем stack с правами админа и нажать "Add user":
- Нажать на созданного пользователя, убедиться что в разделе Permissions стоит "/" в поле "virtul host" и нажать "Set permission":
Настройка сборки для работы с RabbitMQ
1. В папке ..\Stack\Stack.Srv\Bin создать папку - Name - копия c ..\Stack\Stack.Srv\Bin\0, где Name - это произвольное имя латиницей (например, аббревиатура организации или версия тестовой сборки);
2. Создать в папке файл settings.toml, открыть блокнотом, вставить тескт и сохранить его:
[RabbitMQrpc]
host="localhost"
port=5672
vhost="/"
exchange=""
login="stack"
password="stack"
queue="amq.rabbitmq.reply-to"
routing_key="fl"
routing_key_asynch="fl_asynch"
qos=1
product_name="StackService"
auto_ack=true
time_limit=0.05
[RabbitMQService]
task="fl"
host="localhost"
port=5672
vhost="/"
exchange_in = "service_to_backend"
exchange_out = "service_from_backend"
exchange_type_in = "fanout"
exchange_type_out = "fanout"
login="stack"
password="stack"
queue=""
routing_key=""
product_name="StackService"
затем создать копии для каждой задачи;
3. Дать имена вида settings_fl.toml, settings_ul.toml, settings_admin.toml и т.д по имени задач;
4. В каждом из файлов настроить имя очередей, например для задачи fl:
routing_key="2009_fl"
routing_key_asynch="2009_fl_asynch"
и
exchange_in = "2009_service_to_backend"
exchange_out = "2009_service_from_backend"
В разделе [RabbitMQrpc] в параметре vhost="/"
В разделе [RabbitMQrpc] в параметре queue="amq.rabbitmq.reply-to"
Поставить параметр auto_ack=true
В разделе [RabbitMQService] в параметре vhost="/"
В разделе [RabbitMQService] в параметре queue=""
5. Удостовериться, что подключена заплатка CommonApi\prg\RabbitMQ;
6. Запустить командную строку из папки со сборкой на уровне со Stack.Srv (например cd /d D:\Stack
) и выполнить (если скрипт запускается на удаленном компьютере, предварительно скопировать папку NodeJS из V:\Stack.Version в папку со сборкой Стек и изменить пути к этой папке при выполнении команды):
V:\Stack.Version\NodeJS\node.exe V:\Stack.Version\NodeJS\scripts autorun -address:localhost:8080 -name:Name -task:fl,ul,admin -user:sa -password: -maincount:2 -asynccount:2 -threads:20 -asyncthreads:2
- name - префикс имени для программы автозапуска, должен совпадать с названием папки из пункта 1;
- task - перечень создаваемых задач, разделенных запятой;
- user - логин пользователя в БД, от имени которого запускаются задачи, например,
SA
; - password - пароль пользователя, указанного выше;
- maincount - количество процессов для каждой задачи (синхронные) (желательно не более 5);
- asynccount - количество процессов для каждой задачи (асинхронные);
- threads - количество потоков на один stack.exe (порядка 20);
- asyncthreads - количество одновременных асинхронных операций (отчетов, расчетов) на одном асинхронном stack.exe.
В результате выполнения скрипт создаст программы автозапуска, в данном примере по 4 на каждую задачу:
7. В папке ..\Stack\StackGateway (или StackGateway_mssql, в зависиомти от SQL сервера) открыть на редактирование файл application.yml
8. Вносим следующие изменения:
- В разделе [server] указать порт (по-умолчанию 8080, при неоходимости его можно сменить, так же можно поменять количество потоков, которые будут одновременно обрабатывать запросы):
- В разделе [stack] в параметре
allowedOrigins
указываем имя и/или адрес сервера, порт:
- Ниже в параметре
tasks
настраиваем задачи, для этого указываемroutingKey
иroutingKeyAsync
, как в файлахsettings.toml
, каждой из задач:
- Производим настройки сервисной очереди [service:] в строках
exchangeIn
иexchangeOut
как в файлеsettings.toml
, поменяв их местами:
- в
profiles
активировать профильpostgresql
илиmssql
:
- в активированном профиле указать SQL сервер, имя базы, пользователя и пароль:
10. Создать задачу автозапуска, для этого запустить файл DispatcherSetup.cmd из папки ..\Stack\Stack.Clint\DispatcherSetup.cmd на запрос пароля ввести "stack", в открывшемся окне в левой части нажать правой кнопкой мыши на "Программы автозапуска" и выбрать "Добавить программу":
Ввести название и нажать "Сохранить":
11. Сконфигурировать созданную задачу, для этого в левой части окна выбрать вновь созданную программу автозапуска, в правой части окна:
- в поле "cmd" ввести путь до файла javaw.exe в
..\Stack\Stack.Client\jre1.8.0_162\bin\javaw.exe
, для этого в правой части окна настроек диспетчера выбрать параметр и дважды кликнуть, ввести путь и нажать "Сохранить":
- таким же образом изменить параметр "cmdArgs" в котором указать пути до файла
..Stack\StackGateway\stackgateway-X.X.X.jar
и файлаapplication.yml
, например:
-Xmx1024m -jar E:\ContinuousIntegration\20.09\StackGateway\stackgateway-0.0.2.jar --spring.config.location=classpath:file:E:\ContinuousIntegration\20.09\StackGateway\application.yml
- изменить параметр "path", указав путь до папки StackGateway:
- запустить созданную задачу:
- После запуска задачи может быть сгенерирован ключ шифровки jwt токена с помощью
url:port/generatePrivateKey
, и установлен параметрsecret
, тогда все шлюзы, использующие один и тот же ключ смогу расшифровать jwt токен:
- При внесении изменений в файл
application.yml
следует перезапустить в диспетчере задачуGateway
.
12. Настроить в диспетчере задачи для share, upload и BirtWebReporter, для этого:
- Запустить командную строку из папки со сборкой на уровне с Stack.Srv (например cd /d D:\Stack2009) и выполнить:
V:\Stack.Version\NodeJS\node.exe V:\Stack.Version\NodeJS\scripts deploy -task: -user:sa -password:
- в результате скрипт создаст задачи для share и upload, BirtWebReporter, front и admin, две последние остановить и удалить (фронт удалять в случае если будет настраиваться nginx);
Примечание
Upload можно настроить через сервлет, тогда нужно указать путь к папке upload
в application.yml
и в stack.ini
.
- так же скрипт создаст файл env.json и разместит его в папку stack-front (при ее наличии) или в папке на уровне откуда был запущен скрипт;
13. В файле env.json отредактировать api host для созданных задач автозапуска с указанием номера порта, который указывали в application.yml
, url path prefix вида /stackgateway/fl
, и строку аутентификации:
{
"API_HOST": "http://localhost:8182/stackgateway/fl",
"API_HOST_FL": "http://localhost:8182/stackgateway/fl",
"API_HOST_UL": "http://localhost:8182/stackgateway/ul",
"API_HOST_ADMIN": "http://localhost:8182/stackgateway/admin",
"API_HOST_AUTH":"http://localhost:8182/stackgateway/auth",
"API_HOST_SHARE": "http://localhost:8080/Stack2009/share",
"API_HOST_UPLOAD": "http://localhost:8080/Stack2009/upload"
}
- url api host для share и upload оставить без изменений:
14. Настроить nginx, для этого открыть файл ..\nginx\conf\nginx.conf на редактирование и добавить location
для фронта и программ автозапуска, например:
В примере web сервер слушает на порту 8090, папка stack-front расположена по пути E:\ContinuousIntegration\20.09\stack-front, программы автозапуска настроены на порт 8182;
15. Запустить десктопную версию программы, создать группы POLE_USER и ROLE_ADMIN, добавить всех пользователей в группу ROLE_USER, пользоавтеля SA добавить также в группу ROLE_ADMIN.