Приветствую, коллеги!
Я занимаюсь разработкой 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
Копирую инструкции по установке 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 следующим образом:
Перехожу в каталог базы данных, в моем примере это "/opt/pgdata-16"
редактирую файл "/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
Вхожу от имени postgres
psql -U postgres -w -h 127.0.0.1
После чего могу задать пароль пользователя постгрес командой:
ALTER USER 'postgres' WITH PASSWORD 'StrongPass123-$';
Обязательно ставлю точку с запятой, иначе интерпретатор будет считать, что команда не завершена и ждать ее продолжения.
Возвращаю "/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С-сервера пошагово:
Скачиваем и размещаем в другом аналогичном описанному выше контейнере, с обновленными repo и установленным ssh - сервером дистрибутив 1С нужного релиза архитектуры ARM64 для DEB-based (ubuntu, debian) операционных систем. Если планируется веб-публикация, то необходимо установить клиента 1С (не тонкого, а обычного)
Выбираем все дистрибутивы *.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
Удаляем файл "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С в 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
Если планируется публиковать базы данных поставим 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С работает и существует возможность им управлять