Найти тему
Тюнинг Админа

Elma365 BPM на Ubuntu 22.04LTS

Оглавление

Содержание статьи

  • Системные требования
  • Рекомендации от автора по подготовке сервера
  • Установка Ubuntu server 22.04
  • Обновление системы и установка ПО
  • Регистрация доменного имени и записи типа A в DNS и проброс портов на маршрутизаторе.
  • Установка Elma365 BPM
  • Получение сертификата L'ets Encrypt
  • Перенос на другой сервер
  • Администрирование сервера
  • Регистрация продукта
  • Обновление
  • Рекомендации по снятию дампа, бэкапу и восстановлению данных
  • Проверка запуска сервисов.
  • Как сделать дамп баз и сбор диагностической информации для отправки в техподдержку
  • Геолокация, оставляем доступ только из России и Белоруссии.
  • Вывод
  • Бонус: Советы и Рекомендации

Системные требования.

Официально у Элмы старая документация на сайте и информация о системе разнится с командами, такое впечатление, что сотрудникам влом переписать документацию, в текущей рекомендуется использовать 2 сервера, сервер приложений и сервер баз данных.

Минимальные, реальные требования к железу при установке без гипервизора как прослойки таковы:

  • Процессор 4 ядра intel от 2Ггц.
  • оперативная память от 16Гб.
  • 2 жестких диска sata в raid1 -- рекомендовано для установки Элмы не менее 50гб жесткий диск не считая системы.

Вам этой конфигурации хватит вполне до 50 пользователей.

От 50 до 150 пользователей, вам потребуется сервер с гипервизором и следующей конфигурации:

- Процессор 6 ядер intel от 2Ггц.

- оперативная память от 24Гб.

- дисковый массив ssd в raid1

От 150 до 300 пользователей, вам потребуется сервер с гипервизором и следующей конфигурации:

- Процессор 8 ядер intel Xeon от 2Ггц.

- оперативная память от 32Гб.

- дисковый массив m2 ssd или pci-express в raid1

Опять же всё упирается в размер базы данных и файлового хранилища.

Рекомендации от автора по подготовке сервера

Само по себе решение достаточно не простое и тяжёлое так как включает в себя достаточно большое количество микро сервисных процессов в контейнерах для работы с соцсетями и мессенджерами, а так же для снятия дампа происходит остановка всех процессов elma, рекомендую ставить прослойку в виде гипервизора, что реально облегчит вам жизнь, чем именно спросите вы, перечислю:

1) снятие бэкапа целиком виртуальной машины без остановки её работы.

2) Разворачивание целиком виртуальной машины вдвое быстрее загрузки и распаковки дампа средствами Элмы.

3) можно делать Snapshotы и быстро откатывать систему.

4) для бэкапов можно использовать абсолютно любой nas/шара или облако при этом не нужно дополнительное ПО на самой Элме.

В качестве гипервизора автор использует Proxmox.

Установка Ubuntu server 22.04

Кратко в скриншотах пробежимся по этапу установки системы

  • выбор языка
-2
  • Обновляем установщик
-3
  • Раскладку оставляем Английской
-4
  • Выбираем стандартный установочный образ
-5
  • Настраиваем статический адрес
-6
-7
-8
  • Прокси не нужен
-9
  • Зеркало оставляем по умолчанию
-10
  • Настройка диска, выбираем расширенную настройку
-11
  • Выбираем free space и нажимаем Enter
-12

Если у вас два диска и более можете создать софтовый raid, выбрав пункт "Create software RAID (md)"

  • Выбираем добавить GPT партицию
-13
  • Не пишем объем а нажимаем Create, система по умолчанию использует все пространство.
-14
  • У вас должно получиться следующее
-15

Предупреждение перед форматированием, выбираем продолжить

-16
  • Создание учетной записи в системе и задание имени сервера
-17
  • Выбираем установить SSH сервер
-18
  • На этом шаге ничего выбирать не нужно
-19
  • Ждем окончание установки
-20

Все установка завершена, можно перезагружать машинку.

-21

Обновление системы и установка ПО

Для начала повышаем права пользователя: sudo -s

Обновление зависимостей пакетной базы и репозитория:

apt update

Обновление системы:

apt upgrade -y

Для работы нам потребуется nano, net-tools, mc:

apt install net-tools mc nano

где net-tools - пакет сетевых утилит, а mc - Midnight Commander текстовый двухпанельный файловый менеджер, nano - текстовый редактор

Регистрация доменного имени и записи типа A в DNS и проброс портов на маршрутизаторе.

Прежде чем продолжить рекомендую зарегистрировать доменное имя если у вас его нет, https://domains.nethouse.ru/ хороший хостинг с очень быстрым обновлением корневых записей, тот же reg.ru можно часами ждать когда обновятся корневые записи, а про ошибки связанные с обновлением статистики адресного пространства и геолокации вообще молчу, на 2ip.ru ваш ip адрес может по геолокации определяться как Россия с точностью координат, а на reg.ru как Казахстан, а в связи с санкциями и ограничительными мерами, ваш сайт не будет работать у клиентов.

После регистрации имени добавьте запись А "имя_сервера.ваш_домен.ru" - внешний статический ip адрес:

-22

Для доступа к Элме из глобальной сети необходимо пробросить порты 80, 443 на нашем маршрутизаторе. Для этого добавляется правило Firewall: источник WAN - внешний интерфейс, порты 80,443, DNAT ip адрес локального сервера с элмой.

Установка Elma365 BPM

Прежде чем начать установку, нужно иметь представление, где и что хранится в ELMA365 и в каком составе:

  • PostgreSQL — в базе данных хранятся основные данные системы: пользователи, элементы приложений, настройки приложений, разделов, процессы, страницы, виджеты, задачи, события и другие настройки конфигурации;
  • MongoDB — в базе данных хранятся неструктурированные системные настройки, данные чатов и ленты;
  • S3 Object Storage — в объектном хранилище находятся загружаемые и создаваемые в ELMA365 файлы любого типа и объема, такие как документы, фотографии, аудио и видео файлы.

Вот мы и подошли к главному вопросу установки, предварительно для повышения привилегий выполните команду:

sudo -s

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

hostnamectl set-hostname elma

Выполним скрипт для скачки и установки Элмы:

curl -fsSL -o elma365-installer.sh \
https://dl.elma365.com/onPremise/master/latest/download && \
chmod +x elma365-installer.sh && \
./elma365-installer.sh

Первое что выдаст в процессе установки предупреждение по поводу диска и рекомендацию по отключению SWAP, у нас его нет идем дальше.

-23

Прокси у нас нет поэтому нажимаем N

-24

Советую включить firewall ufw выбрав y --- будут добавлены типовые политики.

Система предложит очистить прочие правила firewall выбираем N -- там и нет ничего очищать

будет время проверьте командой: Ufw status -- команда выводит список всех правил.

Система предложит нам добавить правила согласно нашим пожеланиям, пока нам это не нужно, мы выполняем типовую установку и настройку, гайки в плане безопасности рекомендуется настраивать в самом конце, поэтому выбираем N

-25

Система спросит включить поддержку IPv6, выбираем N

-26

Скрипт предложит указать ДНС или использовать публичный, в процессе установки мы уже настроили сеть и указали предпочтительный днс, поэтому выберем N, если у нас сменится днс нам достаточно будет поправить конфиг сетевого интерфейса и не делать реконфигурацию Элмы.

ELMA365 is using public DNS servers(8.8.8.8 8.8.4.4) at the moment

Do you want to specify your private DNS? (y/N) N

далее идут типовые вопросы:

? Select language for ELMA365 Russian -- выбор языка из двух возможных

Administrator login (email) -- Почта администратора web интерфейса

? Administrator password ********

? Confirm password ********

? SMTP server (type '<empty>' to leave blank) [? for help] -- smtp.mail.ru -- ваш почтовый сервер, Элме потребуется своя учетная запись, для отправления уведомлений.

? SMTP port [? for help] (25) -- 465

? TLS enable [Use arrows to move, type to filter, ? for more help]

> Yes -- используем TLS

? SMTP username for sending messages (type '<empty>' to leave blank) -- elma@domain.com

? SMTP password (type '<empty>' to leave blank) -- пароль от ящика

? From email for sending messages (type '<empty>' to leave blank) [? for help] (ELMA365 <elma365.domain.com> -- как должен выглядеть бланк заголовка письма, которое будет отправлять Элма, "ELMA365 <elma365.domain.com>" - это нас вполне устраивает не трогаем и нажимаем Enter.

? Check connection to SMTP server? N - проверить подключение к smtp серверу, если вы уверены, что все и так должно работать нажимаем N, Если нет то Y и скрипт выполнит подключение к серверу и предложит отправить письмо на указанный ваши адрес.

? Do you have external Databases? N -- Скрипт предлагает использовать внешнюю базу данных, в типовых конфигурациях до 300 пользователей нет смысла во внешней БД, Элма использует Postgresql, Mongo и s3, в нашем случае если выберем использовать внешнюю базу данных мы перенесем только Postgresql.

? Enter ELMA365 domain name or IP address 172.30.0.8 -- Если сервер будет исключительно локальным ничего не пишем нажимаем enter, если доступен из интернета по адресу elma.domain.ru -- то пишем в этой строке полное доменное имя, в нашем случае elma.domain.ru.

? Refresh Hardware ID? N -- это требуется в случае переноса Элмы, между разными физическими серверами через процедуру: elma365ctl reconfigure, в нашем случае не требуется

? Enable platform debug mode? N -- Включение Debug режима, нам режим отладки не нужен.

Процесс установки достаточно медленный, придется подождать.

Процесс установки и запуска сервисов Элмы можно отслеживать во втором терминальном окне с помощью команды: microk8s kubectl get pod

-27

Когда процесс завершится успешно у вас загрузится ваш сайт с Элмой, а в консоле при вводе команды:

microk8s kubectl get pod

Обратите внимание на статус процессов, если у всех статус Running, значит все хорошо. Запомните команду она вам не раз пригодится, когда вы по каким то причинам будете перезагружать сервер и по прошествии 5 минут у вас веб сервер все еще будет находиться в ауте, не пугайтесь, Черепаха медленно но верно ползет.

Получение сертификата L'ets Encrypt

Let's Encrypt предоставляет бесплатные SSL-сертификаты для ваших веб-сайтов. Получить сертификаты можно при помощи утилиты Certbot, для этого потребуется публичный (белый) IP проброшенный 80,443 порт через маршрутизатор.

Certbot — это бесплатное программное обеспечение с открытым исходным кодом, которое позволяет легко создавать SSL-сертификаты Let’s Encrypt на сервере Linux.

Если Elma365 уже установлена на сервере, необходимо остановить сервисы Elma365:

elma365ctl stop

Необходимо проверить свободен ли порт 80:

netstat -an | grep ':80'

Есть несколько способов установки Certbot на Ubuntu, но сегодня мы остановимся на установке с использованием PPA.

Для начала нам следует установить необходимое для работы с PPA ПО:

apt install software-properties-common

Следующим шагом добавим необходимый PPA:

add-apt-repository ppa:certbot/certbot

Обновим список пакетов:

apt update

Установим Certbot:

apt install certbot

Для прохождения регистрации необходимо выполнить следующую команду.

certbot register -m admin@company.ru

После прохождения регистрации переходим к основному действию - к получению сертификата.

certbot certonly --standalone --register-unsafely-without-email --agree-tos -d www.company.ru

В случае успешного выполнения команды вы получите сообщение с путями сертификата и ключа: копируем пути до этих сертификатов

Запускаем реконфигурацию Elma:

elma365ctl reconfigure

Скрипт пробежится по пунктам конфигурации:

? Select language for Elma365 Russian -- нажимаем Enter

? SMTP server (type '<empty>' to leave blank) [? for help] -- нажимаем Enter, так как мы не будем менять этот параметр.

? SMTP port [? for help] (25)-- нажимаем Enter, так как мы не будем менять этот параметр.

? TLS enable [Use arrows to move, type to filter, ? for more help]

> Yes -- используем TLS

? SMTP username for sending messages (type '<empty>' to leave blank)-- нажимаем Enter, так как мы не будем менять этот параметр.

? SMTP password (type '<empty>' to leave blank) -- вносим новый пароль от ящика

? From email for sending messages (type '<empty>' to leave blank) [? for help] (ELMA365 <elma.ru>-- нажимаем Enter, так как мы не будем менять этот параметр.

? Check connection to SMTP server? N - нет проверять не будем

? Enter ELMA365 domain name or IP address elma.ru -- нажимаем Enter, так как мы не будем менять этот параметр.

? Enable HTTPS for elma.ru Yes -- естественно включаем https

? Specify a path to the private key -- Вставляем путь сертификата /etc/letsencrypt/live/elma.ru/privkey.pem -- нажимаем Enter, чтобы продолжить

? Specify a path to the certificate -- Вставляем путь сертификата /etc/letsencrypt/live/elma.ru/fullchain.pem -- нажимаем Enter, чтобы продолжить

? Enable root CA certificate for HTTPS? NO -- нам не нужны корневые центры сертификации.

? Turn on hostaliases? (usually needed in private networks) Yes -- Выбирайте Да иначе у вас отвалится хранилище S3.

? Enable platform debug mode? N -- Включение Debug режима, нам режим отладки не нужен.

Итого у нас получается следующая картина

-28

После реконфигурации системы, сервисы автоматически перезапустятся.

При обновлении сертификатов вручную, выполняем реконфигурацию

Здесь можно посмотреть актуальность вашего сертификата:

https://www.ssllabs.com/ssltest/index.html

Действия при обновлении сертификатов

Останавливаем Elma:

elma365ctl stop

Проверяем статус портов, 80-й должен быть не активен:

netstat -tulpn | grep LISTEN

Выполняем запрос на обновление сертификатов:

certbot renew

Проверка валидности сертификатов в системе, после обновления вручную:

certbot certificates

-29

Копируем себе пути к сертификатам

Подключение NFS хранилища

Устанавливаем nfs клиента:

apt install nfs-common

Монтируем сетевую папку к нашему каталогу:

mount ip_адрес_nfs:/backup/elma /backup

Добавляем монтирование NFS каталога в автозагрузку:

nano /etc/fstab

ip_адрес_nfs:/backup/elma /backup nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Перенос на другой сервер

Для переноса ELMA365 на другой сервер необходимо:

  • Выполняем резервное копирование виртуальной машины для предотвращения возможной потери данных.
  • Выполняем снятие дампа с баз данных:
    elma365ctl dump
  • Перенесите дамп из папки /backup/ на новый сервер, удобнее это сделать через NFS хранилище, что мы собственно и сделали примонтировав к этому каталогу папку на NFS сервере или через WinSCP, после этого вырубаем сервер.
  • Устанавливаем ELMA365 на новый сервер.
  • Примонтируем папку на NFS хранилище к каталогу /backup или через WinSCP копируем дамп на сервер.
  • Восстанавливаем данные с помощью команд по очереди:

elma365ctl restore --path=/backup/Папка_с_дампом --parts=postgres

elma365ctl restore --path=/backup/Папка_с_дампом --parts=mongo,s3

Администрирование сервера

Для администрирования сервера необходимо использовать утилиту elma365ctl. С её помощью можно:

  • Реконфигурировать приложение
  • Создавать резервную копию данных
  • Восстановить базу данных из архива
  • Масштабировать сервисы и многое другое.

Чтобы запустить утилиту, зайдите в командную консоль на сервере. Затем выполните следующую команду:

elma365ctl

Вы увидите список доступных команд, с помощью которых можно:

  • reconfigure --- Запустить реконфигурацию и изменить параметры приложения
  • reload-cert --- Обновление сертификатов
  • HTTPSset-dns --- Установка новых DNS серверов в кластер
  • dump --- Сохранить данные в папку /backup с временным штампом
  • restore --- Восстановить БД из архива
  • restore --prepare --- Остановка приложения ELMA365 для подготовки к восстановлению или бекапу
  • update-hamode --- Обновление настроек узла режима высокой доступности с последующим перезапуском кластера (только для версии Enterprise)
  • start --- Запуск приложения
  • ELMA365stop --- Остановка приложение ELMA365(полная остановка и запуск занимает значительное время)
  • restart --- Перезапуск приложение ELMA365 и сервисов кластера
  • scale --- Масштабировать указанный сервис(только для версии Enterprise)
  • add-node --- Добавить новый сервер в вычислительный кластер (только для версии Enterprise)
  • leave-node --- Вывести узел из вычислительного кластера (только для версии Enterprise)
  • delete-node --- Удалить узел из вычислительного кластера (только для версии Enterprise)
  • repair --- Починить зависимости установленного экземпляра ELMA365 в вычислительном кластере
  • version --- Показать версию приложения
  • add-service --- Добавить сторонний сервис
  • expose-service --- Сделать сервис доступным по определенному порту
  • delete-service --- Удалить сторонний сервис
  • featureflag --- Включить

elma365ctl featureflag <flagName> enable elma365ctl featureflag <flagName> disable

Регистрация Elmы

Регистрация постоянной лицензии происходит через вашего менеджера, либо триальная при входе на ВЭБ страничку с Элмой на вашем сервере будет форма регистрации.

Обновление Elmы

Перед обновлением рекомендую сделать полный бэкап, я делаю средствами гипервизора Proxmox.

Переходим в консоль и повышаем наши права в системе:

sudo -s

Скачиваем установочный скрипт, делаем его исполняемым и запускаем и все одной командой, при желании можно и разбить на сегменты:

curl -fsSL -o elma365-installer.sh https://dl.elma365.com/onPremise/master/latest/download && chmod +x elma365-installer.sh && ./elma365-installer.sh

-30

Как видим система обнаружила новую версию и предлагает обновиться --> Выбираем "y" --> Вы желаете выполнить бэкап перед обновлением --> Выбираем "С" продолжить --> Система выдаст рекомендацию отключить SWAP, для продолжения нажмите "Enter", так и поступим --> Вы желаете настроить прокси --> Выбираем "N" нет --> Firewall UFW активен, желаете добавить разрешающее правило для интерфейса --> Нажимаем "С" продолжить --> Последний вопрос включить IPv6, выбираем "N" нет.

Пойдет долгий и мучительный процесс обновления, в случае успешного завершения вы увидите:

-31

Проверяем запущенные процессы:

microk8s kubectl get pod

У всех процессов статус должен быть Running

Рекомендации по снятию дампа, бэкапу и восстановлению данных

Резервное копирование ELMA365 должно выполняться в составе:

  • PostgreSQL — в базе данных хранятся основные данные системы: пользователи, элементы приложений, настройки приложений, разделов, процессы, страницы, виджеты, задачи, события и другие настройки конфигурации;
  • MongoDB — в базе данных хранятся неструктурированные системные настройки, данные чатов и ленты;
  • S3 Object Storage — в объектном хранилище находятся загружаемые и создаваемые в ELMA365 файлы любого типа и объема, такие как документы, фотографии, аудио и видео файлы.

Полный дамп снимается командой:

elma365ctl dump

Не забывайте про NFS очень упрощает жизнь

Создаем скрипт для снятия Дампа планировщиком заданий:

nano /scripts/Backup_Elma

#!/bin/bash

elma365ctl dump

Делаю скрипт исполняемым:

chmod +x /scripts/Backup_Elma

Автоматизируем бэкап за счет добавления задания планировщику:

nano /etc/crontab ---- Онлайн конфигуратор Crontab https://crontab.guru/

Добавляю в самом низу строчку:

0 22 * * 1-5 root /scripts/Backup_Elma

Бэкап выполняется с понедельника по пятницу в 22:00

Восстановление из бэкапа:

elma365ctl restore --path=/backup/Папка_с_дампом

Проверка запуска сервисов.

Проверка состояния сервисов выполняется с помощью команды:

microk8s kubectl get pod -- Все сервисы должны быть в статусе Running

Если вы перезагружали сервер 10-15 минут назад не спешите паниковать, запускайте эту команду через каждые 2-3 минуты и вы поймете, что сервисы постепенно стартуют.

Как сделать дамп баз и сбор диагностической информации для отправки в техподдержку

Снимаем дамп только баз данных:

elma365ctl dump --parts=postgres,mongo

Собираем диагностическую информацию:

curl -fsSL -o elma365-diagnostic.sh https://dl.elma365.com/onPremise/elma365-diagnostic.sh && sudo bash ./elma365-diagnostic.sh

Чтобы сохранить информацию на сервер, введите S. Для доступа к данным будет сгенерирована ссылка.

Для сохранения в файл на локальный диск, введите F.

Дамп баз и диагностическую информацию с сервера можно забрать с помощью NFS Хранилища сбросив туда, либо через программу WinSCP.

Геолокация, оставляем доступ только из России и Белоруссии.

Вывод

Достаточно тяжелый продукт с кучей багов на борту, особенно проблемно при обновлениях, приходится постоянно откатываться. Идеальным для себя вижу вариант тестовой среды, где будет время на обкатку обновлений и решение косяков.

Статья допиливается и еще пока не готова, просьба не пинать автора, он с техподдержкой Элмы прошел огонь, воду и медные трубы, думал пере убиваю их, до чего не расторопные и медлительные товарищи.

Бонус: Советы и Рекомендации

Советы:

1) Увеличьте максимальное количество подключений в postgresql, по умолчанию равно 1000

  • Получаем пароль пользователя postgres:

echo postgres:$(sudo microk8s kubectl get secrets postgres -o jsonpath='{.data.postgresql-password}' | base64 -d)

Копируем в блокнот

  • Подключаемся к контейнеру Postgres и запускаем оболочку:

microk8s kubectl exec -it postgres-0 -- bash

  • Откроем командный интерпретатор postgresql:

psql -h localhost -p 5432 -U postgres -W -d elma365

Вводим пароль из блокнота

  • Увеличиваем максимальное количество подключений командой:

alter system set max_connections = 2000;

ALTER SYSTEM --- увидим в случае успеха

Отключаемся от командного интерпретатора postgresql:

\q

Отключаемся от контейнера postgresql:

Exit

  • Перезапускаем целиком microk8s либо только Postgres:

microk8s stop && microk8s start

microk8s kubectl rollout restart sts postgres