Инсталляция WEB сервера на Linux (Docker)

Руководство по установке сервисов (ОД, СМАРТ, НЕКСТ и т.п.) на ОС Linux

Все сервисы разворачиваются внутри контейнера (Docker & Podman): сначала устанавливается ПО Docker (или Podman) , затем контейнер (поставляется разработчиком "Бюджет-СМАРТ"), в контейнер устанавливается web сервис.

Установка WEB-Сервер-КС(Docker&Podman) версии 6.0.9

Назначение: WEB-Сервер-КС - платформа для развертывания, управления и удаления http сервера и прикладных сервисов, реализованных в виде контейнера для работы в средах с поддержкой контейнеризации Docker или Podman.

Цель использования: Минимизировать издержки, связанные с разворачиванием и настройкой http сервера и .NET Core приложений.

Требует для работы: Docker-CE (Docker, Inc. лицензия Apache 2.0) или Podman (лицензия Apache 2.0), платформа Linux/amd64.

Характеристики:

В поставляемом образе контейнера используются компоненты:

Порядок установки

  1. Получите root-права.
    Наберите команду и введите пароль от пользователя root.
    sudo su

  2. Проверьте статус Selinux, если он в режиме "enforcing" или "disabled", то переведите его в режим "permissive". Внимание, команды перезагрузят ОС при выполнении условий!

    if [ -f /etc/selinux/config ]; then if [ "$(echo $(getenforce))" = "Enforcing" ]; then sudo sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config && reboot;fi;fi;
    if [ -f /etc/selinux/config ]; then if [ "$(echo $(getenforce))" = "Disabled" ]; then sudo sed -i "s/SELINUX=disabled/SELINUX=permissive/" /etc/selinux/config && reboot;fi;fi;

2.1. Получите root-права снова, если предыдущая команда перезагрузила ОС.
sudo su

2.2. Определите имя пакетного менеджера. Имя пакетного менеджера (apt-get, apt или yum) определяется автоматом и записывается в переменную $kstmp.

if [ "$(which apt-get 2> /dev/null)" != "" ]; then export kstmp="apt-get";fi;
if [ "$(which yum 2> /dev/null)" != "" ]; then export kstmp="yum";fi;
if [ "$(which apt 2> /dev/null)" != "" ]; then export kstmp="apt";fi;

2.3. Установите дополнительные утилиты wget, nano, binutils (понадобится для определения версий dll) при их отсутствии. Пункт 2.2. должен быть выполнен.

#установите wget и nano при отсутствии
if [ -z $(which wget 2> /dev/null) ]; then $kstmp install -y wget;fi;
if [ -z $(which nano 2> /dev/null) ]; then $kstmp install -y nano;fi;
if [ -z $(which binutils 2> /dev/null) ]; then $kstmp install -y binutils;fi;

В Debian GNU/Linux 11, 12 (bullseye) проверьте наличие iptables командой: iptables --version. Если iptables не установлен, то для установки используйте команду apt install iptables

2.4. Обязательно настройте диапазон портов.

Выполните:

sysctl net.ipv4.ip_local_port_range="32768 54429"

Создайте файл /etc/sysctl.d/777-keysystems.conf:

nano /etc/sysctl.d/777-keysystems.conf

c содержимым net.ipv4.ip_local_port_range = 32768 54429

Проверьте диапазон портов TCP командой:

sysctl net.ipv4.ip_local_port_range

2.5. Обязательно настройте часовой пояс! Если забыли это сделать, то потом придется выполнить пересоздание контейнера (пункт 9.11 данной статьи).

Команды, которые понадобятся для настройки часового пояса и времени:

  1. Установите Docker (рекомендуется) или Podman.
    3.1. Установите Podman при наличии в репозиториях. На момент написания статьи Podman есть в репозиториях: ALT Server 10.1, ALT SP Server 10, RED OS 7.3.1, RED OS 7.3.2, RED OS 8, ALT Workstation K 10.0, Astra Linux Special Edition 1.7, Astra Linux Special Edition 1.8. Пункт 2.2. должен быть выполнен.

    $kstmp install -y podman
    $kstmp install -y runc
    systemctl start podman
    systemctl status podman

    3.2. Установите Docker.

    dnf install -y docker-ce
    systemctl enable docker
    systemctl start docker
    systemctl status docker

    Рекомендуется во всех ОС.

    wget -O /opt/dks-docker-ce-27.1.1.tar.gz "https://keysystems.ru/files/web/Linux/docker/dks-docker-ce-27.1.1.tar.gz" --no-check-certificate
    tar -C /opt/ -xvf /opt/dks-docker-ce-27.1.1.tar.gz
    bash /opt/dks-docker-ce-27.1.1/install.sh
  2. Скачайте и распакуйте образ dks-wsks-6.0.9.

    wget -O /opt/dks-wsks-6.0.9_d12.tar.gz https://keysystems.ru/files/web/Linux/wsks/6.0.9/dks-wsks-6.0.9_d12.tar.gz --no-check-certificate
    tar -C /opt/ -xvf /opt/dks-wsks-6.0.9_d12.tar.gz
  3. Установите контейнер с http-сервером или без http-сервера.
    Узнайте сначала установленные локали: locale -a | grep ru

Пример вывода (ru_RU.utf8):

ru_RU
ru_RU.koi8r
ru_RU.utf8
ru_UA
ru_UA.utf8

5.1. Установка контейнера с http-сервером Podman+Apache, или Podman+Nginx, или Podman+Angie, или Docker+Apache, или Docker+Nginx, или Docker+Angie. Порты web-сервиса 443, и prometheus 9091 укажите свои, а также укажите локаль ru_RU.utf8.

Рекомендуется Docker+Angie. Не устанавливайте вариант с Apache в ОС ROSA Enterprise Linux Server 7.3!

Podman+Apache:

/opt/dks-wsks-6.0.9/install.sh -ws "apache2" -p "443" -cs "podman" -pp "9091" -l ru_RU.utf8

Podman+Nginx:

/opt/dks-wsks-6.0.9/install.sh -ws "nginx" -p "443" -cs "podman" -pp "9091" -l ru_RU.utf8

Podman+Angie:

/opt/dks-wsks-6.0.9/install.sh -ws "angie" -p "443" -cs "podman" -pp "9091" -l ru_RU.utf8

Docker+Apache:

/opt/dks-wsks-6.0.9/install.sh -ws "apache2" -p "443" -cs "docker" -pp "9091" -l ru_RU.utf8

Docker+Nginx:

/opt/dks-wsks-6.0.9/install.sh -ws "nginx" -p "443" -cs "docker" -pp "9091" -l ru_RU.utf8

Docker+Angie:

/opt/dks-wsks-6.0.9/install.sh -ws "angie" -p "443" -cs "docker" -pp "9091" -l ru_RU.utf8

5.2. Установка контейнера без http-сервера. В данном примере 443 - это виртуальный порт (этот порт не публикуется). Порт 9091 - это порт prometheus (сбор метрик сервисов).

Docker:

/opt/dks-wsks-6.0.9/install.sh -ws "no_http" -p "443" -cs "docker" -pp 9091 -l ru_RU.utf8

Podman:

/opt/dks-wsks-6.0.9/install.sh -ws "no_http" -p "443" -cs "podman" -pp 9091 -l ru_RU.utf8