Установка и настройка сервера Mobile SMARTS на Linux
Ниже указаны версии ОС и параметры ПК/ виртуальных машин, на которых тестировалась работоспособность сервера Mobile SMARTS при средней (до 10 подключенных устройств) нагрузке.
Версии Linux:
- Astra Linux
- Ubuntu
- Debian
Требования к ПК:
| Параметр | Требования |
|---|---|
| Процессор | Двухъядерный с тактовой частотой ядра 2 ГГц и выше (x64) |
| ОЗУ | 8 ГБ |
| Тип диска | SSD |
| Свободное пространство на диске | 10 Гб и более |
Версии Linux, с которыми работа сервера не тестировалась, но должна поддерживаться:
- Alpine
- CentOS
- Fedora
- OpenSUSE
- Red Hat Enterprise Linux
- SLES
Какой функционал Mobile SMARTS не поддерживается Linux:
- Серверная печать.
- Любые дополнительные коннекторы к учетным системам.
- Сервис подписи документов («Кировка»)
- Коннектор Axapta
- Коннектор 1С работает только в режиме Web (пример строки для подключения к http-сервисам 1С:
http://127.0.0.1/ut115demo/ws/CleverenceWebExtension.1cws).
Все пути и имена файлов в Linux регистрочувствительны.
Установка Docker
В Linux все действия с Mobile SMARTS выполняются через Docker, поэтому в первую очередь необходимо проверить, установлен ли у вас Docker:
docker --version
Если Docker установлен, команда выведет информацию о версии, например:
Docker version 24.0.2, build cb74dfc
Если Docker не установлен, нужно обязательно установить его на ПК.
- Официальная инструкция по установке Docker для Ubuntu
- Официальная инструкция по установке Docker для Debian
Не рекомендуется устанавливать Docker через snap!
При использовании snap, пакеты работают в изолированном окружении (sandbox), поэтому Docker через snap ограничен в доступе к системным ресурсам и файлам вне стандартных путей.
Если у вас уже установлен docker через snap, обязательно удалите перед обычной установкой:
snap remove docker
Перенос базы с Windows сервера
Если у вас уже ранее была развернута база Mobile SMARTS, например, под Windows версией сервера, и вы хотите перенести её под Linux, то следуйте шагам, описанным ниже.
- Остановите существующий сервер под Windows, чтобы избежать изменений в папке базы.
- Заархивируйте содержимое папки базы в ZIP-архив, и переименуйте полученный архив в default.mstmpl.
Шаблон должен быть ОБЯЗАТЕЛЬНО в виде ZIP-архива.
Никакие tar, rar и тем более 7z не поддерживаются.
Шаблон должен содержать в себе только файлы базы, без подпапок.
Далее создайте новую базу из шаблона по инструкции ниже. В качестве шаблона используйте полученный вами файл default.mstmpl.
Создание сервера с новой базой из шаблона
Если вы разворачиваете абсолютно новую базу, то вы можете сделать это из шаблона продукта (файла с расширением .mstmpl).
Подготовка
Выберите какой-нибудь уникальный идентификатор для вашей будущей базы (например, CleverenceDB).
Создайте папки:
mkdir -p /opt/CleverenceDB/Templates
mkdir -p /opt/CleverenceDB/Database
В папку Templates положите шаблон базы, который вы хотите развернуть под именем default.mstmpl.
Дайте права на папку /opt/CleverenceDB для пользователя, под которым запущен процесс docker:
sudo chown -R root /opt/CleverenceDB
sudo chmod -R 770 /opt/CleverenceDB
Создание контейнера сервера
Образ самой актуальной версии сервера —
cleverence1/platform4:latestСписок доступных образов по ссылке.
Установка и запуск контейнера
sudo docker pull cleverence1/platform4:latest
Эта команда скачивает последнюю версию образа платформы (latest).
Если вы хотите установить какую-то конкретную версию сервера, то следует использовать номер этой версии, например:
sudo docker pull cleverence1/platform4:4.0.0.44180
Создание контейнера
sudo docker run -dit --name CleverenceDBContainer1 --restart unless-stopped -p 10501:80 \
-v /opt/CleverenceDB/Templates/default.mstmpl:/app/AppData/Templates/default.mstmpl \
-v /opt/CleverenceDB/Database:/app/AppData/Database \
-e InstanceId=CleverenceDB \
-e DataService__ExternalServerUrl=http://X.X.X.X:10501/CleverenceDB \
cleverence1/platform4:latest
Что можно менять:
CleverenceDBContainer1— уникальное имя контейнера.10501— порт.InstanceId=CleverenceDB— уникальный идентификатор базы.DataService__ExternalServerUrl— внешний адрес сервера.
Остановка, запуск, перезапуск контейнера
| Действие | Команда |
|---|---|
| Остановка | docker stop CleverenceDBContainer1 |
| Запуск | docker start CleverenceDBContainer1 |
| Перезапуск | docker restart CleverenceDBContainer1 |
| Удаление контейнера | docker rm CleverenceDBContainer1 |
Просмотр текущих логов в консоли
docker logs -f CleverenceDBContainer1
Обновление сервера на новую версию
docker stop CleverenceDBContainer1
docker rm CleverenceDBContainer1
docker pull cleverence1/platform4:latest
Запуск сервера с HTTPS
Если вы планируете опубликовать ваш сервер в публичную сеть, то в обязательном порядке рекомендуется настраивать HTTPS подключение.
Сгенерируйте бесплатный сертификат (например, от Let's Encrypt) или купите для вашего домена. Для примера мы будем использовать домен https://myserveraddressexample.com.
Следуйте инструкции выше до момента создания контейнера. Положите сертификат в вашу базу по пути /opt/CleverenceDB/Database/example.com.pfx.
Создание контейнера
Настройка с помощью переменных среды
Для создания контейнера измените команду создания и запуска контейнера, как указано ниже:
sudo docker run -dit \
--name CleverenceDBContainer1 \
--restart unless-stopped \
-p 10502:443 \
-v /opt/CleverenceDB/Templates/default.mstmpl:/app/AppData/Templates/default.mstmpl \
-v /opt/CleverenceDB/Database:/app/AppData/Database \
-e InstanceId=CleverenceDB \
-e DataService__ExternalServerUrl=https://myserveraddressexample.com:10502/CleverenceDB \
-e Kestrel__Certificates__Default__Path=/app/AppData/Database/example.com.pfx \
-e Kestrel__Certificates__Default__Password=123 \
-e ASPNETCORE_URLS=https://*:443 \
cleverence1/platform4:latest
Пояснения к параметрам:
p 10502:443— связываем внешний порт 10502 с портом 443 внутри контейнераDataService__ExternalServerUrl— внешний адрес для построения адресов подключенияKestrel__Certificates__Default__Path— путь к сертификату внутри контейнераKestrel__Certificates__Default__Password— пароль от сертификатаASPNETCORE_URLS— включаем HTTPS в контейнере
Альтернативный способ монтирования сертификата
Если вы хотите смонтировать сертификат отдельно, то добавьте
-v /etc/ssl/certs/example.com.pfx:/app/example.com.pfx
И измените соответствующую переменную среды
-e Kestrel__Certificates__Default__Path=/app/example.com.pfx
Для PEM-файлов сертификата:
-e Kestrel__Certificates__Default__Path=/app/AppData/Database/example.com.pem
-e Kestrel__Certificates__Default__KeyPath=/app/AppData/Database/example.com.key.pem
Настройка с помощью файла конфигурации
Кроме использования аргументов в команде запуска, можно изменить файл конфигурации appsettings.json.
Остановите запустившийся контейнер:
docker stop CleverenceDBContainer1
docker rm CleverenceDBContainer1
Внесите правки в файл appsettings.json:
-
Если сертификат в виде pfx файла
{
//...
"Kestrel": {
"Certificates": {
"Default": {
"Path": "/app/AppData/Database/example.com.pfx",
"Password": "password"
}
}
},
//...
} -
Если сертификат в виде pem файлов
```
{
...
"Kestrel": {
"Certificates": {
"Default": {
"Path": "/app/AppData/Database/example.com.pem",
"KeyPath": "/app/AppData/Database/example.com.key.pem"
}
}
},
...
}
```Измените команду запуска как указано ниже:
sudo docker run -dit \
--name CleverenceDBContainer1 \
--restart unless-stopped \
-p 10502:443 \
-v /opt/CleverenceDB/Templates/default.mstmpl:/app/AppData/Templates/default.mstmpl \
-v /opt/CleverenceDB/Database:/app/AppData/Database \
-e InstanceId=CleverenceDB \
-e DataService__ExternalServerUrl=https://myserveraddressexample.com:10502/CleverenceDB \
cleverence1/platform4:latest
Пояснения к параметрам:
p 10502:443— связываем внешний порт 10502 с портом 443 внутри контейнераDataService__ExternalServerUrl— внешний адрес для построения адресов подключения
Включение аутентификации
При публикации сервера в публичную сеть обязательно включите аутентификацию.
Если у вас еще не созданы пользователи (кроме пользователя по умолчанию), обязательно создайте необходимых пользователей, включая администратора.
Остановите и удалите запущенный контейнер:
docker stop CleverenceDBContainer1
docker rm CleverenceDBContainer1
Настройка с помощью переменных среды
Добавьте к команде запуска контейнера (docker run) переменную среды -e Authentication__Enabled=true
Пример полной команды запуска с HTTPS и аутентификацией:
sudo docker run -dit \
--name CleverenceDBContainer1 \
--restart unless-stopped \
-p 10502:443 \
-v /opt/CleverenceDB/Templates/default.mstmpl:/app/AppData/Templates/default.mstmpl \
-v /opt/CleverenceDB/Database:/app/AppData/Database \
-e InstanceId=CleverenceDB \
-e DataService__ExternalServerUrl=https://myserveraddressexample.com:10502/CleverenceDB \
-e Kestrel__Certificates__Default__Path=/app/AppData/Database/example.com.pfx \
-e Kestrel__Certificates__Default__Password=123 \
-e ASPNETCORE_URLS=https://*:443 \
-e Authentication__Enabled=true \
cleverence1/platform4:latest
Настройка с помощью файла конфигурации
Остановите запущенный контейнер:
docker stop CleverenceDBContainer1
В конфигурационном файле добавьте параметр
{
//...
"Authentication":
{
"Enabled": "True"
}
//...
}
Запустите контейнер:
docker start CleverenceDBContainer1