Ниже указаны версии ОС и параметры ПК/ виртуальных машин, на которых тестировалась работоспособность сервера 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/ut114demo/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).
Создайте папки:
- /opt/CleverenceDB
- /opt/CleverenceDB/Templates
- /opt/CleverenceDB/Database
В папку Templates положите шаблон базы, который вы хотите развернуть под именем default.mstmpl.
Дайте права на папку /opt/CleverenceDB для пользователя, под которым запущен процесс docker.
Чтобы определить, под каким пользователем запущена служба Docker на вашей системе, выполните команду:
ps aux | grep dockerd
Вы увидите строку, содержащую информацию о процессе dockerd (демон Docker). Первый столбец результата указывает имя пользователя, от которого запущен процесс.
root 1234 0.1 0.2 123456 7890 ? Ssl 10:00 0:01 /usr/bin/dockerd
Теперь используйте команду chown, чтобы сделать пользователя владельцем папки, и команду chmod, чтобы установить полные права для владельца и его группы.
sudo chown -R root /opt/CleverenceDB sudo chmod -R 770 /opt/CleverenceDB
Создание контейнера сервера
Образ самой актуальной версии сервера — cleverence1/platform4:latest
Список доступных образов по ссылке.
Для установки и запуска контейнера из реестра dockerhub необходимо выполнить следующие команды:
sudo docker pull cleverence1/platform4:latest
Эта команда скачивает последнюю версию образа платформы (ключ latest).
Если вы хотите установить какую-то конкретную версию сервера, то следует использовать вместо latest номер этой версии, например, 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 — означает открыть порт 10501 и связать его с портом 80 контейнера, если необходимо запустить несколько баз на одной машине, то порт нужно изменять, например: 10502:80, 10503:80, 10504:80 и т.д. Главное чтобы этот порт был свободен.
Чтобы проверить, свободен ли порт можно использовать команду ниже:
sudo netstat -tuln | grep ':10501'
Если порт используется, будет показан процесс, связанный с ним.
Если вывод пустой, порт свободен. -
InstanceId=CleverenceDB — выставление уникального идентификатора базы, с которым создастся новый контейнер, в данном случае CleverenceDB
-
/opt/CleverenceDB/Templates/default.mstmpl — указание шаблона, из которого будет развернута новая база и запущена под этим конкретным экземпляром контейнера.
-
DataService__ExternalServerUrl=http://X.X.X.X:10501/CleverenceDB — адрес для доступа к серверу. Поскольку контейнер изолирован от внешней среды, то ему необходимо передать его фактический внешний адрес(или несколько). Адрес должен иметь ту же схему(http или https) что и база, в качестве хоста надо указать адрес компьютера на котором запущен контейнер, а в качестве порта указать порт, который был назначен в пункте 2 (если указано 10501:80, то указываем 10501). Если необходимо указать несколько адресов, то их нужно разделить ;. Например: http://10.2.1.170:10501;https://myserveraddressexample.com:10502.
Если не указать данный параметр или указать его неправильно. то сервер будет формировать некорректные строки подключения и QR код
Остановка, запуск, перезапуск контейнера
Остановка | docker stop CleverenceDBContainer1 |
Запуск | docker start CleverenceDBContainer1 |
Перезапуск | docker restart CleverenceDBContainer1 |
Удаление (удалится только контейнер, папка с базой останется неизменной) |
docker rm CleverenceDBContainer1 |
CleverenceDBContainer1 — уникальное имя контейнера
Просмотр текущих логов в консоли
docker logs -f CleverenceDBContainer1
CleverenceDBContainer1 — уникальное имя контейнера
Обновление сервера на новую версию
Чтобы сервер на новую версию, необходимо удалить текущий контейнер и создать его заново.
docker stop CleverenceDBContainer1 docker rm CleverenceDBContainer1 docker pull cleverence1/platform4:latest
Папка в базой при этом не удалится, только сам контейнер.
Запуск сервера с https
Если вы планируете опубликовать ваш сервер в публичную сеть, то в обязательном порядке рекомендуется настраивать https подключение.
Сгенерируйте бесплатный, или купите сертификат для вашего домена, для примера мы будем использовать домен https://myserveraddressexample.com.
Следуйте инструкции выше до момента создания контейнера.
Создание контейнера
Измените команду создания и запуска контейнера как указано ниже:
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 с типовым https портом 443 внутри контейнера
-
DataService__ExternalServerUrl=https://myserveraddressexample.com:10502/CleverenceDB —указываем внешний адрес для построения адресов подключения
Изменение файла настроек
Остановите запустившийся контейнер:
docker stop CleverenceDBContainer1
В файле /opt/CleverenceDB/appSettings.json необходимо указать параметры сертификата.
Если сертификат в виде pfx файла:
{ ... ... "ASPNETCORE": { "Kestrel": { "Certificates": { "Default": { "Path": "pathToPFX", "Password": "somePassword" } } } } ... ... }
Если сертификат в виде pem файлов:
{ ... ... "ASPNETCORE": { "Kestrel": { "Certificates": { "Default": { "Path": "PathToCertPem", "KeyPath": "PathToKeyPem" } } } } ... ... }
Запустите контейнер:
docker start CleverenceDBContainer1
Включение аутентификации
Если мы публикуем наш сервер в публичную сеть, то обязательно необходимо включить режим работы с обязательной аутентификацией.
Если у вас еще не создан ни один пользователь кроме пользователя по умолчанию, то обязательно создайте необходимых пользователей, в том числе пользователя с правами Администратора.
Остановите запущенный контейнер:
docker stop CleverenceDBContainer1
В конфигурационном файле добавьте параметр
{ ... ... "Authentication": { "Enabled":"True" } ... ... }
Запустите контейнер:
docker start CleverenceDBContainer1