Перейти к содержанию

Конфигурирование#

Базовые настройки приложения описаны в пакете Ecosoft-lexema8-config.

Приложение lexema8 имеет несколько конфигурационных файлов, которые по умолчанию находятся в каталоге ./config. Они позволяют переопределить базовые настройки, а также добавлять новые.

Конфигурационные файлы подразделяются на уровни, благодаря чему можно настраивать приложение в соответствии с требуемым окружением:

  • default.js - Основной конфигурационный файл. Содержит общие настройки приложения, которые могут быть переопределены другими файлами. Файл отслеживается системой контроля версий.
  • production.js - Файл должен содержать настройки, которые используются в производственном окружении. Имеет более высокий приоритет, чем default.js. Файл должен использоваться только на развернутом сайте. Не рекомендуется создавать в самом проекте. Не должен отслеживаться системой контроля версий.
  • local.js - Используется для локального конфигурирования приложения. Позволяет каждому разработчику при необходимости использовать индивидуальные настройки. Имеет более высокий приоритет, чем 'default.js' и 'production.js'. Файл не должен отслеживаться системой контроля версий.

Предупреждение

default.js не должен содержать настройки подключения к БД, пароли, секретные ключи, которые используются в производственном окружении, поскольку в этом случае они будут храниться в удаленном репозитории.

Предупреждение

Если вы создали в вашем проекте конфигурационные файлы production.js и local.js, то убедитесь, что они добавлены в .gitignore

Предупреждение

В производственном окружении необходимо вручную добавить файл production.js (в папку, где находятся остальные конфигурационные файлы приложения), переопределив нужные настройки (файла default.js).

Правило объединения конфигурационных файлов: если свойство является массивом или примитивным типом, то они объединяются путем замены (значение берется из более приоритетного файла). Объекты - дополняются новыми свойствами, если свойства с таким именем не было, и объединяются (с таким же правилом), если такое имя уже существовало.

Нужный файл выбирается платформой на основе системной переменной среды NODE_ENV. В производственном режиме необходимо устанавливать её значение в production. При этом значении будет выбран соответствующий файл настроек (production.js). Этот механизм базируется на npm-пакете config, в статье Ecosoft-lexema8-config указаны ссылки на подробное описание его работы.

Ниже описание разделов файла конфигурирования.

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

db#

В разделе db необходимо указать требуемые профили подключения к БД.

Используемый приложением профиль определяется в разделе applications в свойстве db настроек сервиса данных data. По умолчанию используется значение main. При необходимости можно указать несколько профилей (например, при использовании доставки сообщений).

main#

Профиль по умолчанию. Содержит настройки подключения к пользовательской БД.

  • host - Имя хоста.

  • database - Имя базы.

  • dialect - Диалект.

тип значение по умолчанию допустимые значения
string mssql, postgres
  • instanceName - Имя экземпляра sql-сервера.

  • port - Порт сервера бд.

  • user - Логин пользователя.

  • password - Пароль.

  • isolationLevel - Задает уровень изолированности транзакций.

тип значение по умолчанию допустимые значения
string READ_UNCOMMITTED READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
  • requestTimeout - Время ожидания выполнения запроса.

common#

errors#

Путь к файлу описания ошибок относительно "контекста" (см. свойство context в разделе common). Свойство можно не указывать, если не планируется переопределять сообщения, отображаемые пользователю.

applications#

gate#

Настройка сервиса gate. Обязательная настройка!

  • passwordExpiration - задает срок действия пароля пользователя в днях, значение 0 отключает проверку.
тип значение по умолчанию допустимые значения
int 0
  • twoFactorProvider - провайдер двухфакторный аутентификации. В случае установки значения none считается выключенной.
тип значение по умолчанию допустимые значения
string none none, email, phone

post#

Настройка сервиса post. Обязательная настройка!

  • defaultEmailId - идентификатор почтового ящика, который используется по умолчанию.

  • emails - словарь с описанием используемых почтовых ящиков. Ключом является уникальный идентификатор почтового ящика, а значением - объект со свойствами:

    • host - имя хоста smtp-сервера.
    • port - порт smtp-сервера.
    • user - логин.
    • pass - пароль.
    • userName - имя отображаемое при отправке почты.
    • secure - включить/выключить доставку по электронной почте с использованием TLS/STARTTLS. (Для 'smtp.yandex.ru' значение должно быть true)
тип значение по умолчанию допустимые значения
bool false true, false
  • sms - настройки сервиса для отправки смс (можно не описывать, если код для восстановления пароля не отправляется через смс).

    • login - логин.
    • password - пароль.
    • token - токен доступа к api (используется у провайдера "мтс коммуникатор").
    • sender - имя отправителя.
    • provider - имя провайдера, реализующий отправку смс сообщений.
тип значение по умолчанию допустимые значения
string undefined prostor, mts, либо путь к своему собственному классу

jsreport#

Настройки сервиса отчетов jsreport.

  • protocol - используемый веб-протокол.
тип значение по умолчанию допустимые значения
string http
  • host - имя хоста (при локальной разработке - localhost, в случае продакшена имя контейнера с сервисом).
тип значение по умолчанию допустимые значения
string localhost
  • port - порт для запуска.
тип значение по умолчанию допустимые значения
int 3070
  • script - путь к модулю, запускающему сервис.
тип рекомендуемое значение
string ecosoft-lexema8-jsreport-service

Дополнительные настройки сервиса указаны в статье.

preview#

Настройки сервиса превью.

  • protocol - используемый веб-протокол.
тип значение по умолчанию допустимые значения
string http
  • host - имя хоста (при локальной разработке - localhost, в случае продакшена имя контейнера с сервисом).
тип значение по умолчанию допустимые значения
string localhost
  • port - порт для запуска.
тип значение по умолчанию допустимые значения
int 3074
  • script - путь к модулю, запускающему сервис.
тип рекомендуемое значение
string ecosoft-lexema8-preview-creator-service
  • fileSizeLimit - максимальный размер конвертируемого файла.
тип значение по умолчанию допустимые значения
string 30mb
  • maxRetry - кол-во попыток сконвертировать файл, после которых возникнет ошибка.
тип значение по умолчанию допустимые значения
int 3
  • resultTTL - время хранения готового результата (файла или ошибки) в миллисекундах, в случае отсутствия соединения для ответа (socket).
тип значение по умолчанию допустимые значения
int 10 * 60 * 1000

scheduler#

Настройки сервиса для работы с серверными задачами scheduler.

  • protocol - используемый веб-протокол.
тип значение по умолчанию допустимые значения
string http
  • host - имя хоста (при локальной разработке - localhost, в случае продакшена имя контейнера с сервисом).
тип значение по умолчанию допустимые значения
string localhost
  • port - порт для запуска.
тип значение по умолчанию допустимые значения
int 3075
  • script - путь к модулю, запускающему сервис ('ecosoft-lexema8-scheduler-service').
тип рекомендуемое значение
string ecosoft-lexema8-scheduler-service

Дополнительные настройки сервиса указаны в статье.

dss#

Настройка сервиса dss.

  • protocol - используемый веб-протокол.
тип значение по умолчанию допустимые значения
string http
  • host - имя хоста.
тип значение по умолчанию допустимые значения
string localhost
  • port - порт для запуска.
тип значение по умолчанию допустимые значения
int 3076
  • script - путь к модулю, запускающему сервис.
тип рекомендуемое значение
string ecosoft-lexema8-dss-service

Дополнительные настройки сервиса указаны в статье.

collector#

Настройка сервиса collector.

  • db - схема подключения к базе данных для сохранения информации о системе.
  • protocol - используемый веб-протокол.
тип значение по умолчанию допустимые значения
string http
  • host - имя хоста.
тип значение по умолчанию допустимые значения
string localhost
  • port - порт для запуска.
тип значение по умолчанию допустимые значения
int 3077
  • script - путь к модулю, запускающему сервис.
тип рекомендуемое значение
string ecosoft-lexema8-collector-service

excel#

Настройка сервиса excel.

  • protocol - используемый веб-протокол.
тип значение по умолчанию допустимые значения
string http
  • host - имя хоста.
тип значение по умолчанию допустимые значения
string localhost
  • port - порт для запуска.
тип значение по умолчанию допустимые значения
int 3079
  • script - путь к модулю, запускающему сервис.
тип рекомендуемое значение
string ecosoft-lexema8-excel-service

stimulsoftReport#

Настройка сервиса отчётов stimulsoftReport.

  • protocol - используемый веб-протокол.
тип значение по умолчанию допустимые значения
string http
  • host - имя хоста.
тип значение по умолчанию допустимые значения
string localhost
  • port - порт для запуска.
тип значение по умолчанию допустимые значения
int 3080
  • script - путь к модулю, запускающему сервис.
тип рекомендуемое значение
string ecosoft-lexema8-stimulsoft-report-service

Примеры#

Настройка ограничения количества запросов для отправки кода при восстановлении пароля#

Пример конфигурационного фала для Nginx

# сервис gate
upstream gate_upstream {
    server 127.0.0.1 down;
    server localhost:3061;
}


# задаем ограничение (документация https://nginx.org/ru/docs/http/ngx_http_limit_req_module.html)
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/m;

server {
   listen 80;

   # вместо страницы 503 возвращать json с текстом и кодом ошибки
   error_page 503 @503;
    location @503 {
      default_type application/json;
      return 503 '{"errors":[{"message":"Request limit exceeded","code":216}]}';
    }

   # добавляем маршрут (для сервиса gate), для которого будем применять ограничение
   location /api/v2.0/gate/password {
      proxy_pass http://gate_upstream/password;
      # применяем для этого маршрута ограничение
      limit_req zone=one burst=5 nodelay;
   }
}

Отключение двухфакторной аутентификации только для пользователей внутренней сети#

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

В конфигурационном файле приложения для сервиса gate необходимо включить настройки twoFactorProvider и enableLocalRoutes

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

upstream testcore.lex.lan_upstream {
    server 127.0.0.1 down;
    server testcore.lex.lan:8081;
}

server {
    listen 80;
    server_name testcore.lex.lan;

    access_log /var/log/nginx/testcore.lex.lan/testcore.lex.lan.log;
    error_log /var/log/nginx/testcore.lex.lan/testcore.lex.lan.err.log;

    client_max_body_size 500M;
    proxy_busy_buffers_size   512k;
    proxy_buffers   4 512k;
    proxy_buffer_size   256k;

    fastcgi_buffers 32 32k;
    fastcgi_buffer_size 64k;

    # перенаправляем запросы к основному сайту (контейнер app)
    location / {
        proxy_pass http://testcore.lex.lan_upstream;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    # перенаправляем на маршрут, где двухфакторная аутентификация выключена
    location = /api/v2.0/gate {
        proxy_pass http://testcore.lex.lan_upstream/api/v2.0/gate/local/;
    }

    # перенаправляем на маршрут, где двухфакторная аутентификация выключена
    location = /api/v2.0/gate/ {
        proxy_pass http://testcore.lex.lan_upstream/api/v2.0/gate/local/;
    }
}

Пример конфигурационного файла для сайта, который будет доступен только для внешних пользователей:

upstream testcorelocal.lexema.ru_upstream {
    server 127.0.0.1 down;
    server testcore.lex.lan:8081;
}

server {
    listen 8080;
    server_name testcore.lexema.ru;

    access_log /var/log/nginx/testcore.lexema.ru/testcore.lexema.ru.log;
    error_log /var/log/nginx/testcore.lexema.ru/testcore.lexema.ru.err.log;

    client_max_body_size 500M;
    proxy_busy_buffers_size   512k;
    proxy_buffers   4 512k;
    proxy_buffer_size   256k;

    fastcgi_buffers 32 32k;
    fastcgi_buffer_size 64k;

    # перенаправляем запросы к основному сайту (контейнер app)
    location / {
        proxy_pass http://testcore.lexema.ru_upstream;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }


    # запрещаем доступ к маршрутам, где двухфакторная аутентификация выключена
    location = /api/v2.0/gate/local {
        return 404;
    }

    # запрещаем доступ к маршрутам, где двухфакторная аутентификация выключена
    location /api/v2.0/gate/local/ {
        return 404;
    }
}