Настоящее руководство содержит описание процесса установки и предварительной настройки ПО 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 1.8 с использованием стандартного менеджера пакетов и установщика.
$ 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
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
не должно превышать досступный объем оперативной памяти.
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 enable 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
В текущем разделе будут описаны дополнительные шаги, которые требуются, чтобы:
Создайте системного пользователя keycloak
Создайте каталог, загрузите keycloak, распакуйте и задайте права доступа:
# mkdir -p /opt/keycloak
# cd /opt/keycloak
# 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
# 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.config.path = "/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
# 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
Для удобства развёртывания и администрирования Cubisio на серверах Linux может быть использована утилита администрирования (Cubisio Admin Tools) - admin/admin.sh
.
Улитита администрирования состоит из двух частей:
./base/**
- базовая неизменная часть, включающая базовые команды и общие настройки;./resource/**
, *.properties
- переопределение для конкретного проекта, может включать настройки для конкретных серверов.Настройка локали и установка утилит
sudo dpkg-reconfigure locales sudo apt install -y fail2ban mc curl net-tools
Закачать утилиту администрирования на удалённый сервер
Выполнять команду на сервере, с которого необходимо закачать утилиту на удалённый сервер.
cd ./admin ./admin.sh --upload_scripts_create_dir 'yes' --upload_scripts_ssh 'cb@123.123.123.123' upload_scripts
Установка и настройка почтовых уведомлений (SMTP)
~/admin-cubisio/admin.sh install_ssmtp
Настройка iptables и отключение IPv6
~/admin-cubisio/admin.sh install_iptables
Установка Open JDK 8
~/admin-cubisio/admin.sh install_openjdk8
Установка Postgresql с настройками по умолчанию
$ ~/admin-cubisio/admin.sh install_postgresql
Установка ClickHouse и пароля, зашифрованного SHA256
$ ~/admin-cubisio/admin.sh install_clickhouse
Установить почтовую SMTP утилиту для рассылки уведомлений
~/admin-cubisio/admin.sh install_ssmtp
Установить билдсервер Cubisio
~/admin-cubisio/admin.sh install_build_server
Выполнить и настроить сборку
~/admin-cubisio/admin.sh repo_updated_build
Установить сервер приложений Cubisio
~/admin-cubisio/admin.sh jsb_app_install
Разрешение перезапуска сервиса cubisio без ввода пароля sudo
Выполнить sudo visudo
и добавить:
cb ALL= NOPASSWD: /bin/systemctl * cubisio-online.service
Установить Web-фасад nginx для Cubisio
~/admin-cubisio/admin.sh jsb_app_nginx_install
Запуск сервиса
$ ~/admin-cubisio/admin.sh jsb_app_start
или
$ sudo systemctl start cubisio.service
Остановка сервиса
$ ~/admin-cubisio/admin.sh jsb_app_stop
или
$ sudo systemctl stop cubisio.service
Состояние сервиса
$ ~/admin/admin.sh jsb_app_status
или
$ sudo systemctl status cubisio.service