Успешная попытка установки PostgresPro-Std-16 на Raspberry PI 5 для 1С

Приветствую, коллеги!

Я занимаюсь разработкой 1С, поэтому, регулярно, на выходных исcледую различные варианты развёртывания серверов 1С под разработку (различные версии или комбинации)

В этот раз решил провести эксперимент с Raspberry PI 5. К этому времени у меня был развернут на ней сервер хранилищ данных для нескольких версий 1С, опубликованный через apache2 и база разработки файловая, опубликованная через apache2.

Решил добавить клиент-серверную архитектуру для доступа с рабочего места для импорта проекта в EDT. Для этого развернуть сервер 1С 8.3.24.1548 и сервер PostgresPro-std-16.

Описание процесса ниже

Установка Postgres* на ubuntu 22.04 ARM64

Конфигурация платформы: Архитектура ARM64, BCM2712Cortex-A76, 2,4 ГГц * 4 ядра, LPDDR4X-4267 SDRAM 8GB, графика VideoCore VII, 800 МГцOpenGL ES 3.1, Vulkan 1; установлена SSD Class 10 64Gb + USB3 SSD Netac 256 (560 чтение, 530 запись).

Для установки в тестовой среде на базе Proxmox 8 для Raspberry Pi создал контейнер Ubuntu 22.04, размещаю виртуальный диск на диске USB-SSD (в моей системе Proxmox он примонтирован /opt и настроен как хранилище дисков виртуальных машин и дисков контейнеров). Так как в контейнере не установлен OpenSSH сервер, дополнительно ставлю все необходимое, используя консоль браузера к контейнеру Proxmox.

apt update && apt upgrade -y
apt install -y wget curl mc openssh-server
systemctl enable --now sshd
reboot

b96ba50d4c36535a90f439da3b719216.png

Копирую инструкции по установке PostgresPro-Std-16 с сайта производителя для архитектуры aarch64(arm64), предварительно войдя в свой аккаунт. Приводить их тут не буду, однако упомяну, что перед началом установки необходимо указать локаль ru_RU.UTF8, иначе 1С не сможет создать базу в postgres:

dpkg-reconfigure locales

В мастере выбираем необходимые локали чекбоксом, обычно это en_EN.UTF8 и ru_RU.UTF8, остальные локали можно отключать. Дефолтной всегда ставлю ru_RU.UTF8.

Создание базы данных PostgresPro для 1С 

После установки и настройки автозапуска рекомендую создать базу не по дефолтному пути в /var/lib/pgpro, а на отдельном виртуальном диске, который будет удобно бекапить, например. Я делаю /opt дополнительной точкой монтирования, далее исправляю файл /etc/defaults/postgrespro-std-16 с единственной строчкой «PGDATA=/opt/pgdata-16». Внимание, каталог »/opt/pgdata-16» не должен к моменту создания существовать, он будет создан и будет иметь права postgres: postgres на запись, чтение, запуск. Создаю базу командой ниже:

/opt/pgpro/std-16/bin/pg-setup initdb --tune=1c

Обычно все проходит без ошибок. Если ошибки есть — внимательно читаю, исправляю.

Так как в контейнере ubuntu 22.04 нет пользователя postgres, а есть только root, задаю пароль пользователя postgres следующим образом:

  1. Перехожу в каталог базы данных, в моем примере это »/opt/pgdata-16»

  2. редактирую файл »/opt/pgdata-16/pg_hba.conf» таким образом:

Замена: 
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#
На 
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
#
systemctl restart postgrespro-std-16
  1. Вхожу от имени postgres

psql -U postgres -w -h 127.0.0.1

После чего могу задать пароль пользователя постгрес командой:

ALTER USER 'postgres' WITH PASSWORD 'StrongPass123-$';

Обязательно ставлю точку с запятой, иначе интерпретатор будет считать, что команда не завершена и ждать ее продолжения.

  1. Возвращаю »/opt/pgdata-16/pg_hba.conf» в исходное состояние

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
host            all             all             0.0.0.0/0       md5

Готово, можно пользоваться

Идея появилась следующая — взять пару таких Raspberry и развернуть на одном Сервер Postgres, на другом сервер 1С с веб-публикациями и проверить такую конфигурацию на боевой базе УТ11.5, нагрузить задачами. По моим прикидкам на 35 человек должно заработать.

Скрытый текст

Установка 1С-сервера пошагово:

  1. Скачиваем и размещаем в другом аналогичном описанному выше контейнере, с обновленными repo и установленным ssh — сервером дистрибутив 1С нужного релиза архитектуры ARM64 для DEB-based (ubuntu, debian) операционных систем. Если планируется веб-публикация, то необходимо установить клиента 1С (не тонкого, а обычного)

    a4503145357dd1037ee3c6d0def679ff.png
  2. Выбираем все дистрибутивы *.deb из архива, в которых нет nsl в наименовании и копируем их в отдельный каталог, у меня /opt/dst/8.3.24.1548.installdir

Если в каталоге есть файл: "v8-install-deps.sh" запускаем его на выполнение:
/bin/bash /opt/dst/8.3.24.1548.installdir/v8-install-deps.sh
apt install /opt/dst/8.3.24.1548.installdir/*.deb
  1. Удаляем файл «libstdc++.so.6» в каталоге установленного 1С, затем подкидываем туда линк на файл системы:

rm /opt/1cv8/arm64/8.3.24.1548/libstdc++.so.6
mklink /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.30 
может быть изменена версия в следующих релизах ОС, поэтому ищем файл "libstdc++.so.6" в каталоге "/usr/lib/aarch64-linux-gnu" и смотрим на что ссылается
  1. Линкуем службы 1С в systemctl и включаем автозапуск

systemctl link /opt/1cv8/arm64/8.3.24.1548/srv1cv8-8.3.24.1548@.service
systemctl link /opt/1cv8/arm64/8.3.24.1548/ras-8.3.24.1548.service
ВИМАНИЕ, тут запускается дефолтный сервер 1С а не @.service. Будьте внимательны
systemctl enable --now srv1cv8-8.3.24.1548@default ras-8.3.24.1548.service
reboot
  1. Если планируется публиковать базы данных поставим apache2 + xrdp (для удобства публикации)

apt install -y xrdp xfce4 apache2
systemctl enable --now xrdp 
(возможно,если при подключеии RDP выдает черный экран, придется добавить пользователя xrdp в группу ssl-cert)
adduser xrdp ssl-cert

Публикация баз данных в этом случае будет происходить из RDP-сеанса сервера 1С от пользователя root с использованием клиента 1С и перезапуском apache2 после публикации. Каталоги публикации должны иметь права доступа www-data: www-data 0766

В результате, после загрузки, сервер 1С работает и существует возможность им управлять

© Habrahabr.ru