Развертывание «Бюджет-NEXT»v. 24.2 через терминал ОС Linux
Для соединения с Linux-сервером используйте:
- терминал в случае наличия графического интерфейса Linux-системы;
- клиент PuTTY для удаленного соединения с Linux-машиной. Для соединения укажите поля как показано ниже на рисунке и нажмите «Соединиться».
Перечень операционных систем, на которых было проведено тестирование развертывания WEB-Сервер-КС:
ОС, вошедшие в РРПО: 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, ROSA Enterprise Linux Server 7.3, AlterOS 7.5;
Остальные ОС: ALT Server 10.1, ALT SP Server 10, Debian GNU/Linux 11, Debian GNU/Linux 12.
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;
3. Получите root-права повторно
Получите root-права повторно, если предыдущая команда перезагрузила ОС
sudo su
4. Определите имя пакетного менеджера
Имя пакетного менеджера (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;
4.1. Установите дополнительные утилиты «wget», «nano» при их отсутствии
Пункт 4 должен быть выполнен.
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;
Проверьте наличие «iptables»
В Debian GNU/Linux 11, 12 (bullseye) проверьте наличие iptables командой: iptables --version
.
Если iptables не установлен, то для установки используйте команду apt install iptables
.
5. Настройте диапазон TCP портов
Для исключения ошибки:
Unable to start Kestrel. Failed to bind to address http://0.0.0.0:54430: address already in use
5.1. Выполните команду:
sysctl net.ipv4.ip_local_port_range="32768 54429"
5.2. Создайте файл /etc/sysctl.d/777-keysystems.conf:
nano /etc/sysctl.d/777-keysystems.conf
С содержимым:
net.ipv4.ip_local_port_range = 32768 54429
5.3. Проверьте диапазон TCP портов командой:
sysctl net.ipv4.ip_local_port_range
6. Настройте часовой пояс
Если не выполнить данный пункт, в дальнейшем придется выполнить пересоздание контейнера.
Узнайте текущий часовой пояс
timedatectl status | grep "zone"
Получите список часовых поясов
timedatectl list-timezones
Установите часовой пояс MSK +3 (пример)
timedatectl set-timezone Europe/Moscow
Установите время
timedatectl set-time 'YYYY-MM-DD HH:MM:SS'
7. Установите «Podman» или «Docker»
Рекомендуется установка Docker.
7.1. Установите «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
7.2. Установите «Podman» при наличии в репозиториях
На момент написания статьи Podman есть в репозиториях:
- ALT Server 10.1,
- RED OS MUROM (7.3.1),
- RED OS MUROM (7.3.2),
- ALT Workstation K 10.0,
- Astra Linux Special Edition x.7.
Пункт 4 должен быть выполнен.
$kstmp install -y podman
$kstmp install -y runc
systemctl start podman
systemctl status podman
8. Скачайте и распакуйте образ «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
9. Установите контейнер с http-сервером или без http-сервера.
Узнайте сначала установленные локали:
locale -a | grep ru
Пример вывода ru_RU.utf8
:
ru_RU
ru_RU.koi8r
ru_RU.utf8
ru_UA
ru_UA.utf8
9.1. Установка контейнера с http-сервером
Установите одно из следующих сочетаний:
- Docker+Nginx Рекомендуется к установке
- Docker+Angie В РРПО
- Docker+Apache
- Podman+Apache
- Podman+Nginx
- Podman+Angie
Порты web-сервиса 443, и prometheus 9093 укажите свои, а также укажите локаль ru_RU.utf8.
В случае, если порт web-сервиса использовался отличный от 443, то наименование установленного контейнера будет иметь вид wsks-6.0.9_54хх
, поэтому нужно быть внимательнее, так как дальнейшая инструкция установки описана для контейнера с портом 443 (wsks-6.0.9_443).
Не устанавливайте вариант с Apache в ОС ROSA Enterprise Linux Server 7.3!
Docker
/opt/dks-wsks-6.0.9/install.sh -ws "nginx" -p "443" -cs "docker" -pp "9093" -l ru_RU.utf8
/opt/dks-wsks-6.0.9/install.sh -ws "angie" -p "443" -cs "docker" -pp "9093" -l ru_RU.utf8
/opt/dks-wsks-6.0.9/install.sh -ws "apache2" -p "443" -cs "docker" -pp "9093" -l ru_RU.utf8
Podman
/opt/dks-wsks-6.0.9/install.sh -ws "nginx" -p "443" -cs "podman" -pp "9093" -l ru_RU.utf8
/opt/dks-wsks-6.0.9/install.sh -ws "angie" -p "443" -cs "podman" -pp "9093" -l ru_RU.utf8
/opt/dks-wsks-6.0.9/install.sh -ws "apache2" -p "443" -cs "podman" -pp "9093" -l ru_RU.utf8
Результат успешной установки
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Установка контейнера WEB-Сервер-КС
~ http сервер: nginx
~ порт\id : 443
~ контейнеризация : docker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ OK ] Проверка доступности порта 443 ПО "WEB-Сервер-КС".
[ OK ] Проверка доступности порта 9093 ПО "prometheus".
[ OK ] Проверка работы сервиса ПО "Docker" (docker.service).
[ OK ] Загрузка эталонного локального образа wsks-6.0.9 из архива ksdeb12_wsks-6.0.9_image.tar.
[ OK ] Построение конечного образа wsks-6.0.9_443 на базе эталонного.
Структура каталогов /opt/wsks-6.0.9_443 для запуска контейнера wsks-6.0.9_443 не существует, создаем...
[ OK ] Создание структуры каталогов для запуска контейнера wsks-6.0.9_443.
[ OK ] Создание контейнера wsks-6.0.9_443 и запуск в docker (порт\id 443).
[ OK ] Создание пользователя ks-www-data.
Группа ks-www-data существует.
Пользователь ks-www-data существует.
[ OK ] Остановка контейнера wsks-6.0.9_443.
[ OK ] Настройка ротации логов ПО "WEB-Сервер-КС".
[ OK ] Запуск сервиса wsks-6.0.9_443.service.
[ Инфо ] Остановка сервиса wsks-6.0.9_443.service.
Отсутствуют установленные приложения.
Для развертывания веб приложений используйте скрипт ws_addapp.sh.
См. инструкцию по развертыванию /opt/wsks-6.0.9_443/ctl/readme.txt
9.2. Установка контейнера без http-сервера
В данном примере:
- 443 - это виртуальный порт (этот порт не публикуется),
- порт 9093 - это порт prometheus (сбор метрик сервисов),
- локаль - ru_RU.utf8.
/opt/dks-wsks-6.0.9/install.sh -ws "no_http" -p "443" -cs "docker" -pp 9093 -l ru_RU.utf8
/opt/dks-wsks-6.0.9/install.sh -ws "no_http" -p "443" -cs "podman" -pp 9091 -l ru_RU.utf8
10. Установите веб-приложение Бюджет-NEXT.
Задача
Развернуть .NET Core приложение Бюджет-NEXT:
- с типом СУБД -
PostgreSQL
, - именем сервера -
10.38.46.119:5434
, - базой данных -
razr_241_test1_pg
, - обращение к сайту обеспечить через виртуальный каталог
budgetnext
.
wget -O /opt/wsks-6.0.9_443/ctl/tar_files/webnext.tar.gz "https://keysystems.ru/files/web/INSTALL/BUDGET_NEXT/24.2/webnext-242.tar.gz" --no-check-certificate
bash /opt/wsks-6.0.9_443/ctl/ws_addapp.sh -t "wBKS" -a "webnext.tar.gz" -vc "budgetnext" -st "3" -sn "10.38.46.119:5434" -dn "razr_241_test1_pg"
Параметр | Значение | Описание |
---|---|---|
-s | "Ссылка на архив" | Интернет-ресурс для закачки файла архива. Закачка осуществляется через утилиту wget. Постоянный URL-адрес актуальной версии архива Бюджет-NEXT. |
-t | "wBKS" | Тип устанавливаемого приложения Бюджет-NEXT. |
-a | "webnext.tar.gz" | Имя архива *.tar.gz для развертывания. Переименованно в webnext.tar.gz в процессе загрузки архива на хост. |
-vc | "bubgetnext" | Виртуальный каталог для приложения. Если не указан, то берется тип + кестрел порт. Используется для всех типов приложений. |
-st | "3" | Тип источника СУБД: 0 -MSSQL,3 -PostgreSQL. |
-sn | "10.38.46.119:5434" | Имя или ip источника СУБД, если используется порт, то его необходимо указать через двоеточие. |
-dn | "razr_241_test1_pg" | Имя базы данных источника СУБД. |
Результат успешной установки
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~ Установка прикладного приложения WEB-Сервер-КС
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ OK ] Проверка доступности порта 54430 ПО "Бюджет-NEXT".
[ OK ] Проверка виртуального каталога "budgetnext".
[ OK ] Распаковка архива обновления "webnext.tar.gz" в рабочий каталог.
[ OK ] Создание каталога приложения /opt/wsks-6.0.9_443/www/html/wsks_54430.
[ OK ] Создание файла запуска приложения /opt/wsks-6.0.9_443/ctl/app/54430_app.sh.
Приложение будет доступно по адресу - https://10.38.46.119:443/budgetnext.
[ OK ] Создание файла конфигурации для приложения /opt/wsks-6.0.9_443/conf.ks/vhost.ks/54430_ks.conf.
[ OK ] Создание файла настроек для приложения /opt/wsks-6.0.9_443/www/html/wsks_54430/appsettings.Production.json.
[ OK ] Запуск сервиса wsks-6.0.9_443.service.
При развертывании экземпляра контейнера с http сервером используется самоподписанный SSL-сертификат wsks-19.08_demo.crt
вида:
E = info@keysystems.ru
CN = DSR
OU = DSR
O = Keysystems LLC
L = Cheboksary
S = Chuvashia
C = RU
Как заменить сертификат читайте в статье: Замена сертификата в WEB-Сервер-КС
Дополнительно
1. Чтение информации о WEB-Сервер-КС версии 6.0.9, использующего порт 443
bash /opt/wsks-6.0.9_443/ctl/ws_info.sh
Скрипт отображает следующую информацию:
- Состояние и тип web-сервера (только для контейнера с http-сервером): Apache, Nginx или Angie.
- Перечень установленных приложений, и их состояние.
- Приложение контейнера Podman или Docker.
2. Создайте стартовую страницу при необходимости
Только для контейнера с http-сервером.
Вместо 10.38.46.86 укажите имя или IP-адрес web-сервера.
Каждый раз после добавления, либо удаления приложений стартовую страницу надо пересоздавать.
bash /opt/wsks-6.0.9_443/ctl/ws_crtind.sh -n "10.38.46.86" -r
В итоге стартовая страница web-сервера по адресу https://10.38.46.86:443
(укажите свой IP-адрес или имя сервера, также порт) будет выглядеть следующим образом:
3. Удаление контейнера вместе со всеми приложениями
Укажите свой порт web-сервиса.
Внимание: не используйте ключ -all
cd /&& opt/dks-wsks-6.0.9/uninstall.sh -p "443"
4. Остановка, запуск и перезапуск отдельного .NET Core приложения
Остановка, запуск и перезапуск отдельного .NET Core приложения
Без остановки контейнера и других работающих приложений, для дополнительной настройки или просто для временного запрета работы, например, чтобы обновить БД. Управление запуском, остановкой или перезапуском осуществляется выполнением следующих команд:
bash /opt/wsks-6.0.9_443/ctl/ws_ctlapp.sh -p "54430" -m "stop"
bash /opt/wsks-6.0.9_443/ctl/ws_ctlapp.sh -p "54430" -m "start"
bash /opt/wsks-6.0.9_443/ctl/ws_ctlapp.sh -p "54430" -m "restart"
Параметры | По умолчанию | Описание |
---|---|---|
-p --kestrel_port | 54430 | Кестрел-порт развернутого приложения. |
-m --mode | restart | Выполняемое действие:restart - остановить и запустить; stop - остановить;start - запустить. |
5. Удаление отдельного .NET Core приложения
Выясните, какой kestrel порт использует приложение, которое необходимо удалить:
/opt/wsks-6.0.9_443/ctl/ws_info.sh
Kestrel-порт 54431. Выполните команду для удаления:
cd /opt && bash /opt/wsks-6.0.9_443/ctl/ws_delapp.sh -p 54431
6. Остановка, запуск и перезапуск контейнера/службы WEB-Сервер-КС
Имя службы WEB-Сервер-КС версии 6.0.9, использующего порт 443:
wsks-6.0.9_443.service
Остановка службы (останавливаются все приложения) и просмотр ее статуса:
systemctl stop wsks-6.0.9_443.service
systemctl status wsks-6.0.9_443.service
Запуск службы (запускаются все приложения) и просмотр ее статуса:
systemctl start wsks-6.0.9_443.service
systemctl status wsks-6.0.9_443.service