Приветствую, коллеги!
Я занимаюсь разработкой 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С работает и существует возможность им управлять
Комментарии (18)
Denis_Andreevich
09.09.2024 01:17Мне тоже хотелось бы прочитать про некое решение проблемы, которая обычным путём работает, а на ARMах даёт какие-нибудь глюки. Потому что в моих экспериментах с OrangePi PC и заканчивая PC 4 не было ничего супер необычного, кроме формфактора и потребляемого электричества. Всё, что можно установить из репозитория или имло сборку armf было запущено и нормально эксплуатировалось. Единственный вывод, который я для себя сделал, нужно покупать дорогую sd карту иначе просадка чтений записи видна невооружённым взглядом.
Bessome Автор
09.09.2024 01:17+2Решаю проблему вечно включенного компа (читай гудящего) с публикацией веб-баз и хранилища 1с
Описал установку именно в среде ARM64 релиза платформы 1С, в котором необходимо убрать файл из развернутого дистрибутива чтобы запустить релиз
Описал задачу установки суперадмину postgres пароля без наличия пользователя postgres linux (su postgres && psql обычно открывают командную строку без ввода данных) в контейнере.
Testman2023
09.09.2024 01:17+2установлена SSD Class 10 64Gb + USB3 SSD Netac 256
взять пару таких Raspberry и развернуть на одном Сервер Postgres, на другом сервер 1С с веб-публикациямиhttps://www.raspberrypi.com/products/raspberry-pi-5/
"SSD Class 10 64Gb" - видимо microSD card slot(support for high-speed SDR104 mode). Сколько проживет microSD с Proxmox ve или с Postgres? Ну и скорость SDR104 mode - 104 Мб/с
Почему не поставить M.2 Hat+ - плату для подключения NVMe-накопителей? Разных модификаций несколько штук, даже на 2 диска(Raspberry Pi 5 PCIe to 2CH M.2 NVMe SSD Adapter Board HAT (B) Pi5-PCIe-2280-2242-2230 for PI5)
NVMe SSD boot with the Raspberry Pi 5
https://wiki.geekworm.com/NVMe_SSD_boot_with_the_Raspberry_Pi_5
Using the M.2 HAT+ with Raspberry Pi 5
https://www.raspberrypi.com/news/using-m-2-hat-with-raspberry-pi-5/Bessome Автор
09.09.2024 01:17Да, в планах есть. Вопрос не срочный, скорее финансовый. Идея - взять еще + 1 малинку и сделать кластер 1с + postgres на usb внешних дисках 2000+ под проекты.
Пока производительность для личной разработки вполне устраивает
Естественно Proxmox на такой конфигурации уже не будет.
Dynasaur
09.09.2024 01:17Напомнило статьи про запуск Дума на очередной кофеварке :-) А вообще, наверное, пора привыкать, что одноплатники стали вполне себе альтернативой ПК.
Bessome Автор
09.09.2024 01:17Энергоэффективность + небольшой размер. В условиях рабочего кабинета можно в 1 корпус запихать целую кучу малинок и свитч. Запитать от БП на 350-400 ватт.
В условиях микро-организации организовать выделенный сервер на паре или более (если кластеризация) малинок.
А еще малинка и Эверест на одной архитектуре работают, а в планах приобретение решений Эверест у меня нет
VenbergV
09.09.2024 01:17По мотивам вашей статьи.
Если устанавливать чистый сервер 1С версии платформы 8.3.25.1374 на Ubuntu Server 24.04.1, то удаление libstdc++.so.6 теперь крайне обязательно. Иначе печатать из тонкого клиента на принтеры Kyocera более одной копии документа превратиться в ад! Принтер печатает произвольное количество копий.Bessome Автор
09.09.2024 01:17Принято, но странно. Не ловил такого на продакшен, хотя сервера обновляются каждую субботу
Не сталкивались с тем, что на веб-клиенте windows 11 отображаются некорректно формы при установленных шрифтах TTF и прочих зависимостях клиента Linux+apache2?
VenbergV
09.09.2024 01:17+1Пока нет. Может шрифты побились при установке? Один два файла шрифтов качались через раз. Ловил эту проблему в 2022 году.
Я в ansible их насильно переставляю, через shell, после установки всех пакетов и настройки сервисов.
VenbergV
Хотелось бы услышать от вас уточнения по некоторым моментам:
1. Не совсем понял про связь xrdp, xfce4 и публикацию баз. Хотелось бы чуть подробнее. Т.к. всегда считал достаточным apache2. И дальше тонким клиентом, или браузером мы входим в базу.
2. libstdc++.so.6 вроде бы достаточно только удалить. Т.к. она есть в системных библиотеках. И она же нужна только для локального запуска 1С клиента на Linux. А вы вроде бы про сервер 1С рассказываете?
3. Использование .run установщика разве не более правильно для последних версий 1С? Он большинство зависимостей сам разрешает и доставляет необходимое.
4. Хотелось бы услышать о полученных результатах на RP5. Если ARM не сама цель, то пара NUC10 под proxmox могут оказаться существенно производительнее, при схожем бюджете.
P.S. Спасибо за ваш труд и что делитесь результатами.
Bessome Автор
Рдп с клиентом 1с в графическом режиме. Запускаем конфигуратор и публикуем. В прочее время в контейнере иксы не запущены и на производительность не влияют
Можно и так, просто удалить.
Релиз 8.3.24.1548 не содержит run установщика для arm
Цель про arm
HomeMan
Для пункта 1. ни какой графический конфигуратор не нужен (ни Вин, ни Лин).
Все делается из ком.строки, включая раздачу ключей сервером и регламентные задания.