Установка и настройка фронтенда продукта

Вы можете выполнить установку фронтенда как на отдельном сервере, так и на сервере вместе с бэкендом продукта.

Фронтенд продукта включает два отдельных модуля:

  • osmax-webadmin — «Кабинет администратора»;

  • osmax-appshop — «Магазин приложений».

Каждый модуль устанавливается отдельно с помощью одноименного deb/rpm-пакета, при этом сохраняется единый принцип установки.

Установите пакеты osmax-webadmin и osmax-appshop.

Пример команд для установки пакетов из репозитория:

  • Astra Linux

  • РЕД ОС

sudo apt install osmax-webadmin=1.14.0
sudo apt install osmax-appshop=1.14.0
sudo dnf install osmax-webadmin-1.14.0
sudo dnf install osmax-appshop-1.14.0

Пример команд для установки пакетов из архива:

  • Astra Linux

  • РЕД ОС

sudo apt install ./osmax-webadmin_1.14.0_all.deb
sudo apt install ./osmax-appshop_1.14.0_all.deb
sudo dnf install ./osmax-webadmin-1.14.0*.rpm
sudo dnf install ./osmax-appshop-1.14.0*.rpm

Для проверки статуса установки выполните команду:

  • Astra Linux

  • РЕД ОС

apt list | grep "<имя модуля>"

Пример:

apt list | grep "osmax-webadmin"
apt list | grep "osmax-appshop"
sudo dnf list | grep "<имя модуля>"

Пример команд:

sudo dnf list | grep "osmax-webadmin"
sudo dnf list | grep "osmax-appshop"

В случае успешной установки система вернет ответ [установлен].

В случае неуспешной установки проверьте логи системы.

После установки пакетов файлы для веб-сервера будут помещены в каталоги:

  • /var/www/osmax-appshop;

  • /var/www/osmax-webadmin.

Для корректной работы модулей настройте веб-сервер. Для этого создайте необходимые конфигурационные файлы и переопределите в них значения параметров, описанных ниже.

В зависимости от используемого веб-сервера процедура настройки может незначительно отличаться, но конфигурационные файлы являются идентичными для каждого из модулей.

Конфигурация веб-сервера (на примере Nginx)

Чтобы задать рабочую конфигурацию, выполните действия:

  1. Создайте конфигурационные файлы, выполнив команды:

    sudo nano /etc/nginx/sites-available/osmax-webadmin.conf
    sudo nano /etc/nginx/sites-available/osmax-appshop.conf
    Пример файла osmax-webadmin.conf
    server {
        listen      80;
        listen      [::]:80;
        server_name staging-osmax.terra.inno.tech osmax-webadmin.lcm.terra.inno.tech osmax-webadmin;
        root        /var/www/osmax-webadmin;
        index       index.html;
        client_max_body_size 100M;
    
        error_log   /var/log/nginx/error.log debug;
        access_log  /var/log/nginx/access.log;
    
        location / {
            try_files $uri $uri/ /index.html;
        }
    
        location /api {
            set $backend_uri http://127.0.0.1:8081;
            rewrite ^\/api(\/.*)$ $1 break;
            proxy_pass $backend_uri;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    
        location /api/provisioner {
            set $backend_uri http://127.0.0.1:8082;
            rewrite ^\/api/provisioner(\/.*)$ $1 break;
            proxy_pass $backend_uri;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
    server {
        listen      443 ssl;
        listen      [::]:443 ssl;
        server_name staging-osmax.terra.inno.tech osmax-webadmin.lcm.terra.inno.tech osmax-webadmin;
        root        /var/www/osmax-webadmin;
        index       index.html;
        client_max_body_size 100M;
    
        ssl_certificate     /etc/certs/TERRA_INNO_TECH_CRT;
        ssl_certificate_key /etc/certs/TERRA_INNO_TECH_KEY;
    
        error_log  /var/log/nginx/error.log debug;
        access_log /var/log/nginx/access.log;
    
        location / {
            try_files $uri $uri/ /index.html;
        }
    
        location /api {
            set $backend_uri http://127.0.0.1:8081;
            rewrite ^/api(/.*)$ $1 break;
            proxy_pass $backend_uri;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    
        location /api/provisioner {
            set $backend_uri http://127.0.0.1:8082;
            rewrite ^\/api/provisioner(\/.*)$ $1 break;
            proxy_pass $backend_uri;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    Пример файла osmax-appshop.conf
    server {
        listen      80;
        listen      [::]:80;
        server_name staging-appshop.terra.inno.tech osmax-appshop.lcm.terra.inno.tech osmax-appshop osmax-appshop.local;
        root        /var/www/osmax-appshop;
        index       index.html;
        client_max_body_size 100M;
    
        error_log   /var/log/nginx/error.log debug;
        access_log  /var/log/nginx/access.log;
    
        location / {
            try_files $uri $uri/ /index.html;
        }
    
        location /api {
            set $backend_uri http://127.0.0.1:8081;
            rewrite ^\/api(\/.*)$ $1 break;
            proxy_pass $backend_uri;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
    server {
        listen      443 ssl;
        listen      [::]:443 ssl;
        server_name staging-appshop.terra.inno.tech osmax-appshop.lcm.terra.inno.tech osmax-appshop osmax-appshop.local;
        root        /var/www/osmax-appshop;
        index       index.html;
        client_max_body_size 100M;
    
        ssl_certificate     /etc/certs/TERRA_INNO_TECH_CRT;
        ssl_certificate_key /etc/certs/TERRA_INNO_TECH_KEY;
    
        error_log  /var/log/nginx/error.log debug;
        access_log /var/log/nginx/access.log;
    
        location / {
            try_files $uri $uri/ /index.html;
        }
    
        location /api {
            set $backend_uri http://127.0.0.1:8081;
            rewrite ^/api(/.*)$ $1 break;
            proxy_pass $backend_uri;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    Где:

    • listen — настраивает прослушивание портов на сервере;

    • server_name  — доменное имя, которое будет обслуживаться сервером;

    • root — указывает директорию, в которой находятся статические файлы, отображаемые при запросе корневой директории;

    • index — задает стандартный файл, который будет отображаться при запросе корневой директории;

    • client_max_body_size — задает максимальный размер тела запроса в мегабайтах, который сервер может принять от клиента;

    • ssl_certificate — указывает SSL-сертификат для обеспечения безопасного соединения;

    • ssl_certificate_key — определяет путь к файлу приватного ключа SSL-сертификата;

    • error_log — указывает файл логов для логирования ошибок;

    • access_log — указывает файл логов для логирования ошибок доступа;

    • location / — указывает веб-серверу на поиск запрашиваемых файлов в директории root; и если файл будет не найден, указывает на файл index.html;

    • location /api/provisioner — настраивает проксирование запросов к API-серверу модуля osmax-provisioner;

    • location /api —  настраивает проксирование запросов к API-серверу модуля osmax-core;

      При установке фронтенда на отдельный сервер, в параметре set $backend_uri укажите корректный адрес бэкенда.
      • proxy_pass — директива, перенаправляющая запросы к /api на указанный бэкенд;

      • proxy_set_header — директива, устанавливающая необходимую информацию в заголовках запроса.

  2. Для передачи данных по HTTP переопределите значения только в первом блоке server; для передачи по HTTPS — также переопределите значения во втором блоке.

    1. В первом блоке server в поле server_name укажите имя домена.

    2. В первом блоке server в поле location /api/provisioner задайте адрес обращения к бэкенду (osmax-provisioner).

    3. В первом блоке server в поле location /api задайте адрес обращения к бэкенду (osmax-core).

    4. (Опционально) во втором блоке server в поле server_name укажите имя домена.

    5. (Опционально) во втором блоке server в поле location /api/provisioner задайте адрес обращения к бэкенду (osmax-provisioner).

    6. (Опционально) во втором блоке server в поле location /api задайте адрес обращения к бэкенду (osmax-core).

    7. (Опционально) в поле ssl_certificate укажите SSL-сертификат для обеспечения безопасного соединения.

    8. (Опционально) в поле ssl_certificate_key задайте путь к файлу приватного ключа SSL-сертификата.

  3. Активируйте файлы в конфигурации веб-сервера, создав для них символическую ссылку в каталоге /etc/nginx/sites-enabled/:

    ln -s /etc/nginx/sites-available/osmax-webadmin.conf /etc/nginx/sites-enabled/
    ln -s /etc/nginx/sites-available/osmax-appshop.conf /etc/nginx/sites-enabled/
  4. Перезапустите веб-сервер, выполнив команду:

    systemctl restart nginx.service
  5. Убедитесь, что веб-сервер успешно работает, выполнив команду:

    systemctl status nginx.service

    В случае успешного запуска система вернет ответ:

    ● nginx.service - A high performance web server and a reverse proxy server
       Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
       Active: active (running) since Fri 2024-02-09 16:21:31 MSK; 4s ago
         Docs: man:nginx(8)
      Process: 23739 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
      Process: 23740 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
     Main PID: 23741 (nginx)
        Tasks: 3 (limit: 4653)
       Memory: 2.2M
       CGroup: /system.slice/nginx.service
               ├─23741 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
               ├─23742 nginx: worker process
               └─23743 nginx: worker process
    
    фев 09 16:21:31 lr-441246-cm-1 systemd[1]: Starting A high performance web server and a reverse proxy server...
    фев 09 16:21:31 lr-441246-cm-1 systemd[1]: Started A high performance web server and a reverse proxy server.

    В качестве дополнительной простой проверки вы можете выполнить запрос посредством утилиты curl на доменное имя, указанное в параметре server_name.

    Пример:

    curl -I domain-of-your-osmax-webadmin.vpn.company.com
    HTTP/1.1 200 OK
    Server: nginx/1.22.1
    Date: Fri, 09 Feb 2024 13:32:44 GMT
    Content-Type: text/html
    Content-Length: 551
    Last-Modified: Tue, 06 Feb 2024 12:20:20 GMT
    Connection: keep-alive
    ETag: "65c22404-227"
    Accept-Ranges: bytes