| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| product:settings:system:install_linux [07.07.2025 10:55] – [Необходимые пакеты ОС] ekaterina.menkhuzina | product:settings:system:install_linux [08.10.2025 07:36] (текущий) – [Выбор языка интерфейса системы] ekaterina.menkhuzina |
|---|
| apt install curl | apt install curl |
| apt install gnupg2 | apt install gnupg2 |
| apt install debian-archive-keyring ca-certificates lsb-release | apt install apt-transport-https |
| apt install apt-transport-https wget | |
| apt install nginx | apt install nginx |
| apt install dotnet-sdk-6.0 dotnet-runtime-6.0 aspnetcore-runtime-6.0 | apt install cifs-utils |
| | apt install libldap2-dev |
| |
| # если файлы с документами системы размещаются не на локальном диске сервера, а не сетевом | apt install libldap-common |
| apt install cifs-utils | |
| | apt install libldap-2.4-2 |
| | </code> |
| | |
| | В случае, если документы Системы лежат на SMB шаре, отредактировать файл ''/etc/fstab'', добавив в него строку подключения/монтирования: |
| | <code sh> |
| | //192.168.X.X/documents/a2nta /mnt/documents/a2nta cifs guest 0 0 |
| </code> | </code> |
| |
| </code> | </code> |
| |
| | <callout type="primary" icon="true">Приведен пример с анонимным подключением. Строка подключения может отличаться в зависимости от политик безопасности организации.</callout> |
| | |
| | Выполнить настройку https и локального сертификата: |
| | <code sh> |
| | dotnet dev-certs https |
| | dotnet dev-certs https --trust |
| | </code> |
| \\ | \\ |
| \\ | \\ |
| 1. Загрузить и распаковать файлы приложения ADVANTA на сервер. | 1. Загрузить и распаковать файлы приложения ADVANTA на сервер. |
| |
| 2. Создать файл конфигурации приложения (образцы находятся по пути: ''<версия приложения>/SL/config/''). Пример созданного файла конфигурации ''client.config'': | 2. Создать файл конфигурации приложения (образцы находятся по пути: ''<версия приложения>/SL/config/''). Созданный файл конфигурации разместить в основном каталоге приложения: ''/opt/advanta-app/Advanta/client.config''. Пример созданного файла конфигурации ''client.config'': |
| |
| <code xml> | <code xml> |
| <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> | <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" /> |
| <!--<section name="ldapService" type="Config.LDAPConfigurationSection, smcorelib"/> | <!--<section name="ldapService" type="Config.LDAPConfigurationSection, smcorelib"/> |
| <section name="adDomains" type="Config.ADDomainsConfiguration, smcorelib"/>--> | <section name="adDomains" type="Config.ADDomainsConfiguration, smcorelib"/> |
| | <section name="openIdConnect" type="Config.OpenIdConnectConfigurationSection, smcorelib"/> |
| | <section name="hashiCorpVault" type="Config.HashiCorpVaultConfigurationSection, smcorelib"/>--> |
| </configSections> | </configSections> |
| </code> | </code> |
| <code xml> | <code xml> |
| <connectionStrings> | <connectionStrings> |
| <add name="db" providerName="Npgsql" connectionString="User ID=postgres;Password=P@ssw0rd;Host=SERV-07;Port=5432;Database=Gazprom;MaxPoolSize=1024;Timeout=60;Max Auto Prepare=100;Auto Prepare Min Usages=3;" /> | <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=SERV-07;Port=5432;Database=Gazprom;MaxPoolSize=1024;Timeout=60;Max Auto Prepare=100;Auto Prepare Min Usages=3;" /> | <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=SERV-07;Port=5432;Database=Gazprom;MaxPoolSize=1024;Timeout=60;Max Auto Prepare=100;Auto Prepare Min Usages=3;" /> | <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> | </connectionStrings> |
| </code> | </code> |
| <code xml> | <code xml> |
| <appSettings> | <appSettings> |
| <add key="WebPath" value="https://domain:5000" /> | <add key="WebPath" value="https://192.168.16.250:5000" /> |
| <add key="TimeZone" value="+5" /> | <add key="TimeZone" value="+5" /> |
| <add key="autologin" value="false" /> | <add key="autologin" value="false" /> |
| <add key="FilesRootPath" value="/SL_Files" /> | <add key="FilesRootPath" value="C:\SL_Files" /> |
| <add key="BusTransportType" value="PostgreSql" /> | <add key="BusTransportType" value="PostgreSql" /> |
| <add key="NegotiationByEmailTimeout" value="120" /> | <add key="NegotiationByEmailTimeout" value="120" /> |
| <!-- Настройки списка внешних URL при переадресации --> | <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="AllowedUrlRedirects" value="https://www.wikipedia.org;https://www.deepl.com/translator" /> |
| --> | --> |
| <!-- Настройки Системы для архивации файлов --> | |
| <!-- | <!-- |
| <add key="DocumentsArchiveLifeTimeHours" value="168" /> | <add key="DocumentsArchiveLifeTimeHours" value="168" /> |
| <add key="MaxTotalFileSize" value="2097152000" /> | <add key="MaxTotalFileSize" value="2097152000" /> |
| <add key="MaxFileCount" value="500" /> | <add key="MaxFileCount" value="500" /> |
| <add key="MaxDocumentsArchivingActionCount" value="3" /> | <add key="MaxDocumentsArchivingActionCount" value="3" /> |
| <add key="MaxFullPathLength" value="150" /> | <add key="MaxFullPathLength" value="150" /> |
| <add key="MinFolderNameLength" value="3" /> | <add key="MinFolderNameLength" value="3" /> |
| <add key="MinRootFolderNameLength" value="30" /> | <add key="MinRootFolderNameLength" value="30" /> |
| | |
| <add key="DocumentsArchivingService" value="Remote" /> | <add key="DocumentsArchivingService" value="Remote" /> |
| --> | --> |
| <!-- Параметры при выборе локального сервиса архивации файлов --> | |
| <!-- | <!-- |
| <add key="DocumentsArchivingService" value="Local" /> | <add key="DocumentsArchivingService" value="Local" /> |
| <add key="PathToTemporaryArchiveFlat" value="C:\Temp"/> | <add key="PathToTemporaryArchiveFlat" value="C:\Temp"/> |
| --> | --> |
| <add key="EnableTestODataEndPoint" value="1" /> | |
| <add key="EnableSwagger" value="1" /> | |
| <add key="ApplicationId" value="eebe4dc586b3" /> | |
| </appSettings> | </appSettings> |
| </code> | </code> |
| <add name="DOMAIN_NAME" login="login" password="password" ldappath="LDAP://DC=domain_name,DC=local"/> | <add name="DOMAIN_NAME" login="login" password="password" ldappath="LDAP://DC=domain_name,DC=local"/> |
| </domains> | </domains> |
| </adDomains>--> | </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"> | <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> |
| <container> | <container> |
| <!-- Search index on disk | |
| <register type="System.IO.DirectoryInfo, mscorlib" mapTo="System.IO.DirectoryInfo, mscorlib" name="searchIndexPath"> | <register type="System.IO.DirectoryInfo, mscorlib" mapTo="System.IO.DirectoryInfo, mscorlib" name="searchIndexPath"> |
| <constructor> | <constructor> |
| <param name="path" value="d:\LuceneIndex" /> | <param name="path" value="/var/advanta-app/search" /> |
| </constructor> | </constructor> |
| </register> | </register> |
| <register type="Lucene.Net.Store.Directory, Lucene.Net" mapTo="Lucene.Net.Store.SimpleFSDirectory, Lucene.Net"> | <register type="Lucene.Net.Store.Directory, Lucene.Net" mapTo="Lucene.Net.Store.SimpleFSDirectory, Lucene.Net"> |
| <constructor> | <constructor> |
| <param name="path" dependencyName="searchIndexPath" /> | <param name="path" dependencyName="searchIndexPath" /> |
| </constructor> | </constructor> |
| </register>--> | </register> |
| <!--<register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> | <register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> |
| <constructor> | <constructor> |
| <param name="documentsFolder" value="[DocumentsFolder]" type="string"></param> | <param name="documentsFolder" value="/var/advanta-app/documents" type="string"></param> |
| </constructor> | </constructor> |
| </register>--> | </register> |
| <register type="SmartSuite.Data.Persistence.StorageProviderFactory, SmartSuite.Data" mapTo="SmartSuite.PostgreSQL.PgStorageProviderFactory, SL.PostgreSQL" /> | <register type="SmartSuite.Data.Persistence.StorageProviderFactory, SmartSuite.Data" mapTo="SmartSuite.PostgreSQL.PgStorageProviderFactory, SL.PostgreSQL" /> |
| <register type="SL.App.ServerObjects.IServerObjectsProvider, SL.App" mapTo="SL.App.ServerObjects.PostgreSQL.ServerObjectsProvider, 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.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="P2M.Cubes.Data.IPivotDataManager, smcorelib" mapTo="SL.PostgreSQL.Data.PivotDataManager, SL.PostgreSQL" /> |
| <!-- Вариант, когда нужно хранить файлы в Базе данных (в виде двоичных полей)--> | <!--<register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.SqlFileStorageProvider, smcorelib"> |
| <register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.SqlFileStorageProvider, smcorelib"> | |
| <constructor> | <constructor> |
| <param name="connectionStringName" value="db" type="string"> | <param name="connectionStringName" value="db" type="string"> |
| </param> | </param> |
| </constructor> | </constructor> |
| </register> | </register>--> |
| <!-- | |
| Вариант, когда не нужно файлы хранить в БД, а нужно складывать в каталог на жестком диске (при этом в БД будут храниться только ссылки на них) | <!--<register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> |
| <register type="SL.Storage.IFileStorageProvider, smcorelib" mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> | |
| <constructor> | <constructor> |
| <param name="documentsFolder" type="string" value="C:\LocalFileStorage" /> | <param name="documentsFolder" type="string" value="/var/advanta-app/documents" /> |
| </constructor> | </constructor> |
| </register> | </register>--> |
| <register type="Advanta.Files.IFileStorageProvider, Advanta.Infrastructure" | <register type="Advanta.Files.IFileStorageProvider, Advanta.Infrastructure" |
| mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> | mapTo="SL.Storage.LocalFileStorageProvider, smcorelib"> |
| <constructor> | <constructor> |
| <param name="documentsFolder" type="string" value="C:\LocalFileStorage" /> | <param name="documentsFolder" type="string" value="/var/advanta-app/documents" /> |
| </constructor> | </constructor> |
| </register> | </register> |
| --> | |
| </container> | </container> |
| </unity> | </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> | </configuration> |
| </code> | </code> |
| "Logging": { | "Logging": { |
| "LogLevel": { | "LogLevel": { |
| "Default": "Information", | "Default": "Debug", |
| "Microsoft.AspNetCore": "Warning" | "Microsoft.AspNetCore": "Warning" |
| } | } |
| }, | }, |
| | "ASPNETCORE_ENVIRONMENT": "Development", |
| |
| "Kestrel": { | "Kestrel": { |
| "Endpoints": { | "Endpoints": { |
| "Http": { | "Http": { |
| "Url": "https://192.168.1.62:5000" | "Url": "https://192.168.16.250:5000" |
| }, | }, |
| } | } |
| |
| "AllowedHosts": "*", | "AllowedHosts": "*", |
| "appSettings": { | "appSettings": { |
| "AppName": "streamline", | "AppName": "streamline", |
| "FirstUserMail": "support@advanta-group.ru", | "FirstUserMail": "support@advanta-group.ru", |
| "support": "bug@advanta-group.ru", | "support": "bug@advanta-group.ru", |
| "statistics": "statistics@advanta-group.ru", | "statistics": "statistics@advanta-group.ru", |
| "ConfigurationSettingsFile": "_Resources\\Config\\ConfigFiles\\ConfigurationSettings.xml", | "ConfigurationSettingsFile": "_Resources\\Config\\ConfigFiles\\ConfigurationSettings.xml", |
| "Security_PagesConfig": "_Resources\\Config\\ConfigFiles\\SecuritySettings.xml", | "Security_PagesConfig": "_Resources\\Config\\ConfigFiles\\SecuritySettings.xml", |
| "PortletsConfig_File": "_Resources\\Config\\PortletEngine\\EngineConfig.xml", | "PortletsConfig_File": "_Resources\\Config\\PortletEngine\\EngineConfig.xml", |
| "Projects_StatusFile": "_Resources\\Config\\P2M\\Projects\\ProjectStatuses.xml", | "Projects_StatusFile": "_Resources\\Config\\P2M\\Projects\\ProjectStatuses.xml", |
| "Projects_PriorityFile": "_Resources\\Config\\P2M\\Projects\\ProjectPriority.xml", | "Projects_PriorityFile": "_Resources\\Config\\P2M\\Projects\\ProjectPriority.xml", |
| "errorMode": "debug", | "errorMode": "debug", |
| "ValidationSettings:UnobtrusiveValidationMode": "None" | "ValidationSettings:UnobtrusiveValidationMode": "None", |
| } | "SoapServicesAspNetCompatibility" : "false" |
| | }, |
| | "FormOptions": { |
| | "ValueCountLimit": "2048" |
| | } |
| } | } |
| </code> | </code> |
| |
| <callout type="info" icon="true"> | <callout type="info" icon="true"> |
| На данный момент доступно 4 языка на выбор: | На данный момент доступно два языка на выбор: |
| * русский (по-умолчанию); | * русский (по-умолчанию); |
| * английский; | * английский. |
| * чешский; | |
| * украинский. | |
| </callout> | </callout> |
| |
| - Найти строку:<code sql> | - Найти строку:<code sql> |
| <globalization culture="ru-RU" uiCulture="ru-Ru" fileEncoding="windows-1251" requestEncoding="utf-8" responseEncoding="utf-8" /></code> | <globalization culture="ru-RU" uiCulture="ru-Ru" fileEncoding="windows-1251" requestEncoding="utf-8" responseEncoding="utf-8" /></code> |
| - Изменить в ней значение параметра ''uiCulture'' на: | - Изменить в ней значение параметра ''uiCulture'' на ''en'' , если нужен английский язык интерфейса. |
| * ''uk-UA'' , если нужен украинский язык интерфейса. | |
| * ''cs-CZ'' , если нужен чешский язык интерфейса. | |
| * ''en'' , если нужен английский язык интерфейса. | |
| |
| <callout type="primary" icon="true">Для возврата к русскому языку нужно установить значение ''ru-Ru''.</callout> | <callout type="primary" icon="true">Для возврата к русскому языку нужно установить значение ''ru-Ru''.</callout> |
| |
| ==== Получение лицензии ==== | ==== Получение лицензии ==== |
| Необходимо получить у менеджера ADVANTA файл ''sl.lic'' и скопировать его в ''<версия приложения>/Advanta/''. | - Необходимо получить у менеджера ADVANTA архив GetLicenseInfo и распаковать его на сервере. |
| | - Сгенерировать файл запроса лицензии:<code sh>dotnet Advanta.GetLicenseInfo.dll</code> |
| | - Сгенерированный файл ''_sl.dat'' отправить менеджеру ADVANTA. |
| | - Получить от менеджера ADVANTA файл лицензии ''sl.lic'' и скопировать его в /''opt/advanta-app/Advanta/''. |
| | - Запускать приложение в папке ''/opt/advanta-app/Advanta/'' командой:<code sh>dotnet Advanta.dll</code> |
| |
| (в разработке) | ==== Убедиться в работоспособности приложения ==== |
| | Выполнить настройку службы ADVANTA: |
| | |
| | 1. Создать файл службы ''/etc/systemd/system/Advanta.service''. Пример файла службы ''Advanta.service'': |
| | <code> |
| | [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 |
| | </code> |
| | |
| | <code bash> |
| | systemctl daemon-reload |
| | </code> |
| | |
| | <callout type="info" icon="true">Путь к исполняемому файлу ''/usr/bin/dotnet'' может отличаться в зависимости от дистрибутива.</callout> |
| | |
| | 2. Добавить созданную службу в автозапуск: |
| | <code bash> |
| | systemctl enable advanta |
| | </code> |
| | |
| | После выполнения всех настроек и проверки корректного включения и работы приложения ADVANTA, необходимо выполнить: |
| | <code sh> |
| | dotnet /opt/advanta-app/Updates/Bin/Advanta.Migration/Advanta.Migration.dll /opt/advanta-app/Advanta/client.config |
| | </code> |
| ==== Сервис для обеспечения работы таймера ==== | ==== Сервис для обеспечения работы таймера ==== |
| В кросс-платформенной версии данный сервис встроен в платформу. Установка отдельного фонового приложения для обеспечения работы таймера как для версии 3.хх -- не требуется. | В кросс-платформенной версии данный сервис встроен в платформу. Установка отдельного фонового приложения для обеспечения работы таймера как для версии 3.хх -- не требуется. |