= Локальная установка Entaxy на рабочую станцию или сервер.

__Alternative languages:__

* xref:windows-local-installation.adoc[English]


== Введение.

В этой инструкции мы рассмотрим установку Entaxy. Установка на все ОС проходит аналогичным образом и отличается выбором соответствующих инсталляторов или использованием пакетных менеджеров.


== Установка Java.

. Скачиваем и устанавливаем JAVA. Для работы Entaxy рекомендуется Java 11. Работа платформы протестирована на OpenJDK и LibericaJDK от BellSoft (https://libericajdk.ru/pages/downloads/)

. Создаем переменную окружения JAVA_HOME.

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


== Дистрибутивы Entaxy

Сущетсвет несколько вариантов сборок Entaxy, которые доступны по адресу https://entaxy.ru/download 

. `entaxy-assembly-compact*` - все-в-одном, брокер, бд и графический веб-интерфейс в одной сборке. См. xref:#_установка_all_in_one [Установка all-in-one]

. `entaxy-assembly*` - сборка без предустановленного графического веб-интерфейса. См. xref:#_установка_без_ui [Установка без UI]

. `entaxy-assembly-with-ui*` - сборка без предустановленного брокера сообщений. См. xref:#_установка_с_внешним_брокером [Установка с внешним брокером]    

. Все компоненты устанавливаются отдельно. См. xref:#_покомпонентная_установка [Покомпонентная установка]


== Установка all-in-one

. Распаковываем архив `entaxy-assembly-compact*`

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

. Переходим в каталог `/bin` приложения и запускаем: 
    - entaxy - для Linux
    - entaxy.bat - для Windows

. Немного ждем и проверяем, что система корректно запустилась см. xref:#_проверка_готовности_системы [Проверка готовности системы]


== Установка без UI

. Распаковываем архив `entaxy-assembly*`

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

. Переходим в каталог `/bin` приложения и запускаем: 
    - entaxy - для Linux
    - entaxy.bat - для Windows

. Немного ждем и проверяем, что система корректно запустилась см. xref:#_проверка_готовности_системы [Проверка готовности системы]

. Веб-интерфейс можно установить, после запуска системы, командой (в консоли Карафа): `source scripts/entaxy-ui.install`


== Установка с внешним брокером

. Для установки брокера смотрите инструкцию: xref:#_установка_и_настройка_брокера[Установка и настройка брокера]

. Распаковываем архив `entaxy-assembly-with-ui*`

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

. Переходим в каталог `/bin` приложения и запускаем: 
    - entaxy - для Linux
    - entaxy.bat - для Windows

. Немного ждем и проверяем, что система корректно запустилась см. xref:#_проверка_готовности_системы [Проверка готовности системы]  


== Покомпонентная установка

=== Установка и настройка БД.

Entaxy не привязана к какой-либо конкретной СУБД, но по умолчанию используется встроенная H2, в данной инструкции будет показано как установить и настроить систему на работу с БД Postgres.

. Скачиваем инсталятор с официального сайта (https://www.enterprisedb.com/downloads/postgres-postgresql-downloads).

. Запускаем установку. image:image/postgresql-installation-1.jpg[postgresql-installation]

. Оставляем все настройки по умолчанию и устанавливаем пароль `postgres`.

. Запускаем pgAdmin 4 и устанавливаем мастер пароль для приложения `postgres`. image:image/pgadmin-start.jpg[pgadmin-start]

. Добавляем подключение к локальному серверу БД.

. Выбираем доступную базу данных из списка и переходим в Query Tool, в котором выполняем sql запрос:

[source,sql]
----
CREATE USER "entaxy" WITH PASSWORD 'entaxy';
----
image:image/pgadmin-create-user.jpg[pgadmin-create-user]

[start=7]
. Теперь в том же окне по очереди (по одной строчке) выполняем запросы для создания необходимых для Entaxy баз данных.

[source,sql]
----
CREATE DATABASE esb_entaxy;
----

[source,sql]
----
GRANT ALL PRIVILEGES ON DATABASE esb_entaxy TO entaxy;
----

[source,sql]
----
CREATE DATABASE cache;
----

[source,sql]
----
GRANT ALL PRIVILEGES ON DATABASE cache TO entaxy;
----

На этом настройка СУБД завершена.


=== Установка и настройка брокера

В этой инструкции мы рассмотрим использование брокера сообщений Artemis.

. Скачиваем архив с официального сайта (https://activemq.apache.org/components/artemis/download/).

. Распаковываем архив и переходим в директорию bin.

. Запускаем в командной строке создание брокера `artemis create --user entaxy --password entaxy --allow-anonymous $ARTEMIS_HOME/brokers/entaxy-broker`.

. После создания брокера надо открыть файл `$ARTEMIS_HOME/brokers/entaxy-broker/etc/broker.xml` и проверить, что автоматическое удаление очередей и адресов отключено:

[source,xml]
----
<!--default for catch all-->
<address-setting match="#">

    <auto-delete-queues>false</auto-delete-queues>
    <auto-delete-addresses>false</auto-delete-addresses>

</address-setting>
----

. Запускаем брокер сообщений `$ARTEMIS_HOME/brokers/entaxy-broker/bin/artemis run`

Установка брокера завершена.


=== Установка Entaxy

. xref:#_установка_с_внешним_брокером [Выполняем установку Entaxy без брокера]

. xref:#_настройка_entaxy_на_внешнюю_базы_данных [Перенастраиваем Entaxy на внешнюю БД], установленную на предыдущем шаге.


== Проверка готовности системы

Чтобы проверить, что все сервисы Entaxy готовы к работае, открываем следующий адрес в браузере http://localhost:8181/system/health

При полной готовности система выдаст следующую информацию: 
image:image/health-check.png[]

Если при первом запуске Entaxy Connections находится в статусе TEMPORARILY_UNAVAILABLE, необходимо перезапустить Entaxy.

== Настройка Entaxy на внешнюю базу данных

По умолчанию все сборки Entaxy используют встроенную БД H2. 

Для того чтобы перенестроить Entaxy на использование внешней БД, нужно выполнить следующие шаги:

В каталоге `/etc` приложения:

. Найти файлы `org.ops4j.datasource-entaxy.esb.cache.cfg` и `org.ops4j.datasource-entaxy.esb.storage.cfg`

. Удалить их или переименовать путем добавления постфикса, например, `*.defaultdb`. 

. Найти файлы `org.ops4j.datasource-entaxy.esb.cache.cfg.pg` и `org.ops4j.datasource-entaxy.esb.storage.cfg.pg` и удалить постфикс `.pg` из имени.

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


== Тестирование.

Для проверки работоспособности платформы переходим к xref:../../connectors/uniform-exchange-service/tests/postman.adoc[инструкции по тестированию].


== Кластерный запуск Entaxy

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

Чтобы два и более экземпляра соединились в кластер достаточно их запустить на разных хостах из одной подсети.


=== Настройка статичных адресов узлов кластера

Если требуется указать статичные адреса узлов кластера поиска узлов, то это можно сделать в файле `/etc/hazelcast.xml`

- Выключаем мультикаст `<multicast enabled="false">`
- Включаем ip `<tcp-ip enabled="true">`

например:
[source,xml]
----
<multicast enabled="false">
    <multicast-group>224.2.2.3</multicast-group>
    <multicast-port>54327</multicast-port>
</multicast>
<tcp-ip enabled="true">
    <interface>127.0.0.1</interface>
</tcp-ip>
----

Также можно задавать маски адресов: 
[source,xml]
----
<tcp-ip enabled="true">
    <interface>192.168.1.*</interface>
</tcp-ip>
----


=== Проверка кластера

Чтобы понимать, что экземпляры соединились в кластер, выполняем следующую команду в одной из консолей карафа: `cluster:node-list`

image:image/cluster-note-list.png[]


=== Запуск нескольких экземпляров на одном хосте

Для того чтобы запустить несколько экземпляров системы на одном хосте, необходимо в файле `etc/entaxy.properties` изменить значения свойств:

    - entaxy.rmiRegistryPort
    - entaxy.rmiServerPort
    - entaxy.jmxmpPort
    - entaxy.sshPort
    - entaxy.org.osgi.service.http.port
    - entaxy.service.port.management
    - entaxy.service.port.subscription