Инструкция для размещения ADVANTA на сервере с ОС Linux и СУБД PostgreSQL
Перед началом настройки системы ознакомьтесь с актуальными требованиями к программному обеспечению.
Описание установки системы основывается на том, что уже выполнены требования к программному обеспечению сервера базы данных и сервера приложения, а также имеется в наличии инсталляционный диск системы. Если систему планируется разносить на два сервера, то рекомендуем сначала выполнить настройку сервера базы данных, а затем сервера приложения.
Если у вас для системы ADVANTA используется БД MS SQL, развернутая на отдельном сервере под управлением ОС Windows, то инструкцию по подготовке сервера базы данных можно найти здесь.
Если же у вас для системы ADVANTA база данных будет развертываться под ОС Linux, то используется БД PostgreSQL. Перед началом настройки БД PostgreSQL необходимо включить сетевые репозитории и выполнить установку пакетов:
deb cdrom:[OS Astra Linux 1.7.2 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce
apt update apt install postgresql-14
Далее необходимо выполнить первичную настройку СУБД PostgreSQL:
1. Выполнить вход в сессию служебного пользователя postgres:
su - postgres
Работая в сессии служебного пользователя postgres установить пароль администратора СУБД:
psql -c "alter user postgres with password '<указать_пароль>'"
Завершить работу в сессии служебного пользователя postgres:
exit
2. Наcтроить удаленный доступ к СУБД, для чего в конфигурационном файле /etc/postgresql/14/main/postgresql.conf скорректировать параметр listen_addresses:
listen_addresses = '<указать_ip>'
3. В файле /etc/postgresql/14/main/pg_hba.conf добавить строку:
host all all <указать_подсеть> scram-sha-256
4. Добавить разрешающее правило файрволла для порта 5432:
ufw allow 5432/tcp
5. Перезагрузить службу postgresql:
systemctl restart postgresql
Далее необходимо создать пустую БД:
su - postgres psql CREATE DATABASE "a2nta_db" WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' TABLESPACE = pg_default CONNECTION LIMIT = -1; ALTER DATABASE "a2nta_db" SET search_path TO "$user", public, dbo; CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; GRANT TEMPORARY, CONNECT ON DATABASE a2nta_db TO PUBLIC; GRANT ALL ON DATABASE a2nta_db TO postgres WITH GRANT OPTION;
После создания базы данных необходимо выполнить восстановление предоставленного в дистрибутиве дампа базы данных в новую созданную БД a2nta_db
.
Подробную инструкцию по подготовке сервера базы данных можно найти на отдельной странице Настройка базы данных PostgreSQL.
Для работы сервера приложений ADVANTA необходимо установить в операционной системе следующие стандартные пакеты (из репозитория ОС):
curl gnupg2 ca-certificates lsb-release debian-archive-keyring wget apt-transport-https
Веб-сервер/Прокси (последняя стабильная версия из репозитория ОС или от вендора):
nginx
Среды .Net (варианты установки):
wget http://archive.ubuntu.com/ubuntu/pool/main/libx/libxkbfile/libxkbfile1_1.1.0-1_amd64.deb apt install ./libxkbfile1_1.1.0-1_amd64.deb apt install ca-certificates wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null wget https://packages.microsoft.com/config/debian/10/prod.list -O /etc/apt/sources.list.d/microsoft-prod.list apt update apt install dotnet-sdk-6.0
Далее необходимо включить сетевые репозитории и выполнить установку пакетов (операции выполняются под учетной записью администратора сервера):
deb cdrom:[OS Astra Linux 1.7.0 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free astra-ce backports
apt update apt install curl apt install gnupg2 apt install apt-transport-https apt install nginx apt install cifs-utils apt install libldap2-dev apt install libldap-common apt install libldap-2.4-2
В случае, если документы Системы лежат на SMB шаре, отредактировать файл /etc/fstab
, добавив в него строку подключения/монтирования:
//192.168.X.X/documents/a2nta /mnt/documents/a2nta cifs guest 0 0
Опционально, можно установить базовые шрифты от MS (для использования в отчетах типа «Электронная таблица») и обновить кэш шрифтов сервера:
apt install ttf-mscorefonts-installer fc-cache -f -v
Опционально. Для использования авторизации в системе ADVANTA через службу Active Directory необходимо установить библиотеку
apt install libldap2-dev libldap-common libldap-2.4-2
Выполнить настройку https и локального сертификата:
dotnet dev-certs https dotnet dev-certs https --trust
1. Загрузить и распаковать файлы приложения ADVANTA на сервер.
2. Создать файл конфигурации приложения (образцы находятся по пути: <версия приложения>/SL/config/
). Созданный файл конфигурации разместить в основном каталоге приложения: /opt/advanta-app/Advanta/client.config
. Пример созданного файла конфигурации client.config
:
<?xml version="1.0"?> <configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> <!--<section name="ldapService" type="Config.LDAPConfigurationSection, smcorelib"/> <section name="adDomains" type="Config.ADDomainsConfiguration, smcorelib"/> <section name="openIdConnect" type="Config.OpenIdConnectConfigurationSection, smcorelib"/> <section name="hashiCorpVault" type="Config.HashiCorpVaultConfigurationSection, smcorelib"/>--> </configSections>
Теги:
<connectionStrings> <add name="db" providerName="Npgsql" connectionString="User ID=postgres;Password=P@ssw0rd;Host=192.168.16.46;MaxPoolSize=1000;Port=5432;Database=chd-perf-test;EF Template Database=chd-perf-test;Pooling=false" /> <add name="dbCubes" providerName="Npgsql" connectionString="User ID=postgres;Password=P@ssw0rd;Host=192.168.16.46;MaxPoolSize=1000;Port=5432;Database=chd-perf-test;EF Template Database=chd-perf-test;Pooling=false" /> <add name="busDb" providerName="Npgsql" connectionString="User ID=postgres;Password=P@ssw0rd;Host=192.168.16.46;MaxPoolSize=1000;Port=5432;Database=chd-perf-test;EF Template Database=chd-perf-test;Pooling=false" /> </connectionStrings>
Значения:
connectionString
– строка подключения к базе данных;User
– пользователь для базы данных;Password
– пароль пользователя.Теги:
<appSettings> <add key="WebPath" value="https://192.168.16.250:5000" /> <add key="TimeZone" value="+5" /> <add key="autologin" value="false" /> <add key="FilesRootPath" value="C:\SL_Files" /> <add key="BusTransportType" value="PostgreSql" /> <add key="NegotiationByEmailTimeout" value="120" /> <add key="ApplicationId" value="81c341c9da40" /> <add key="EnableSwagger" value="1" /> <add key="EnableTestODataEndPoint" value="1" /> <!-- <add key="AllowedUrlRedirects" value="https://www.wikipedia.org;https://www.deepl.com/translator" /> --> <!-- <add key="DocumentsArchiveLifeTimeHours" value="168" /> <add key="MaxTotalFileSize" value="2097152000" /> <add key="MaxFileCount" value="500" /> <add key="MaxDocumentsArchivingActionCount" value="3" /> <add key="MaxFullPathLength" value="150" /> <add key="MinFolderNameLength" value="3" /> <add key="MinRootFolderNameLength" value="30" /> <add key="DocumentsArchivingService" value="Remote" /> --> <!-- <add key="DocumentsArchivingService" value="Local" /> <add key="Bus_DocumentsArchivingCommandsQueue:NumberOfWorkers" value="1"/> <add key="Bus_DocumentsArchivingCommandsQueue:MaxParallelism" value="3"/> <add key="ProfilerLogEnable" value="true"/> <add key="IsWriteToProfilerLogAllRequests" value="true"/> <add key="ProfilerAllLogsSizeLimitMegaBytes" value="10"/> <add key="CompressionLevel" value="Optimal|Fastest|NoCompression"/> <add key="TemporaryArchiveFlat" value="Memory|FileSystem"/> <add key="PathToTemporaryArchiveFlat" value="C:\Temp"/> --> </appSettings>
Параметр value
– это ссылка, которая отображается в уведомлениях из системы, рассылаемых на почтовые ящики.
Пример: внешний адрес сервера 192.168.1.62:5000
, сервер IIS должен корректно заходить по этому адресу. В файле конфигурации системы ADVANTA client.config
необходимо указать корректный путь в параметре WebPath
. Для приведенного выше примера:
<add key="WebPath" value="https://192.168.1.62:5000" />
Для этого нужно в настройках Bindings (привязки, в настройках IIS) сайта указать тот внешний адрес системы, но без указания протокола и названия приложения.
Теги:
<!--<ldapService ldapPath="LDAP://" baseDN=""> <authenticationTypes> <add authenticationType="Secure" /> <add authenticationType="Signing" /> <add authenticationType="Sealing" /> </authenticationTypes> </ldapService> <adDomains> <domains> <add name="DOMAIN_NAME" login="login" password="password" ldappath="LDAP://DC=domain_name,DC=local"/> </domains> </adDomains> <openIdConnect> <providers> <add caption="caption" clientId="clientId" metadataURL="metadataURL" authenticationType="authenticationType" enabled="false"/> </providers> </openIdConnect>--> <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> <container> <register type="System.IO.DirectoryInfo, mscorlib" mapTo="System.IO.DirectoryInfo, mscorlib" name="searchIndexPath"> <constructor> <param name="path" value="/var/advanta-app/search" /> </constructor> </register> <register type="Lucene.Net.Store.Directory, Lucene.Net" mapTo="Lucene.Net.Store.SimpleFSDirectory, Lucene.Net"> <constructor> <param name="path" dependencyName="searchIndexPath" /> </constructor> </register> <register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> <constructor> <param name="documentsFolder" value="/var/advanta-app/documents" type="string"></param> </constructor> </register> <register type="SmartSuite.Data.Persistence.StorageProviderFactory, SmartSuite.Data" mapTo="SmartSuite.PostgreSQL.PgStorageProviderFactory, SL.PostgreSQL" /> <register type="SL.App.ServerObjects.IServerObjectsProvider, SL.App.ServerObjects" mapTo="SL.App.ServerObjects.PostgreSQL.ServerObjectsProvider, SL.PostgreSQL" /> <register type="P2M.Cubes.Data.IDirectoryDataManager, smcorelib" mapTo="SL.PostgreSQL.Data.DirectoryDataManager, SL.PostgreSQL" /> <register type="P2M.Cubes.Data.IPivotDataManager, smcorelib" mapTo="SL.PostgreSQL.Data.PivotDataManager, SL.PostgreSQL" /> <!--<register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.SqlFileStorageProvider, smcorelib"> <constructor> <param name="connectionStringName" value="db" type="string"> </param> </constructor> </register>--> <!--<register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> <constructor> <param name="documentsFolder" type="string" value="/var/advanta-app/documents" /> </constructor> </register>--> <register type="Advanta.Files.IFileStorageProvider, Advanta.Infrastructure" mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> <constructor> <param name="documentsFolder" type="string" value="/var/advanta-app/documents" /> </constructor> </register> </container> </unity> <!-- <hashiCorpVault address="" roleId="" secretId=""> <containers> <add id="dbPasswords" version="V1" mountPoint="kv-v1" path="dbPasswords"/> <add id="adDomainPasswords" version="V2" mountPoint="kv-v2" path="adDomainPasswords"/> </containers> </hashiCorpVault> --> </configuration>
3. В файле <версия приложения>/Advanta/appsettings.json
необходимо указать URL, по которому будет открываться приложение. Пример листинга конфигурационного файла appsettings.json
:
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Advanta-53bc9b9d-9d6a-45d4-8429-2a2761773502;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "LogLevel": { "Default": "Debug", "Microsoft.AspNetCore": "Warning" } }, "ASPNETCORE_ENVIRONMENT": "Development", "Kestrel": { "Endpoints": { "Http": { "Url": "https://192.168.16.250:5000" }, } }, "AllowedHosts": "*", "appSettings": { "AppName": "streamline", "FirstUserMail": "support@advanta-group.ru", "support": "bug@advanta-group.ru", "statistics": "statistics@advanta-group.ru", "ConfigurationSettingsFile": "_Resources\\Config\\ConfigFiles\\ConfigurationSettings.xml", "Security_PagesConfig": "_Resources\\Config\\ConfigFiles\\SecuritySettings.xml", "PortletsConfig_File": "_Resources\\Config\\PortletEngine\\EngineConfig.xml", "Projects_StatusFile": "_Resources\\Config\\P2M\\Projects\\ProjectStatuses.xml", "Projects_PriorityFile": "_Resources\\Config\\P2M\\Projects\\ProjectPriority.xml", "errorMode": "debug", "ValidationSettings:UnobtrusiveValidationMode": "None", "SoapServicesAspNetCompatibility" : "false" }, "FormOptions": { "ValueCountLimit": "2048" } }
https
, вместо http
, т.к. протокол http
считается устаревшим.
Раздел Системы с диаграммой Ганта доступен только при работе Системы через https
.
Информация о переводе Системы с протокола http
на использование протокола https
находится на отдельной странице.
Для выбора языка, отличного от русского, нужно:
globalization.config
.<globalization culture="ru-RU" uiCulture="ru-Ru" fileEncoding="windows-1251" requestEncoding="utf-8" responseEncoding="utf-8" />
uiCulture
на:uk-UA
, если нужен украинский язык интерфейса.cs-CZ
, если нужен чешский язык интерфейса.en
, если нужен английский язык интерфейса.ru-Ru
.dotnet Advanta.GetLicenseInfo.dll
_sl.dat
отправить менеджеру ADVANTA.sl.lic
и скопировать его в /opt/advanta-app/Advanta/
./opt/advanta-app/Advanta/
командой:dotnet Advanta.dll
Выполнить настройку службы ADVANTA:
1. Создать файл службы /etc/systemd/system/Advanta.service
. Пример файла службы Advanta.service
:
[Unit] Description=Advanta Service [Service] # will set the Current Working Directory (CWD). Worker service will have issues without this setting WorkingDirectory=/opt/advanta-app/Advanta # systemd will run this executable to start the service # if /usr/bin/dotnet doesn't work, use `which dotnet` to find correct dotnet executable path ExecStart=/usr/bin/dotnet /opt/advanta-app/Advanta/Advanta.dll # to query logs using journalctl, set a logical name here SyslogIdentifier=AdvantaService # Use your username to keep things simple. # If you pick a different user, make sure dotnet and all permissions are set correctly to run the app # To update permissions, use 'chown yourusername -R /srv/HelloWorld' to take ownership of the folder and files, # Use 'chmod +x /srv/HelloWorld/HelloWorld' to allow execution of the executable file User=root # ensure the service restarts after crashing Restart=always # amount of time to wait before restarting the service RestartSec=5 # This environment variable is necessary when dotnet isn't loaded for the pecified user. # To figure out this value, run 'env | grep DOTNET_ROOT' when dotnet has been loaded into your shell. Environment=DOTNET_ROOT=/usr/share/dotnet [Install] WantedBy=multi-user.target
systemctl daemon-reload
/usr/bin/dotnet
может отличаться в зависимости от дистрибутива.2. Добавить созданную службу в автозапуск:
systemctl enable advanta
После выполнения всех настроек и проверки корректного включения и работы приложения ADVANTA, необходимо выполнить:
dotnet /opt/advanta-app/Updates/Bin/Advanta.Migration/Advanta.Migration.dll /opt/advanta-app/Advanta/client.config
В кросс-платформенной версии данный сервис встроен в платформу. Установка отдельного фонового приложения для обеспечения работы таймера как для версии 3.хх – не требуется.