Инсталляция 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.
Характеристики:
- Позволяет устанавливать один контейнер c http сервером Apache, Angie или Nginx по указанному порту, внутри которого возможна установка нескольких .NET Core приложений идентифицируемых назначенным виртуальным каталогом. Диапазон используемых портов: 5444-5493 и дополнительно 443 порт (по умолчанию).
- Или позволяет установить один контейнер без установки какого-либо http сервера, внутри которого возможна установка нескольких .NET Core приложений идентифицируемых только портами приложений.
В поставляемом образе контейнера используются компоненты:
- http сервер Apache (лицензия Apache 2.0)
- http сервер Nginx (лицензия BSD из 2 пунктов)
- http сервер Angie (лицензия BSD из 2 пунктов)
Примечание: Компонент устанавливается только для конкретного указанного http сервера. Если http сервер не указан (no_http), то компоненты не устанавливаются. - Runtime библиотека .NET Core 6.0.9 (лицензия MIT)
- prometheus (лицензия Apache 2.0)
Порядок установки
-
Получите root-права.
Наберите команду и введите пароль от пользователя root.
sudo su
-
Проверьте статус 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 данной статьи).
Команды, которые понадобятся для настройки часового пояса и времени:
- Узнать текущий часовой пояс timedatectl status | grep "zone"
- Получить список часовых поясов timedatectl list-timezones
- Установить часовой пояс (в примере MSK +3) timedatectl set-timezone Europe/Moscow
- Установить время timedatectl set-time 'YYYY-MM-DD HH:MM:SS'
-
Установите 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
-
Скачайте и распакуйте образ 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
-
Установите контейнер с 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