Skip to content

Запуск сервера

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

Файл настроек расположен в директории config. Переименуйте application.properties.sample в application.properties и отредактируйте его в зависимости от настроек системы.

Листинг application.properties
ini
#Максимальный размер мультипарт файла
spring.servlet.multipart.max-file-size=15MB
#Максимальный размер мультипарт запроса
spring.servlet.multipart.max-request-size=15MB

#Это настройка разбора строки адреса. Со спринг бут 2.7+ теперь PathPatternParser по-умолчанию
#spring.mvc.pathmatch.matching-strategy=ant_path_matcher
spring.mvc.pathmatch.matching-strategy=path_pattern_parser

server.shutdown=graceful
spring.lifecycle.timeout-per-shutdown-phase=20s

#Метрики
management.server.port=8090
management.endpoint.info.enabled=true
management.endpoint.prometheus.enabled=true
management.endpoints.web.exposure.include=health,info,prometheus
management.metrics.export.prometheus.enabled=true

#Уровень логирования
logging.level.root=INFO

#Секретное значение для jwt токенов
technometer.sds.jwtSecret=ThisKeyMustBeProvided_AND_ChangedToYourKey_MinimalLengthOfTheKey_256bit_(32byte)
### Production
# Auth token expiry: 1 hour
technometer.sds.jwtExpirationMs=3600000
# Renewal token expiry: 7 days
technometer.sds.jwtRefreshExpirationMs=604800000
#Перец для хэширования паролей
technometer.sds.password.pepper=SuperSecretPepper

###Test
#technometer.sds.jwtExpirationMs=60000
#technometer.sds.jwtRefreshExpirationMs=120000
#Адрес сервера монги
technometer.sds.mongo_url=mongodb://URL_MONGO_SERVER:PORT_MONGO
#Имя используемой базы
technometer.sds.mongo_db_name=DB_NAME_MONGO
#Имя аршиновской коллекции в монге
technometer.sds.mongo.arshin.collection=COLLECTION_NAME
#Имя коллекции для описания типа в монге
technometer.sds.mongo.typeApproval.collection=type_approvals
#Имя коллекции для блокировки обновления описания типа в монге
technometer.sds.mongo.typeApproval.lock.collection=type_approval_lock
#Флаг включения автоматического обновления описания типов
technometer.sds.mongo.typeApproval.local.update.enabled=true
#Имя аршиновской базы
technometer.sds.mongo.arshin.db_name=DB_NAME_ARSHIN
#Имя коллекции для хранения блокировки обновления Аршина
technometer.sds.mongo.arshin.local.lock.collection=arshin_lock
#Включение автообновления локального Аршина
technometer.sds.mongo.arshin.local.update.enabled=false
#Промежуток опроса для получения статуса подготовки ответа сервисом DEX (в минутах)
technometer.sds.mongo.arshin.local.update.request.delay=15
#Количество записей выдаваемых при поиске в локальном Аршине
technometer.sds.arshin.local.search.limit=1000

#URL Аршина
technometer.sds.arshinURL=https://fgis.gost.ru/fundmetrology/eapi

#KAFKA Settings
technometer.sds.kafka.enabled=false
technometer.sds.kafka.bootstrapAddress=URL_KAFKA_SERVER:PORT_KAFKA
#KAFKA префикс топиков
technometer.sds.kafka.topic.prefix=db_
#Уровень логирования КАФКИ - чтобы отключить - OFF
logging.level.org.apache.kafka=OFF

#Флаг о генерации штрихкодов по id в базе
technometer.sds.barcode.generator=true

#Флаг включения валидатора на POST запросах основных сущностей
technometer.sds.validationEnabled=false

#Время в секундах до устаревания начатой синхронизации
technometer.sds.syncExpirationS=259200
#Флаг режима автоподтверждения регистрации ноды перед синхронизацией
technometer.sds.syncAutoApproveMode=true
#Флаг удаления файлов после синхронизации
technometer.sds.deleteSyncFiles=false
#Логин для пользователя, добавляемого в случае отсутствия пользователей
technometer.sds.security.defaultSuperuserLogin=admin
#Пароль для пользователя, добавляемого в случае отсутствия пользователей
technometer.sds.security.defaultSuperuserPassword=PASSWORD

#MinIO
#Адрес и порт сервера MinIO
technometer.sds.s3.url=http://URL_MINIO_SERVER:PORT_MINIO
#Пользователь MinIO для ЦРМа
technometer.sds.s3.key.access=USER_MINIO
#Пароль пользователя MinIO для ЦРМа
technometer.sds.s3.key.secret=PASSWORD_MINIO_USER
#Корневая корзина MinIO для ЦРМа
technometer.sds.s3.mainBucketName=MAIN_BUCKET_NAME

#SQL база
#Адрес сервера SQL
technometer.sql.server.url=URL_SQL_SERVER
#Порт сервера SQL
technometer.sql.server.port=PORT_SQL_SERVER
#Драйвер SQL
technometer.sql.server.driver=DRIVER_SQL_SERVER
#Имя базы SQL
technometer.sql.db.name=DB_NAME_SQL
#Имя пользователя SQL
technometer.sql.db.user=DB_USER_SQL
#Пароль пользователя SQL
technometer.sql.db.password=DB_PASSWORD_USER

#Аршиновская sql база
technometer.sql.arshin.db.name=DB_NAME_ARSHIN_SQL

#Настройки поиска в Аршине для план-графиков
#Дополнительное время после закрытие план-графика, когда поверки для него будут искаться в Аршине (месяцы)
technometer.plans.metrology.search.planAdditionalTime=3
#Счет при котором названия моделей считаются соответствующими
technometer.plans.metrology.search.modelComplianceScore=90

#Максимальный размер директории бэкапов, байт
technometer.backup.directory.size = 52428800

#Время хранения истории изменений в днях
technometer.history.persistent.days = 365

#Время хранения событий в днях
technometer.events.persistent.days= 30

#Время действия токена восстановления пароля в часах
technometer.restorationTokens.validity.hours = 1

#Тайминги выполнения отложенных задач
#Количество потоков доступных для отложенных задач
spring.task.scheduling.pool.size=5

#Рандомизированный в пределах 6 минут запуск поиска поверок в Аршин по CRON
technometer.scheduling.check.approve.search.rate = ${random.int(59)} ${random.int(5)} 0/2 * * *

#Рандомизированая в пределах 5 минут задержка перед запуском отложенной задачи
technometer.scheduling.random.initial.delay = ${random.int(300000)}

#Рандомизированная задержка в пределах от 2 часов до 2 часов 5 минут перед запуском отложенной задачи обновления данных о количестве элементов  на этапах пайплайнов
technometer.sds.pipeline.elements.entities.count.update.initial.delay = ${random.int[7200000,7500000]}

Внимание

Обратите внимание на параметр technometer.sds.jwtSecret. Длина строчки должна быть не менее 256 бит. В противном случае сервер не запустится.
Обязательно измените эту строчку.

Автозапуск приложения

Для запуска сервера используйте следующий листинг для systemd

technometer.service

ini
[Unit]
Description=CRM
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/technometer
TimeoutStartSec=0
RemainAfterExit=yes
StandardOutput=null

User=root
Group=root

ExecStart=/opt/technometer/bin/start.sh

[Install]
WantedBy=multi-user.target

Первый запуск

Для запуска воспользуйтесь systemd

shell
systemctl daemon-reload
systemctl enable technometer
systemctl start technometer

При первом запуске система создаст суперпользователя с логином admin и паролем 0000. Имя пользователя и пароль можно задать в настройках сервера.

Проверка работы

В браузере откройте страницу по адресу http://localhost:8080.

Не забудьте

  • Замените localhost на ip адрес или FQDN имя сервера при использовании другого компьютера для подключения к серверу.
  • Если вы настроили балансировщик / обратный прокси с протоколом HTTPS, то используйте защищенный протокол

На экране браузера должна отразиться страница аутификации в системе. Воспользуйтесь стандартным логином и паролем.

Безопасность

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