Настоящее руководство содержит описание процесса установки и предварительной настройки ПО Cubisio в серверном варианте развёртывания.
В документе описаны команды для установки приложения в двух режимах: ручном standalone режиме и обычнном сервером варианте с использованием утилиты администрирования. Все команды приведены на примере ОС Ubuntu 20.04, для других ОС данные действия осуществляются аналогичным образом.
Для серверного варианта развертывания ПО Cubisio поставляется в виде zip архива со всеми исполняемыми модулями и ресурсами программы. Считается, что дистрибутив должен содержать все основные настройки и предустановки.
Для выполнения ручной установки ПО Сubisio требуется наличие прав администратора посредством команды sudo
или su -
, а также наличие интерпретатора bash для запуска команд и исполняемого файла программы.
Для работы Cubisio требуется установить виртуальную машину Java, например, OpenJDK 1.8 или OpenJDK 11, а также настроить видимость исполняемого файла java в PATH, а также переменные среды окружения, в частности JAVA_HOME.
Данный шаг можно пропустить, если в ОС установлена одна из требуемых версий Java.
1) Вариант 1 - OpenJDK 11
Ниже представлен пример установки OpenJDK 11 с использованием стандартного менеджера пакетов и установщика.
$ sudo apt-get install -y openjdk-11-jdk
или
# apt-get install -y openjdk-11-jdk
$ java -version
Пример вывода результата команды:
openjdk version "11.0.6" 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Debian-1bpo91)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Debian-1bpo91, mixed mode, sharing)
2) Вариант 1 - OpenJDK 1.8
Ниже представлен пример установки OpenJDK 1.8 с использованием стандартного менеджера пакетов и установщика.
$ sudo apt-get install -y openjdk-8-jdk
Для упрощения процесса ниже производится создание файла, осуществляющего одновременную настройку нескольких переменных окружения. Данный файл выполняется при каждом запуске ОС. Выполните следующие команды:
$ sudo touch /etc/profile.d/javajdk.sh
$ echo export PATH=$PATH:/usr/lib/jvm/java-8-openjdk-amd64/bin > /etc/profile.d/javajdk.sh
$ echo export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ > /etc/profile.d/javajdk.sh
$ echo export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/ > /etc/profile.d/javajdk.sh
$ sudo chmod 744 /etc/profile.d/javajdk.sh
$ java -version
В результате выполнения команды в консоли должна быть выведена установленная версия Java - 1.8
.
3) Вариант 2 - Oracle Java 1.8
Ниже представлен пример установки альтернативной версии Oracle Java 1.8 с использованием стандартного установщика, для этого выполните следующие команды:
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update -y
sudo apt-get install -y oracle-java8-installer
sudo apt-get install -y oracle-java8-set-default
Для проверки установки Java выполните:
$ java -version
В результате выполнения команды в консоли должна быть выведена установленная версия Java - 1.8
.
Для установки архиватора zip (или tar), который требуется для распаковки архива с дистрибутивом программы, выполните:
$ sudo apt-get install -y zip tar
/home/user/cubisio
):$ unzip "cubisio.zip" -d "/opt/cubisio"
или
$ tar xzf "cubisio.tar.gz" -C "/opt/cubisio"
$ chmod +x "/home/user/cubisio/jsb-application/"*.sh
1) Запуск приложения в режиме standalone
Для запуска Cubisio в режиме standalone необходимо выполнить исполняемый файл start_release.sh
, например выполнить команду:
$ cd /home/user/cubisio/jsb-application && ./start_release.sh
В результате успешного запуска в консоли будет выведено сообщение, содержащее (см. Рисунок 1):
Workspace controller initialization done.
Рисунок 1 - вывод консоли после успешного запуска Cubisio
Если при запуске отображается ошибка "Configuration path is not exist (web.config.path)", то в вашей сборке не задана настройка Web фасада по умолчанию, в таком случае добавьте строку
web.http.webContext = "/WEB-INF/web.xml"
в базовый конфигурационный файл сервераconfig/SERVER.conf
.
2) Открытие пользовательского портала
Для открытия портала пользователя-аналитика необходимо открыть в браузере URL главной страницы, например:
http://localhost:8888/cubisio.jsb
.
При завершении загрузки указанной страницы будет отображён центральный графический интерфейс системы, включающий панель навигации и окно приветствия, см. Рисунок 2. При первом запуске будет открыта рабочая область "Системные настройки", при повторном запуске будет открыт текущий активный или последний открытый проект.
Если ваша версия не активирована, то предварительно будет показано окно активации лицензии. Необходимо задать серийный номер и выполнить ручную или автоматическую активацию. Автоматическая активация требует доступа к серверу активации в сети Интернет.
Рисунок 2 - окно приветствия Cubisio
Данный раздел описывает ручную установку Cubisio на сервере в локальной сети. Установка осуществляется под отдельным системным пользователем ОС, при этом ПО работает в виде сервиса (службы) с автоматическим запуском.
Перед началом необходимо убедиться, что выполнены все предварительные установки в соответствии с раздлом 2.1. Предварительные условия.
cubisio
, для этого выполните команду:# useradd -m -d /opt/cubisio cubisio
Если в вашей организации на серверах установлена СЗИ, то для создания пользователя
cubisio
обратитесь к администратору.
# tar xzf "cubisio-standalone.tar.gz" -C "/opt/cubisio"
cubisio
, для этого выполните:# mkdir -p /opt/cubisio/.cubisio
# chown cubisio:cubisio -R /opt/cubisio
# chmod +x /opt/cubisio/jsb-application/*.sh
/opt/cubisio/jsb-application/config/SERVER.conf
, например порт web интерфейса можно указать, добвив:web.http.port = 8888
web.http.url = "http://127.0.0.1:8888"
cubisio
и запустите start_release.sh
, например выполните:# su - cubisio
$ cd ~/jsb-application && ./start_release.sh
В результате должно быть выведено Workspace controller initialization done
, например:
2022-08-26 12:24:53,761 [INFO ] (org.jsbeans.scripting.jsb.JsbRegistryService:185) - Service JsbRegistryService initialized - 18.828 s
2022-08-26 12:24:53,762 [INFO ] (org.jsbeans.web.HttpService:185) - Service HttpService initialized - 0.001 s
2022-08-26 12:24:53,764 [INFO ] (org.jsbeans.services.ServiceManagerService:196) - System initialized. Time taken: 19.01 sec.
2022-08-26 12:24:56,760 [INFO ] (org.jsbeans.scripting.JsBridge.JS:(root):357) - Workspace controller initialization done. Worskpaces: 1; Users: 1
Завершите приложение Ctrl+C
вертинесь в root, используя exit
.
# nano /lib/systemd/system/cubisio.service
и добавьте в него:
Обратите внимание на параметры запуска сервиса
ExecStart
, опции-Xms4086m -Xmx12288m
задают начальный и максимальный размер доступной памяти. Указанное значение в-Xmx
не должно превышать досступный объем оперативной памяти.
[Unit]
Description=Application service cubisio
Documentation=https://cubisio.ru
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/cubisio/jsb-application
User=cubisio
ExecStart=/opt/cubisio/jsb-application/start_release.sh -Xms4086m -Xmx12288m
PIDFile=/var/run/cubisio/cubisio.pid
#Restart=on-failure
#RestartSec=10
## file size
#LimitFSIZE=infinity
## cpu time
#LimitCPU=infinity
## virtual memory size
#LimitAS=infinity
## open files
#LimitNOFILE=64000
## processes/threads
#LimitNPROC=64000
## locked memory
#LimitMEMLOCK=infinity
## total threads (user+kernel)
#TasksMax=infinity
#TasksAccounting=false
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable cubisio
# systemctl start cubisio
# systemctl status cubisio
В результате вывод должен отобразить Active: active (running)
, например:
● cubisio.service
Loaded: loaded (/lib/systemd/system/cubisio.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-08-26 12:43:05 MSK; 5s ago
Main PID: 4347 (bash)
Tasks: 22 (limit: 4915)
CGroup: /system.slice/cubisio.service
├─4347 bash /opt/cubisio/jsb-application/start_release.sh -Xms4086m -Xmx12288m
└─4355 java -XX:+CMSClassUnloadingEnabled -Xms512m -Xmx8192m -Dfile.encoding=UTF-8 -Xms4086m -Xmx12288m -classpath config:lib/cubisio-standalone-1.0-SNAPSHOT.jar:lib/ext
http://10.61.96.9:8888/cubisio.jsb
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/cubisio.conf
server {
listen 80 default_server;
server_name _;
client_max_body_size 100g;
location = / {
proxy_pass http://localhost:8888/cubisio.jsb;
proxy_redirect off;
proxy_buffering off;
proxy_read_timeout 300;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Host $host:443;
# proxy_set_header X-Forwarded-Server $host;
# proxy_set_header X-Forwarded-Port 443;
# proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
proxy_pass http://localhost:8888/;
proxy_redirect off;
proxy_buffering off;
proxy_read_timeout 300;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Host $host:443;
# proxy_set_header X-Forwarded-Server $host;
# proxy_set_header X-Forwarded-Port 443;
# proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo sudo ln -sfnv /etc/nginx/sites-available/cubisio.conf /etc/nginx/sites-enabled/cubisio.conf
Если тебуется подменять имя хоста, протокол и порт, обеспечить обработку заголовков X-Forwarded-* на стороне Web сервера Cubisio, требуется дополнительно для текущего фасада включить forwardedConnector, например, в большинстве случаев в SERVER.conf необходимо добавить
web.http.forwardedConnector = true
.
sudo systemctl restart nginx
http://10.61.96.9/cubisio.jsb
Если в конфигурации
SERVER.conf
уже задана опцияweb.http.url
с внутринним локальным адресом, предварительно требуется прописать внешний адрес, напримерweb.http.url = "http://10.61.96.9"
.
Наверняка вам потребуется выполнить настройку файрвола, например, iptables, чтобы разрешить доступ к 80/443 (и 22) портам и запретить доступ ко всем остальным, в осбенности это касается внутренних портов установленных на сервере сервисов. Так же необходимо обеспечивать сохранение правил, например, руководство для Астра https://wiki.astralinux.ru/pages/viewpage.action?pageId=153492348.
В текущем разделе будут описаны дополнительные шаги, которые требуются, чтобы:
Создайте системного пользователя keycloak (для сервисов cubisio и keycloak можно использовать одного пользователя)
Создайте каталог, загрузите keycloak, распакуйте и задайте права доступа:
# mkdir -p /opt/keycloak
# cd /opt/keycloak
2.1. Загрузите архив keyloak и распакуйте
# wget https://github.com/keycloak/keycloak/releases/download/15.0.1/keycloak-15.0.1.tar.gz
# tar zxf keycloak-15.0.1.tar.gz
2.2. Загрузите тему оформления сервера авторизации и распакуйте, скопируйте в папку keycloak*/themes
# wget https://cdn.cubisio.ru/keycloak/theme.tar.gz
# tar zxf theme.tar.gz
cp -r cubisio-theme2 ./keycloak-15.0.1/themes/
2.3 Задайте права доступа пользователя keycloak к файлам
# chown -R keycloak:keycloak *
# nano /lib/systemd/system/keycloak.service
и добавьте в него:
[Unit]
Description=Keycloak
After=network.target
[Service]
Type=idle
User=keycloak
Group=keycloak
ExecStart=/opt/keycloak/keycloak-15.0.1/bin/standalone.sh -b 0.0.0.0
TimeoutStartSec=600
TimeoutStopSec=600
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable keycloak
# systemctl enable keycloak
# systemctl status keycloak
ssh -o ServerAliveInterval=60 root@10.61.96.9 -L 8080:127.0.0.1:8080
И открыть в браузере URL и задать пароль для пользователя admin
:
http://localhost:8080/auth/
Administration Console
и выполнить настройку клиента7.1) Во вкладке Realm settings
задать поля Display name
и HTML Display name
7.2) Во вкладке Clients
нажать Create
и создать клиента Cubisio:
7.3) Далее требуется открыть вкладку Credentials
созданного клиента и скопировать Secret
, далее он понадобится при настройке Cubisio.
7.4) Keycloak под HTTPS может не открываться из-за ошибки подмены протокола, поэтому требуется в конфиге keycloak standalone.xml или standalone-ha.xml добавить proxy-address-forwarding="true"
в /, чтобы не было ошибки подмены протокола.
В данном случае достаточно выполнить:
# sed -i -e 's/<http-listener /<http-listener proxy-address-forwarding="true" /' /opt/keycloak/keycloak-15.0.1/standalone/configuration/standalone.xml
# systemctl restart keycloak
/opt/cubisio/jsb-application/config/SERVER.conf
имя пользователя пароль администратора:keycloak.cubisioClient.user = "admin"
keycloak.cubisioClient.password = "ПАРОЛЬ_АДМИНИСТРАТОРА"
/opt/cubisio/jsb-application/config/SERVER.conf
следующие строки:web.http.webContext = "/WEB-INF/keycloak.web.xml"
kernel.security.enabled = true
workspace.userManager.addUsersFromWorkspaces = false
workspace.userManager.addUsersFromAuthServer = true
/opt/cubisio/jsb-application/web/WEB-INF/keycloak.json
требуется:secret
;auth-server-url
./etc/nginx/sites-available/cubisio.conf
) присутствует запись: location /auth/ {
proxy_pass http://127.0.0.1:8080/auth/;
proxy_buffering off;
proxy_redirect off;
proxy_set_header Referer $http_referer;
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;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header Host $http_host;
}
Запустите прокси командой systemctl start nginx
и проверьте работу URL, который выше задавали в поле auth-server-url
, должно открыться окно автризации или окно сервера авторизации.
# apt install -y snapd
# snap install core
# snap refresh core
# snap install --classic certbot
# rm -f /usr/bin/certbot
# ln -s /snap/bin/certbot /usr/bin/certbot
В случае Astra одним из вариантов установки Certbot является установка из debian репозитория:
# apt install debian-archive-keyring
# nano /etc/apt/sources.list.d/debian.list
добавить:
deb https://deb.debian.org/debian/ buster main contrib non-free
deb https://security.debian.org/debian-security/ buster/updates main contrib non-free
далее сохранить и выйти из редактора Ctrl-X, y
# apt update
# sudo apt install python3-certbot-nginx
# certbot --nginx
В случае возникновения ошибки верификации SSL в java
InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
, выполните переустановку сертификатов:
# dpkg --purge --force-depends ca-certificates-java
# apt-get install ca-certificates-java
Для работы авторизации под SSL с Self-Signed сертификатом, их необходимо предварительно установить в JDK keystore:
cd $JAVA_HOME && keytool -import -alias mycert -file /etc/ssl/certs/selfsigned.crt -keystore lib/security/cacerts
. Или в отладочных целях временно отключить проверку, добавив в keycloak.json:"disable-trust-manager": true, "allow-any-hostname" : true
.