Appearance
Запуск сервера
Настройки сервера
Файл настроек расположен в директории 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, то используйте защищенный протокол
На экране браузера должна отразиться страница аутификации в системе. Воспользуйтесь стандартным логином и паролем.
Безопасность
Система при каждом запуске анализирует базу данных и ищет суперпользователя. Если суперпользователь не найден, он создается с параметрами, указанными в настройках. Пароль в базе хранится в зашифрованном виде с использованием динамической и постоянной соли. Если вы забыли пароль суперпользователя, то удалите его из базы и система создаст нового при запуске.