Перейти к основному содержимому
Версия: 3.4

Установка и настройка сервера 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:

  1. Серверная печать.
  2. Любые дополнительные коннекторы к учетным системам.
  3. Сервис подписи документов («Кировка»)
  4. Коннектор Axapta
  5. Коннектор 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 через snap!

При использовании snap, пакеты работают в изолированном окружении (sandbox), поэтому Docker через snap ограничен в доступе к системным ресурсам и файлам вне стандартных путей.

Если у вас уже установлен docker через snap, обязательно удалите перед обычной установкой:

snap remove docker

Перенос базы с Windows сервера​

Если у вас уже ранее была развернута база Mobile SMARTS, например, под Windows версией сервера, и вы хотите перенести её под Linux, то следуйте шагам, описанным ниже.

  1. Остановите существующий сервер под Windows, чтобы избежать изменений в папке базы.
  2. Заархивируйте содержимое папки базы в 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:

  1. Если сертификат в виде pfx файла

    {
    //...
    "Kestrel": {
    "Certificates": {
    "Default": {
    "Path": "/app/AppData/Database/example.com.pfx",
    "Password": "password"
    }
    }
    },
    //...
    }
  2. Если сертификат в виде 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