# Варианты разворачивания

## **Общая структура** <a href="#id-19ev1v8ycb0r" id="id-19ev1v8ycb0r"></a>

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FObN8glYeGRWIao3Zb710%2F0.jpeg?alt=media)

Bpium Enterprise состоит из 3 независимых приложений:

* **Bpium** — сервер приложения и логики
* **Bpium S3** — сервер файлового хранилища
* **Bpium BPM** — сервер исполнения процессов

Также для работы используются другие приложения:

* **Postgre SQL** — сервер баз данных
* **Redis**— сервер хранилища состояния процессов и очереди заданий

Клиенты для работы сотрудников:

* **Веб-приложение (браузер)** — приложение для настройки системы и работы сотрудников
* **Мобильное приложение** — приложение для работы сотрудников

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

## Основные схемы <a href="#id-1kw585ricuu0" id="id-1kw585ricuu0"></a>

### **Минимальный набор для тестового запуска Бипиум** <a href="#zeyl26ndwj6c" id="zeyl26ndwj6c"></a>

#### **Описание:** <a href="#w3eotrjqm8k1" id="w3eotrjqm8k1"></a>

Односерверная архитектура, работающая по HTTP без балансировщика. Самый простой вариант разворачивания. Все 3 приложения и база данных работают на одном сервере, клиент обращается к приложениям напрямую по HTTP. Данный вариант используется крайне редко, так как сервисов, работающих на незащищенном канале связи HTTP, с каждым днем становится всё меньше и меньше, поэтому данную схему рекомендуем использовать только для тестового запуска Бипиума.

Подробная инструкция данного варианта разворачивания на Windows-сервере описана в нашей статье [“Установка как служба”](https://docs.bpium.ru/deployment/service)

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FMFowbcHi6L22P0nTtA8s%2F1.jpeg?alt=media)

#### **Требуемое ПО:** <a href="#ggtv9pqb3ggx" id="ggtv9pqb3ggx"></a>

* Дистрибутив Bpium
* PostgreSQL
* Redis

#### **Как настроить:** <a href="#id-4dgj8yy540gq" id="id-4dgj8yy540gq"></a>

1. Установить PostgreSQL и создать пустую базу данных\
   • Версия не ранее 10 (допустимы 11+, 12+, 13+, 14+)\
   • Сервер PostgreSQL должен быть установлен на том же сервере, что и Bpium, или на другом отдельном сервере, но в пределах локальной сети (если на удаленном сервере, то могут будут большие задержки)\
   • Сервер PostgreSQL должен работать как служба (в Windows)
2. Установить Redis\
   • Версия: последняя\
   • Redis должен работать как служба (в Windows)\
   • Ссылка сборки для Windows:[ **https://github.com/MicrosoftArchive/redis/releases**](https://github.com/MicrosoftArchive/redis/releases)
3. Собрать конфигурационный файл config.env для Bpium.\
   Ознакомиться со всеми параметрами можно в статье [Параметры config.env](../extra/parametry-config.env)\
   Необходимые минимальные для данной схемы параметры и их описание:

<table><thead><tr><th width="260.3333333333333">Параметр</th><th>Описание</th><th>Значение для схемы</th></tr></thead><tbody><tr><td>DB_CONNECTION_STRING</td><td>строка подключения к базе данных Бипиума. Формат: postgres://логин:пароль@адрес:порт/бд</td><td>Пример: postgres://user:password@localhost:5432/bpium_db</td></tr><tr><td>HOST</td><td>публичный/локальный IP-адрес или домен сервера для доступа из внешних ресурсов.</td><td>Пример: domen.ru или 213.48.87.211</td></tr><tr><td>PORT_HTTP</td><td>порт веб-сервера Bpium для входящих HTTP запросов.</td><td>80</td></tr><tr><td>S3_HOST</td><td>публичный/локальный IP-адрес или домен сервера хранилища файлов для доступа из внешних ресурсов</td><td>Пример: domen.ru или 213.48.87.211</td></tr><tr><td>S3_PORT</td><td>порт хранилища файлов S3</td><td>2020</td></tr><tr><td>BPM_HOST</td><td>публичный/локальный IP-адрес или домен сервера для доступа из внешних ресурсов. Формат: domen.ru или 213.48.87.211</td><td>localhost</td></tr><tr><td>BPM_PORT</td><td>порт сервера процессов BPM</td><td>2030</td></tr></tbody></table>

4. Запустить исполняемый файл _bpium-setup_. Данный исполняемый файл подготовит базу данных для работы приложения: при пустой базе данных будут созданы необходимые для запуска таблицы, созданы системные данные; если эти данные уже есть в базе, при необходимости будет проведена миграция.
5. Запустить приложения Бипиума. Есть 2 варианта запуска:\
   &#x20;  1\) Просто запустить исполняемые файлы приложений (_bpium, bpium-s3, bpium-bpm_)\
   &#x20;  2\) Зарегистрировать приложения в системе в качестве служб/демонов.\
   Так как данную схему мы рекомендуем только для тестового развертывания, предлагаем воспользоваться первым вариантом
6. Проверка работы:\
   1\) Проверка основного Bpium-сервера (API): запустите браузер и в адресной строке наберите домен или IP-адрес, который был указан в _config.env_ файле в параметре HOST. Если откроется страница авторизации, значит Bpium-сервер работает. Стандартный логин и пароль для авторизации: _admin/admin_\
   _2)_ Проверка сервера хранилища файлов (_Bpium-S3_). Создайте новый каталог с одним полем типа Файл, создайте новую запись в данном каталоге и попробуйте загрузить туда любой небольшой файл. Если рядом с файлом не появился восклицательный знак, значит сервер хранилища файлов работает корректно.\
   3\) Проверка сервера исполнения процессов (_Bpium-BPM_). \
   &#x20;   • Перейдите в каталог “Сценарии”, создайте новую запись с любым сценарием(можно даже простой сценарий с компонентами _Начало процесса_ и _Конец процесса_). \
   &#x20;   • Перейдите в каталог “Внешние запросы”, создайте новую запись: в поле _URL_ укажите значение _test_, в поле _Сценарий_ выберите созданный ранее сценарий. \
   &#x20;   • В адресной строке наберите следующую строку:\
   &#xNAN;_`адрес_сервера/api/webrequest/test`_ где _адрес\_сервера_ - это домен или IP-адрес сервера Bpium (параметр HOST из файла _config.env_). \
   &#x20;   • Перейдите в каталог “Процессы” и проверьте появилась ли запись. Если запись появилась, то проверьте, что результат в данной записи “_Завершен_” - в этом случае можно сделать вывод, что сервер исполнения процессов работает корректно.

### **Рекомендуемый набор для рабочего (production) запуска Бипиум** <a href="#k46db5ukmtcc" id="k46db5ukmtcc"></a>

#### **Описание:** <a href="#id-8jvt3qssgmrv" id="id-8jvt3qssgmrv"></a>

Односерверная архитектура, работающая по HTTPS с дополнительным веб-сервером (балансировщиком) nginx. В данной схеме запросы сначала поступают на балансировщик через защищенный канал HTTPS, расшифровываются и перенаправляются нужному приложению по HTTP. Поэтому в настройках балансировщика должны быть прописаны соответствующие правила, перенаправляющие запросы нужному приложению.\
Именно данный вариант разворачивания мы сами используем при установке на серверах клиентов, а также рекомендуем тем, кто выполняет установку самостоятельно.

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F0pOFR3gMCOqKIyCoWRnV%2F%D0%9E%D0%B4%D0%BD%D0%BE%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D1%81%20HTTPS%20c%20%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%D0%BE%D0%BC%20(1).jpg?alt=media&#x26;token=608e7d0f-3160-4d18-bded-6be935bc272b" alt=""><figcaption></figcaption></figure>

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

#### **Требуемое ПО:** <a href="#l3hxxd7sf3u" id="l3hxxd7sf3u"></a>

* Дистрибутив Bpium
* PostgreSQL
* Redis
* Nginx в качестве веб-сервера балансировщика
* Зарегистрированное доменное имя
* Сертификат безопасности выданный для зарегистрированного домена\
  Узнать о том, как получить сертификат для Вашего домена можно в [этой статье](https://docs.bpium.ru/deployment/extra/tls-ssl-sertifikat)

#### **Как настроить:** <a href="#id-5jxcrzhpi25q" id="id-5jxcrzhpi25q"></a>

1. Установить PostgreSQL и создать пустую базу данных\
   • Версия не ранее 10 (допустимы 11+, 12+, 13+, 14+)\
   • Сервер PostgreSQL должен быть установлен на том же сервере, что и Bpium, или на другом отдельном сервере, но в пределах локальной сети (если на удаленном сервере, то могут будут большие задержки)\
   • Сервер PostgreSQL должен работать как служба (в Windows)
2. Установить Redis\
   • Версия: последняя\
   • Redis должен работать как служба (в Windows)\
   • Ссылка сборки для Windows:[ **https://github.com/MicrosoftArchive/redis/releases**](https://github.com/MicrosoftArchive/redis/releases)
3. Установить Nginx\
   • Версия последняя
4. Собрать конфигурационный файл для Nginx\
   Мы используем следующий конфигурационный файл:

<pre><code><strong>worker_processes 1;
</strong>    events {
    worker_connections 1024;
}

http {
    client_max_body_size 100M;
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

  server {
    listen 80 default_server;
    server_name _;
    return 307 https://$host$request_uri;
  }
  
  server {
    listen 443 ssl;
# необходимо указать зарегистрированный домен
# в примере ниже domen.ru
    server_name domen.ru;
# необходимо указать путь к файлу сертификата с расширением 
# .crt или .pem (в примере ниже директория C:/bpium/domen_ru.crt
    ssl_certificate C:/bpium/domen_ru.crt;
# необходимо указать путь к ключу сертификата с расширением 
# .key или .pem (в примере ниже директория C:/bpium/domen_ru.key
    ssl_certificate_key C:/bpium/domen_ru.key;
    
    location /storage {
	# необходимо указать порт, который слушает Bpium-S3
	# в примере ниже данным портом является 2020 
            proxy_pass http://localhost:2020; 
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
	    
    location / {
	# необходимо указать порт, который слушает сервер Bpium
	# в примере ниже данным портом является 3000 
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
  }
}

</code></pre>

5. Собрать конфигурационный файл config.env для Bpium.\
   Необходимые минимальные для данной схемы параметры и их описание:

<table><thead><tr><th width="257.3333333333333">Параметр</th><th>Описание</th><th>Значение для схемы</th></tr></thead><tbody><tr><td>DB_CONNECTION_STRING</td><td>строка подключения к базе данных Бипиума. Формат: postgres://логин:пароль@адрес:порт/бд</td><td>Пример: postgres://user:password@localhost:5432/bpium_db</td></tr><tr><td>HOST</td><td>домен сервера для доступа из внешних ресурсов</td><td>Формат: domen.ru</td></tr><tr><td>PORT_HTTP</td><td>порт веб-сервера Bpium для входящих HTTP запросов</td><td>3000</td></tr><tr><td>S3_HOST</td><td>домен сервера хранилища файлов для доступа из внешних ресурсов</td><td>Формат: domen.ru</td></tr><tr><td>S3_PORT</td><td>порт хранилища файлов S3  по которому обращается Bpium Server</td><td>443</td></tr><tr><td>S3_HTTPS</td><td>Использовать протокол HTTPS.</td><td>true</td></tr><tr><td>BPM_HOST</td><td>публичный/локальный IP-адрес или домен сервера исполнения процессов</td><td>localhost</td></tr><tr><td>BPM_PORT</td><td>порт сервера исполнения процессов BPM</td><td>2030</td></tr></tbody></table>

{% hint style="info" %}
В данной схеме в параметре PORT\_HTTP 80-ый и 443-ий порты указывать нельзя, так как этот порт будет открыт nginx’ом. Рекомендуем использовать любой другой порт, например: 3000
{% endhint %}

6. Собрать конфигурационный файл config.env для Bpium-S3.\
   Приложение Bpium-S3 в данной схеме требует отдельного файла _config.env_, поэтому само приложение и конфигурационный файл должны быть в отдельной директории.

| Параметр | Описание                                                | Значение для схемы |
| -------- | ------------------------------------------------------- | ------------------ |
| S3\_HOST | домен сервера хранилища файлов                          | Формат: domen.ru   |
| S3\_PORT | порт, на котором будет работать сервер хранилища файлов | 2020               |

7. Запустить исполняемый файл _bpium-setup_. Данный исполняемый файл подготовит базу данных для работы приложения: при пустой базе данных будут созданы необходимые для запуска таблицы, созданы системные данные; если эти данные уже есть в базе, при необходимости будет проведена миграция.
8. Запустить nginx.&#x20;
9. Запустить приложения Бипиума. Есть 2 варианта запуска:\
   1\) Просто запустить исполняемые файлы приложений (_bpium, bpium-s3, bpium-bpm_)\
   2\) Зарегистрировать приложения в системе в качестве служб/демонов.\
   Для проверки работы рекомендуем воспользоваться сначала первым вариантом. После проверки уже зарегистрировать приложения в системе в качестве служб/демонов\
   После проверки уже зарегистрировать приложения в системе в качестве служб/демонов
10. Проверка работы:\
    1\) Проверка основного Bpium-сервера (API): запустите браузер и в адресной строке наберите домен, который был указан в основном _config.env_ файле в параметре HOST. Если откроется страница авторизации, значит Bpium-сервер работает. Стандартный логин и пароль для авторизации: _admin/admin_\
    _2)_ Проверка сервера хранилища файлов (_Bpium-S3_). Создайте новый каталог с одним полем типа Файл, создайте новую запись в данном каталоге и попробуйте загрузить туда любой небольшой файл. Если рядом с файлом не появился восклицательный знак, значит сервер хранилища файлов работает корректно.\
    3\) Проверка сервера исполнения процессов (_Bpium-BPM_). \
    &#x20;   • Перейдите в каталог “Сценарии”, создайте новую запись с любым сценарием(можно даже простой сценарий с компонентами _Начало процесса_ и _Конец процесса_). \
    &#x20;   • Перейдите в каталог “Внешние запросы”, создайте новую запись: в поле _URL_ укажите значение _test_, в поле _Сценарий_ выберите созданный ранее сценарий. \
    &#x20;   • В адресной строке наберите следующую строку:\
    &#xNAN;_`адрес_сервера/api/webrequest/test`_ где _адрес\_сервера_ - это домен сервера Bpium (параметр HOST из файла _config.env_). \
    &#x20;   • Перейдите в каталог “Процессы” и проверьте появилась ли запись. Если запись появилась, то проверьте, что результат в данной записи “_Завершен_” - в этом случае можно сделать вывод, что сервер исполнения процессов работает корректно.
