Содержание статьи
- Системные требования
- Рекомендации от автора по подготовке сервера
- Установка 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
Кратко в скриншотах пробежимся по этапу установки системы
- выбор языка
- Обновляем установщик
- Раскладку оставляем Английской
- Выбираем стандартный установочный образ
- Настраиваем статический адрес
- Прокси не нужен
- Зеркало оставляем по умолчанию
- Настройка диска, выбираем расширенную настройку
- Выбираем free space и нажимаем Enter
Если у вас два диска и более можете создать софтовый raid, выбрав пункт "Create software RAID (md)"
- Выбираем добавить GPT партицию
- Не пишем объем а нажимаем Create, система по умолчанию использует все пространство.
- У вас должно получиться следующее
Предупреждение перед форматированием, выбираем продолжить
- Создание учетной записи в системе и задание имени сервера
- Выбираем установить SSH сервер
- На этом шаге ничего выбирать не нужно
- Ждем окончание установки
Все установка завершена, можно перезагружать машинку.
Обновление системы и установка ПО
Для начала повышаем права пользователя: 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 адрес:
Для доступа к Элме из глобальной сети необходимо пробросить порты 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, у нас его нет идем дальше.
Прокси у нас нет поэтому нажимаем N
Советую включить firewall ufw выбрав y --- будут добавлены типовые политики.
Система предложит очистить прочие правила firewall выбираем N -- там и нет ничего очищать
будет время проверьте командой: Ufw status -- команда выводит список всех правил.
Система предложит нам добавить правила согласно нашим пожеланиям, пока нам это не нужно, мы выполняем типовую установку и настройку, гайки в плане безопасности рекомендуется настраивать в самом конце, поэтому выбираем N
Система спросит включить поддержку IPv6, выбираем N
Скрипт предложит указать ДНС или использовать публичный, в процессе установки мы уже настроили сеть и указали предпочтительный днс, поэтому выберем 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
Когда процесс завершится успешно у вас загрузится ваш сайт с Элмой, а в консоле при вводе команды:
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 режима, нам режим отладки не нужен.
Итого у нас получается следующая картина
После реконфигурации системы, сервисы автоматически перезапустятся.
При обновлении сертификатов вручную, выполняем реконфигурацию
Здесь можно посмотреть актуальность вашего сертификата:
https://www.ssllabs.com/ssltest/index.html
Действия при обновлении сертификатов
Останавливаем Elma:
elma365ctl stop
Проверяем статус портов, 80-й должен быть не активен:
netstat -tulpn | grep LISTEN
Выполняем запрос на обновление сертификатов:
certbot renew
Проверка валидности сертификатов в системе, после обновления вручную:
certbot certificates
Копируем себе пути к сертификатам
Подключение 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
Как видим система обнаружила новую версию и предлагает обновиться --> Выбираем "y" --> Вы желаете выполнить бэкап перед обновлением --> Выбираем "С" продолжить --> Система выдаст рекомендацию отключить SWAP, для продолжения нажмите "Enter", так и поступим --> Вы желаете настроить прокси --> Выбираем "N" нет --> Firewall UFW активен, желаете добавить разрешающее правило для интерфейса --> Нажимаем "С" продолжить --> Последний вопрос включить IPv6, выбираем "N" нет.
Пойдет долгий и мучительный процесс обновления, в случае успешного завершения вы увидите:
Проверяем запущенные процессы:
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