Установка CDF API

Для установки CDF API требуется скопировать его файлы в целевую папку. Для этого нужно выполнить команду:

sudo cp -r ~/Загрузки/TerraLink.xDEPro/CDF.REST /opt/TerraLink.xDEPro/CDF/CDF.REST

Настройка подключения к базе данных

Теперь нужно настроить подключение CDF API к базе данных. Для этого требуется скопировать демонстрационный конфигурационный файл с шаблоном подключения к PostgreSQL в конфигурационный файл, который будет использоваться CDF API:

sudo cp /opt/TerraLink.xDEPro/CDF/CDF.REST/appsettings.PostgreSql.Cdf.json.demo /opt/TerraLink.xDEPro/CDF/CDF.REST/appsettings.json

Далее нужно открыть конфигурационный файл в текстовом редакторе:

sudo nano /opt/TerraLink.xDEPro/CDF/CDF.REST/appsettings.json

найти поле ConnectionString и задать имя пользователя и пароль назначенной учетной записи:

{
    "ProviderName": "Npgsql",
    "ConnectionString": "User ID=xde;Password=1234aA;Host=localhost;Port=5432;Database=CDF_DB;MaxPoolSize=500"
}

Затем нужно сохранить файл (Ctrl+O) и выйти из редактора (Ctrl+X).

Примечание

Если планируется использовать PostgreSQL, установленный на другой машине, то в строке подключения нужно указать имя хоста (либо IP-адрес) и порт установленного экземпляра PostgreSQL.

Настройка доступа к CDF API через Nginx

Для настройки доступа к CDF API через Nginx требуется создать файл с конфигурацией сайта в текстовом редакторе:

sudo nano /etc/nginx/sites-available/xde-cdf-api

и скопировать в него содержимое:

server {
        # виртуальный сервер настраивается на порт по умолчанию для этого HTTP-сервиса + 100
        listen        6121;

        # в примере доступ к этому HTTP-сервису возможен только по IP-адресу
        server_name   192.168.11.128;
        location / {
                # порт по умолчанию для этого HTTP-сервиса - 6021
                proxy_pass         http://127.0.0.1:6021;
                proxy_http_version 1.1;
                proxy_set_header   Upgrade $http_upgrade;
                proxy_set_header   Connection keep-alive;
                proxy_set_header   Host $host:$server_port;
                proxy_cache_bypass $http_upgrade;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Proto $scheme;
        }
}

Затем нужно сохранить файл (Ctrl+O) и выйти из редактора (Ctrl+X).

Примечание

Для доступа по IP-адресу значение параметра server_name должно быть равно фактическому IP-адресу машины, на которую устанавливается CDF API. Здесь указан пример IP-адреса.

Теперь нужно создать ссылку на конфигурационный файл сайта в папке /etc/nginx/sites-enabled/ и перезапустить Nginx:

sudo ln -s /etc/nginx/sites-available/xde-cdf-api /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Предупреждение

Не используйте HTTP-подключение к Nginx в продуктивной среде. Это может привести к несанкционированному доступу к данным, в том числе к содержимому документов и паролям. Используйте HTTPS-подключение.

Автоматический запуск CDF API

Для автоматического запуска CDF API нужно в текстовом редакторе создать файл конфигурации сервиса:

sudo nano /etc/systemd/system/xde-cdf-api.service

и скопировать в него содержимое:

[Unit]
Description=TerraLink xDEPro CDF API

[Service]
WorkingDirectory=/opt/TerraLink.xDEPro/CDF/CDF.REST
# доступ извне будет возможен только через Nginx
ExecStart=/opt/dotnet/dotnet /opt/TerraLink.xDEPro/CDF/CDF.REST/TerraLink.xDEPro.Cdf.Rest.Host.dll --urls http://127.0.0.1:6021
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=xde-cdf-api
User=xdeadmin
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

Затем нужно сохранить файл (Ctrl+O) и выйти из редактора (Ctrl+X).

Теперь нужно включить и запустить сервис:

sudo systemctl enable xde-cdf-api.service
sudo systemctl start xde-cdf-api

Проверка доступности CDF API

Для проверки доступности CDF API нужно открыть браузер на машине, отличной от той, на которую производится установка. В адресной строке браузера указать настроенный адрес и порт:

http://192.168.11.128:6121

В ответ в браузере должна открыться страница Swagger UI.