| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| product:settings:system:install_linux [16.05.2025 12:27] – [Необходимые пакеты ОС] Белугин Александр | product:settings:system:install_linux [08.10.2025 07:36] (текущий) – [Выбор языка интерфейса системы] ekaterina.menkhuzina |
|---|
| </code> | </code> |
| |
| Подробную инструкцию по подготовке сервера базы данных можно найти на отдельной странице [[:product:settings:pssql|Настройка базы данных PostgreSQL]]. | <code sh> |
| | apt update |
| | apt install postgresql-14 |
| | </code> |
| | |
| | Далее необходимо выполнить первичную настройку СУБД PostgreSQL: |
| | |
| | 1. Выполнить вход в сессию служебного пользователя postgres: |
| | <code bash> |
| | su - postgres |
| | </code> |
| | |
| | Работая в сессии служебного пользователя postgres установить пароль администратора СУБД: |
| | <code bash> |
| | psql -c "alter user postgres with password '<указать_пароль>'" |
| | </code> |
| | * Вместо текста <пароль> указать устанавливаемый пароль; |
| | * Пароль заключается в одинарные кавычки; |
| | * Вся команда заключается в двойные кавычки. |
| | |
| | Завершить работу в сессии служебного пользователя postgres: |
| | <code bash> |
| | exit |
| | </code> |
| | |
| | 2. Наcтроить удаленный доступ к СУБД, для чего в конфигурационном файле /etc/postgresql/14/main/postgresql.conf скорректировать параметр listen_addresses: |
| | <code bash> |
| | listen_addresses = '<указать_ip>' |
| | </code> |
| | |
| | 3. В файле /etc/postgresql/14/main/pg_hba.conf добавить строку: |
| | <code> |
| | host all all <указать_подсеть> scram-sha-256 |
| | </code> |
| | |
| | 4. Добавить разрешающее правило файрволла для порта 5432: |
| | <code bash> |
| | ufw allow 5432/tcp |
| | </code> |
| | |
| | 5. Перезагрузить службу postgresql: |
| | <code bash> |
| | systemctl restart postgresql |
| | </code> |
| | |
| | Далее необходимо создать пустую БД: |
| | <code sql> |
| | 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; |
| | </code> |
| |
| После создания базы данных необходимо выполнить восстановление предоставленного в дистрибутиве дампа базы данных в новую созданную БД ''a2nta_db''. | После создания базы данных необходимо выполнить восстановление предоставленного в дистрибутиве дампа базы данных в новую созданную БД ''a2nta_db''. |
| <callout type="primary" icon="true">В данный момент по умолчанию дамп БД предоставляется только для MS SQL. Дамп БД для PostgreSQL предоставляется по запросу.</callout> | <callout type="primary" icon="true">В данный момент по умолчанию дамп БД предоставляется только для MS SQL. Дамп БД для PostgreSQL предоставляется по запросу.</callout> |
| |
| | Подробную инструкцию по подготовке сервера базы данных можно найти на отдельной странице [[:product:settings:pssql|Настройка базы данных PostgreSQL]]. |
| ===== Подготовка сервера приложения ===== | ===== Подготовка сервера приложения ===== |
| ==== Необходимые пакеты ОС ==== | ==== Необходимые пакеты ОС ==== |
| |
| Среды .Net ([[https://learn.microsoft.com/ru-ru/dotnet/core/install|варианты установки]]): | Среды .Net ([[https://learn.microsoft.com/ru-ru/dotnet/core/install|варианты установки]]): |
| <code sh>dotnet-sdk-6.0 dotnet-runtime-6.0 aspnetcore-runtime-6.0</code> | <code sh> |
| | 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 |
| | </code> |
| | |
| | <callout type="info" icon="true">Установка среды .Net также может быть выполнена из официальных репозиториев дистрибутива.</callout> |
| |
| Далее необходимо включить сетевые репозитории и выполнить установку пакетов (операции выполняются под учетной записью администратора сервера): | Далее необходимо включить сетевые репозитории и выполнить установку пакетов (операции выполняются под учетной записью администратора сервера): |
| 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 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> |
| |
| Опционально, можно установить базовые шрифты от MS (для использования в отчетах типа "Электронная таблица") и обновить кэш шрифтов сервера: | Опционально, можно установить базовые шрифты от MS (для использования в отчетах типа "Электронная таблица") и обновить кэш шрифтов сервера: |
| <code sh> | <code sh> |
| sudo apt install ttf-mscorefonts-installer | apt install ttf-mscorefonts-installer |
| fc-cache -f -v | fc-cache -f -v |
| </code> | </code> |
| Опционально. Для использования авторизации в системе ADVANTA через службу Active Directory необходимо установить библиотеку | Опционально. Для использования авторизации в системе ADVANTA через службу Active Directory необходимо установить библиотеку |
| <code sh> | <code sh> |
| sudo apt install libldap2-dev libldap-common libldap-2.4-2 | apt install libldap2-dev libldap-common libldap-2.4-2 |
| </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.хх -- не требуется. |