Установка и настройка PIX Master на сервере Linux
*Мастер не работает на дистрибутивах Ubuntu 22 и Centos (версии мастера до 15 работают).

Настройки сервера, необходимые перед установкой PIX Master
Установка модулей .Net Core на Linux
Для установки необходимых модулей используется терминал (можно найти в поисковой строке по слову cmd).
Чтобы выполнить последующие команды, нужен доступ от пользователя root. Для этого в командной строке необходимо выполнить инструкцию "su root" и ввести пароль пользователя root, указанный при установке операционной системы.
Для установки модулей .Net Core в командной строке необходимо выполнить следующие операции:
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.0
В случае, если при установке пакетов возникает ошибка, нужно выполнить инструкции, представленные в подразделах дистрибутивов Linux на сайте.
Установка и конфигурация сервера Apache
sudo apt-get install apache2
Создаем сертификат:
cd /etc/apache2
mkdir ssl
cd ssl
sudo openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj "/C=RU/ST=Msk/L=Msk/O=YourCompany/OU=IT Department/CN=master.yourcompany.local/CN=master"
sudo a2enmod proxy_http proxy_html proxy_wstunnel ssl
sudo a2enmod rewrite
sudo systemctl restart apache2
После этого нужно создать конфигурационный файл для установки прокси на Apache. Для этого нужно выполнить команду:
sudo nano /etc/apache2/conf-enabled/netcore.conf
В появившийся файл нужно скопировать следующий текст:
<VirtualHost *:443>
ServerName www.CurrentDomain.com
DocumentRoot /var/netcore
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
#SSLCertificateChainFile ssl/cert.ca-bundle
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P]
ErrorLog /var/log/apache2/netcore-error.log
CustomLog /var/log/apache2/netcore-access.log common
</VirtualHost>
После этого нужно перезапустить сервер Apache, для чего в командной строке нужно прописать:
sudo apachectl configtest
Должны получить Syntax Ok. Перезапускаем сервис:
sudo service apache2 restart
Проверяем статус:
sudo service apache2 status
В случае успеха получаем статус Active: active (running).
Если Stopped, Failed - необходимо перепроверить конфигурацию.
Правильность установки apache можно проверить, перейдя на http://localhost. Должна появиться приветственная страница apache.
Установка Docker + Postgres под Linux
Установка Docker:
sudo apt update
sudo apt install docker.io
Далее можно работать с Docker в соответствии с руководством, запуская команды в режиме суперпользователя (sudo).

Запуск Docker:
sudo systemctl start docker
sudo systemctl enable docker
Загрузка контейнера Postgres:
sudo docker pull postgres
Для автоматического запуска контейнера Postgres используйте следующую команду:
sudo docker run -d --restart unless-stopped --name pix-postgres -e POSTGRES_PASSWORD=123456789 -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres
Настройка развернутого приложения
Для работы приложения необходимо настроить путь до его базы данных в конфигурации, а также указать папку для хранения криптографических ключей.

Настройка конфигурации приложения
Зайдите в папку, куда было установлено приложение, и откройте файл appsettings.json.
Он должен иметь примерно следующее содержание:
{
"Provider": "PostgreSQL",
"CryptographyKeysFolder": "Keys",
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=master_test;Trusted_Connection=True;MultipleActiveResultSets=true;Persist Security Info=False;",
"PostgreSqlConnection": "User ID=postgres;Password=123456789;Host=localhost;Port=5432;Database=master_test;Pooling=true;"
},
"Logging": {
"LogLevel": {
"Default": "Warning",
"Hangfire": "Information"
}
},
"AllowedHosts": "*",
"PasswordValidationOptions": {
"RequiredLength": "8",
"RequireNonAlphanumeric": "true",
"RequireLowercase": "true",
"RequireUppercase": "true",
"RequireDigit": "true"
},
"UseSwagger": "false"
}
В ключе Provider указывается СУБД (система управления базами данных), которая будет использоваться: MSSQL или PostgreSQL.

В разделе ConnectionStrings для ключа PostgreSqlConnection нужно прописать строку подключения к базе данных.

ОБЯЗАТЕЛЬНО! В ключе CryptographyKeysFolder нужно прописать путь до папки, где будут храниться ключи криптографии. Также в некоторых дистрибутивах нужно дать доступ на запись. Самый простой способ:
sudo chmod 777 ./{Название папки с ключами}
#При указании названия папки "{}" не ставятся.
Этот пункт специфичен только для Linux.
Конфигурация и запуск сервиса
Перенести папку с опубликованным проектом можно с помощью команды:
sudo cp -a <folder> <target folder>
<folder> - путь до переносимой папки, <target folder> - путь, где будет развернуто приложение.
В примере ниже будет использоваться путь /var/netcore/ в качестве рабочей папки приложения.

Пример:
sudo cp -a /home/user/pix-master/ /var/netcore
Файл сервиса можно создать с помощью следующей команды:
sudo nano /etc/systemd/system/Master.service
# Master.service – название сервиса для проекта.
В этот файл нужно скопировать следующие данные:
[Unit]
Description=ASP .NET Web Application
[Service]
#Указываем путь к директории с установленным Мастером
WorkingDirectory=/var/netcore
ExecStart=/usr/bin/dotnet /var/netcore/Master.dll
Restart=always
RestartSec=10
SyslogIdentifier=netcore-demo
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
После этого нужно будет запустить сервис с помощью следующих команд:
sudo systemctl enable Master.service
sudo systemctl start Master.service
Теперь можно получить доступ к приложению через порт 5000.
Проверяем статус:
sudo service apache2 status
В случае успеха получаем статус Active: active (running).
Для получения данных о работе сервиса можно выполнить следующую команду:
sudo journalctl -fu Master.service
Дефолтные данные для входа в систему:
Логин: admin
Пароль: Admin1Default@