Показать страницуИстория страницыСсылки сюдаЭкспорт в PDFНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Установка и настройка системы под Linux ====== ''Инструкция для размещения ADVANTA на сервере с ОС Linux и СУБД PostgreSQL'' Перед началом настройки системы ознакомьтесь с актуальными требованиями к программному обеспечению. Описание установки системы основывается на том, что уже выполнены требования к программному обеспечению сервера базы данных и сервера приложения, а также имеется в наличии инсталляционный диск системы. Если систему планируется разносить на два сервера, то рекомендуем сначала выполнить настройку сервера базы данных, а затем сервера приложения. <callout type="primary" icon="true">Данная инструкция предполагает установку на OC [[https://astralinux.ru/os/server-astra/|Astra Linux]].</callout> ===== Подготовка сервера базы данных ===== Если у вас для системы ADVANTA используется БД MS SQL, развернутая на отдельном сервере под управлением ОС Windows, то инструкцию по подготовке сервера базы данных можно найти [[:product:settings:system:install#подготовка_сервера_базы_данных|здесь]]. Если же у вас для системы ADVANTA база данных будет развертываться под ОС Linux, то используется БД PostgreSQL. Перед началом настройки БД PostgreSQL необходимо включить сетевые репозитории и выполнить установку пакетов: <code sh> 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 </code> <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''. <callout type="primary" icon="true">В данный момент по умолчанию дамп БД предоставляется только для MS SQL. Дамп БД для PostgreSQL предоставляется по запросу.</callout> Подробную инструкцию по подготовке сервера базы данных можно найти на отдельной странице [[:product:settings:pssql|Настройка базы данных PostgreSQL]]. ===== Подготовка сервера приложения ===== ==== Необходимые пакеты ОС ==== Для работы сервера приложений ADVANTA необходимо установить в операционной системе следующие стандартные пакеты (из репозитория ОС): <code sh>curl gnupg2 ca-certificates lsb-release debian-archive-keyring wget apt-transport-https</code> Веб-сервер/Прокси (последняя стабильная версия из репозитория ОС или от [[https://nginx.org/ru/download.html|вендора]]): <code sh>nginx</code> Среды .Net ([[https://learn.microsoft.com/ru-ru/dotnet/core/install|варианты установки]]): <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> Далее необходимо включить сетевые репозитории и выполнить установку пакетов (операции выполняются под учетной записью администратора сервера): <code sh> 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 </code> <code sh> 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 </code> В случае, если документы Системы лежат на SMB шаре, отредактировать файл ''/etc/fstab'', добавив в него строку подключения/монтирования: <code sh> //192.168.X.X/documents/a2nta /mnt/documents/a2nta cifs guest 0 0 </code> Опционально, можно установить базовые шрифты от MS (для использования в отчетах типа "Электронная таблица") и обновить кэш шрифтов сервера: <code sh> apt install ttf-mscorefonts-installer fc-cache -f -v </code> Опционально. Для использования авторизации в системе ADVANTA через службу Active Directory необходимо установить библиотеку <code sh> apt install libldap2-dev libldap-common libldap-2.4-2 </code> <callout type="primary" icon="true">Приведен пример с анонимным подключением. Строка подключения может отличаться в зависимости от политик безопасности организации.</callout> Выполнить настройку https и локального сертификата: <code sh> dotnet dev-certs https dotnet dev-certs https --trust </code> \\ \\ ==== Настройка системных файлов ==== 1. Загрузить и распаковать файлы приложения ADVANTA на сервер. 2. Создать файл конфигурации приложения (образцы находятся по пути: ''<версия приложения>/SL/config/''). Созданный файл конфигурации разместить в основном каталоге приложения: ''/opt/advanta-app/Advanta/client.config''. Пример созданного файла конфигурации ''client.config'': <code xml> <?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> </code> Теги: <code xml> <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> </code> Значения: * ''connectionString'' – строка подключения к базе данных; * ''User'' – пользователь для базы данных; * ''Password'' – пароль пользователя. Теги: <code xml> <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> </code> Параметр ''value'' – это ссылка, которая отображается в уведомлениях из системы, рассылаемых на почтовые ящики. <callout type="warning" icon="true" title="Внимание!">Для системы ADVANTA необходимо настроить маршрутизацию таким образом, чтобы сервер мог подключиться к самому себе по внешнему адресу. Пример: внешний адрес сервера ''192.168.1.62:5000'', сервер IIS должен корректно заходить по этому адресу. В файле конфигурации системы ADVANTA ''client.config'' необходимо указать корректный путь в параметре ''WebPath''. Для приведенного выше примера: <code xml><add key="WebPath" value="https://192.168.1.62:5000" /></code> Для этого нужно в настройках Bindings (привязки, в настройках IIS) сайта указать тот внешний адрес системы, но без указания протокола и названия приложения.</callout> Теги: <code xml> <!--<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> </code> 3. В файле ''<версия приложения>/Advanta/appsettings.json'' необходимо указать URL, по которому будет открываться приложение. Пример листинга конфигурационного файла ''appsettings.json'': <code> { "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" } } </code> <callout type="primary" icon="true">Рекомендуется при разворачивании Системы использовать протокол ''https'', вместо ''http'', т.к. протокол ''http'' считается устаревшим. Раздел Системы с диаграммой Ганта доступен только при работе Системы через ''https''. Информация о переводе Системы с протокола ''http'' на использование протокола ''https'' находится на отдельной [[:product:settings:system:protocol_change|странице]].</callout> ==== Выбор языка интерфейса системы ==== <callout type="info" icon="true"> На данный момент доступно два языка на выбор: * русский (по-умолчанию); * английский. </callout> Для выбора языка, отличного от русского, нужно: - Открыть на редактирование файл ''globalization.config''. - Найти строку:<code sql> <globalization culture="ru-RU" uiCulture="ru-Ru" fileEncoding="windows-1251" requestEncoding="utf-8" responseEncoding="utf-8" /></code> - Изменить в ней значение параметра ''uiCulture'' на ''en'' , если нужен английский язык интерфейса. <callout type="primary" icon="true">Для возврата к русскому языку нужно установить значение ''ru-Ru''.</callout> ==== Получение лицензии ==== - Необходимо получить у менеджера 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.хх -- не требуется.