1C/Эльбрус

Материал из ALT Linux Wiki
Alt linux team.png Этот участник состоит в ALT Linux Team под ником Pauli.

e-mail: Pauli@altlinux.org


Примечание: Данные, приведенные в статье, проверялись с операционной системой Альт Рабочая станция 10 из дистрибутива alt-workstation-20211211-e2kv4. Оборудование и операционные системы находятся в состоянии интенсивной разработки, поэтому в вашем случае всё то же самое может работать лучше, хуже или не работать совсем. Вы предупреждены.

Клиент

Веб-клиент

Самый простой вариант. Согласно официальным данным, сейчас веб-клиент совместим с Mozilla Firefox версии 52 и выше. Проверить как это работает можно на сайте demo.1c.ru, например, для Бухгалтерии - по прямой ссылке.

Тонкий клиент

bash-4.4$ rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/1cv8/x86_64/8.3.18.1741/1cv8c

Только режим Предприятия.

Примечание: Здесь и далее rtc_opt_rel_p1_x64_ob для систем на процессорах 8С, для 8СВ - rtc_opt_rel_p9_x64_ob

Толстый клиент

bash-4.4$ rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/1cv8/x86_64/8.3.18.1741/1cv8

Интерактивный запуск клиента конкретной версии

bash-4.4$ rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/1cv8/x86_64/8.3.18.1741/1cv8s

Все режимы клиента - толстый, тонкий, веб-, и конфигуратор.

Через программу запуска

bash-4.4$ rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/1cv8/common/1cestart

Можно запустить все виды клиентов - толстый, тонкий, веб-, и конфигуратор. Автовыбор требуемой версии.

Примечание: В консоли никаких предупреждений быть не должно. В случае появления - разбираться.


Автономный сервер

Автономный сервер с файловой базой данных

Работает. Пример запуска:

bash-4.4$ rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/1cv8/x86_64/8.3.21.1302/ibsrv --data=/home/1cdata --address=any
1C:Enterprise 8.3 (x86-64)  (8.3.21.1302) Stand-alone Server started. Ctrl+C to exit.
1C:Enterprise 8.3 (x86-64)  (8.3.21.1302) Stand-alone Server ready.

В нашем примере заранее заранее подготовленный файл базы данных располагается в /home/1cdata/db-data/, параметр --address=any указывает принимать подключения с любых доступных интерфейсов (по умолчанию только с localhost). В данном случае приложение успешно (вплоть до остановки сервера по Ctrl+C) открывается по адресу http://e801.test.alt:8314

Автономный сервер с SQL-базой данных

e801 ~ # rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -- /opt/1cv8/x86_64/8.3.21.1302/ibsrv --data=/home/1cdata --address=any --dbms=PostgreSQL --db-name=Accounting --db-server=localhost --db-user=postgres
1C:Enterprise 8.3 (x86-64)  (8.3.21.1302) Stand-alone Server started. Ctrl+C to exit.
1C:Enterprise 8.3 (x86-64)  (8.3.21.1302) Stand-alone Server ready.

С правами обычного пользователя:

bash-4.4$ rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/1cv8/x86_64/8.3.21.1302/ibsrv --data=/home/1cdata --address=any --dbms=PostgreSQL --db-name=Accounting --db-server=localhost --db-user=postgres
1C:Enterprise 8.3 (x86-64)  (8.3.21.1302) Stand-alone Server started. Ctrl+C to exit.
1C:Enterprise 8.3 (x86-64)  (8.3.21.1302) Stand-alone Server ready.

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

Примечание: Требуется серверный ключ защиты программы


Рабочий сервер кластера

Установить и запустить bind. Настроить доменную зону, будущий рабочий сервер должен иметь имя, принадлежащее доменной зоне.

Настроить разрешение имён на адрес, по которому слушает bind. Правильное разрешение адреса совершенно необходимо для запуска и работы рабочего сервера кластера. Проверить правильность настройки можно командой

ping `hostname`

И переключить систему инициализации сети в /etc/net, чтобы избежать варианта, когда bind запускается прежде инициализации сети - запустится, но отвечать не будет.

  • Сервер DNS лучше (правильнее) размещать на отдельной машине. Адреса настроенной доменной зоны должны разрешаться на всех рабочих серверах и клиентах 1С, для этой цели удобно на основном DNS организации настроить форвардинг. Или назначить A-запись рабочего сервера прямо на основном DNS в общей доменной зоне, если возможно. В данной статье описан сценарий подготовки тестового стенда, поэтому решения некоторых задач могут отличаться от применимых при промышленном развёртывании.

Установка и запуск PostgreSQL

e801 ~ # epm install postgresql13-1C-server postgresql13-1C-contrib
e801 ~ # /etc/init.d/postgresql initdb
e801 ~ # chkconfig postgresql on
e801 ~ # service postgresql start
e801 ~ # service postgresql status
e801 ~ # rpm -qa | grep rtc
rtc-4.1-alt1.E2K.1.e2kv4
...

Создание чрута

wget http://mirror.yandex.ru/altlinux/p10/images/cloud/alt-p10-rootfs-minimal-x86_64.tar.xz
mkdir -p /opt/x86_64
tar -C /opt/x86_64 -xf alt-p10-rootfs-minimal-x86_64.tar.xz

Определить резолвер для чрута (промышленно может пригодиться chrooted)

cp /etc/resolv.conf /opt/x86_64/etc/resolv.conf
e801 ~ # PS1="[x86_64] $PS1" rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -- /bin/bash
[x86_64] e801 home # _

Отменить (удалить) требование подписи репозитория

[x86_64] e801 ~ # sed -i 's,\[p10\] ,,' /etc/apt/sources.list.d/yandex.list
[x86_64] e801 ~ # sed -i 's,\[p10\] ,,' /etc/apt/sources.list.d/alt.list
[x86_64] e801 ~ # apt-get update 

Проблема сети

[x86_64] e801 ~ # ping `hostname`; echo $?
254
[x86_64] e801 ~ # apt-get install bind-utils
[x86_64] e801 ~ # host `hostname`
;; reply from unexpected source: 192.168.1.1#53, expected 192.168.1.1#53
;; reply from unexpected source: 192.168.1.1#53, expected 192.168.1.1#53
;; connection timed out; no servers could be reached

Информация: ... Чтобы установка платформы "1С:Предприятие" завершилась успешно, необходимо самостоятельно установить отсутствующие пакеты с помощью пакетного менеджера операционной системы и заново запустить установку платформы. Отсутствующие пакеты приведены ниже и их можно скопировать в буфер обмена:

libgtk+3 libenchant libharfbuzz-icu libgstreamer libgst-plugins libsecret libsoup libsqlite3 libGL libEGL libXrender libXfixes libxslt

Для работы клиента дополнительно потребуются:

libxapps glibc-locales fonts-ttf-ms libunwind libXt

Полностью, одной командой:

apt-get install -y libgtk+3 libenchant libharfbuzz-icu libgstreamer libgst-plugins libsecret libsoup libsqlite3 libGL libEGL libXrender libXfixes libxslt libxapps glibc-locales libunwind libXt fonts-ttf-ms

Собственно развертывание:

[x86_64] e801 ~ # ./setup-full-8.3.21.1393-x86_64.run

или

rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/setup-full-8.3.21.1393-x86_64.run

Первый запуск, пока в режиме приложения:

e801 ~ # rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/x86_64/opt/1cv8/x86_64/8.3.21.1393/ragent
1C:Enterprise 8.3 (x86-64) (8.3.21.1393) Server Agent started. Ctrl+C to exit.
1C:Enterprise 8.3 (x86-64) (8.3.21.1393) Cluster Manager started. Ctrl+C to exit.
1C:Enterprise 8.3 (x86-64) (8.3.21.1393) Working Process started. Ctrl+C to exit.
^C
1C:Enterprise 8.3 (x86-64) (8.3.21.1393) Cluster Manager finished.
1C:Enterprise 8.3 (x86-64) (8.3.21.1393) Working Process finished.
1C:Enterprise 8.3 (x86-64) (8.3.21.1393) Server Agent finished.

При первом запуске в профиле пользователя, в подкаталоге .1cv8, формируются данные кластера.

Юнит-файл systemd

/etc/systemd/system/srv1cv8.service

В каталоге установки, в данном случае /opt/1cv8/x86_64/8.3.21.1302/, должен быть шаблон юнит-файла systemd, файл srv1cv8-8.3.21.1302@.service

Его можно взять за основу, предварив значение параметра ExecStart указанием на запуск в чруте rtc:

[Unit]
Description=1C:Enterprise Server 8.3 (8.3.21.1302) (%I)
Requires=network.target

[Service]
# 1C:Enterprise server keytab file.
# default - usr1cv83.keytab file in 1C:Enterprise server
#           installation directory
#
Environment=SRV1CV8_KEYTAB=/opt/1cv8/x86_64/8.3.21.1302/usr1cv8.keytab

# Cluster agent main port
Environment=SRV1CV8_PORT=1540

# Cluster main port for default cluster.
# This port is used by the cluster agent to address
# the central server. Cluster port is also specified
# as the IP port of the working server.
Environment=SRV1CV8_REGPORT=1541

# Port range for connection pool
# example values:
#   45:49
#   45:67,70:72,77:90
Environment=SRV1CV8_RANGE=1560:1591

# 1C:Enterprise server configuration debug mode
# empty value - off
# -debug - on
Environment=SRV1CV8_DEBUG=

# Path to directory with cluster data
Environment=SRV1CV8_DATA=/home/usr1cv8/.1cv8/1C/1cv8

# Security level:
# 0 - default - unprotected connections
# 1 - protected connections only for the time of user
#     authentication
# 2 - permanently protected connections
Environment=SRV1CV8_SECLEV=0

# Check period for connection loss detector, milliseconds
Environment=SRV1CV8_PINGPERIOD=1000

# Response timeout for connection loss detector, milliseconds
Environment=SRV1CV8_PINGTIMEOUT=5000


Type=simple
User=usr1cv8
Group=grp1cv8

ExecStart=rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- \
                        /opt/1cv8/x86_64/8.3.21.1302/ragent \
                        -d ${SRV1CV8_DATA} \
                        -port ${SRV1CV8_PORT} \
                        -regport ${SRV1CV8_REGPORT} \
                        -range ${SRV1CV8_RANGE} \
                        -seclev ${SRV1CV8_SECLEV} \
                        -pingPeriod ${SRV1CV8_PINGPERIOD} \
                        -pingTimeout ${SRV1CV8_PINGTIMEOUT} \
                        $SRV1CV8_DEBUG

Restart=always
RestartSec=1

[Install]
DefaultInstance=default
WantedBy=multi-user.target
e801 ~ # cp srv1cv8.service /etc/systemd/system
e801 ~ # systemctl daemon-reload
e801 ~ # systemctl enable srv1cv8
Created symlink /etc/systemd/system/multi-user.target.wants/srv1cv8.service → /etc/systemd/system/srv1cv8.service.
e801 ~ # adduser usr1cv8 
e801 ~ # groupadd grp1cv8
e801 ~ # chown -R usr1cv8:grp1cv8 usr1cv8
e801 home # systemctl start srv1cv8.service 
e801 home # systemctl status srv1cv8.service 
● srv1cv8.service - 1C:Enterprise Server 8.3 (8.3.21.1302) ()
    Loaded: loaded (/etc/systemd/system/srv1cv8.service; disabled; vendor preset: disabled)
    Active: active (running) since Wed 2022-05-11 13:50:23 MSK; 1h 37min ago
  Main PID: 6134 (ragent)
     Tasks: 164 (limit: 8560)
    Memory: 1.7G
       CPU: 9min 54.330s
    CGroup: /system.slice/srv1cv8.service
            ├─6134 /usr/bin/rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -- /opt/1cv8/x86_64/8.3.21.1302/rage>
            ├─6143 [rtc compiler #0 for pid 6134] /opt/1cv8/x86_64/8.3.21.1302/ragent
            ├─6145 [rtc compiler #1 for pid 6134] /opt/1cv8/x86_64/8.3.21.1302/ragent
            ├─6159 /usr/bin/rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -x86_arg0 /opt/1cv8/x86_64/8.3.21.13>
            ├─6169 [rtc compiler #0 for pid 6159] /opt/1cv8/x86_64/8.3.21.1302/rmngr
            ├─6171 [rtc compiler #1 for pid 6159] /opt/1cv8/x86_64/8.3.21.1302/rmngr
            ├─6324 /usr/bin/rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -x86_arg0 /opt/1cv8/x86_64/8.3.21.13>
            ├─6331 [rtc compiler #0 for pid 6324] /opt/1cv8/x86_64/8.3.21.1302/rphost
            └─6333 [rtc compiler #1 for pid 6324] /opt/1cv8/x86_64/8.3.21.1302/rphost
мая 11 13:50:23 e801.test.alt systemd[1]: Started 1C:Enterprise Server 8.3 (8.3.21.1302) ().
мая 11 13:50:28 e801.test.alt systemd[1]: /etc/systemd/system/srv1cv8.service:68: DefaultInstance= only makes sense for template units, ignoring.
~

Сервер администрирования RAS

bash-4.4$ rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -b /etc -- /opt/1cv8/x86_64/8.3.21.1302/ras cluster --port=1545 1C:Enterprise 8.3 (x86-64) (8.3.18.1741) Remote Administration Server started. Ctrl+C to exit.

В каталоге установки, в данном случае /opt/1cv8/x86_64/8.3.21.1302/, должен быть шаблон юнит-файла systemd для ras, файл ras-8.3.21.1302.service. Если его скопировать в /etc/systemd/system/ и отредактировать

ExecStart=rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -- \

Можно будет запускать ras через systemctl.

Ключи лицензирования

[x86_64] e801 ~ # apt-get install haspd

Подключить токен(ы), проверить видимость в системе

[x86_64] e801 ~ # /usr/sbin/usbkeytest --detect
aladdin
Внимание! Ввиду того, что установка пакета haspd производится в чрут, a USB-токен должен распознаваться основной системой, необходимо переложить или скопировать /lib/udev/rules.d/80-hasp.rules из чрута в основную систему. Перезагрузиться, убедиться что в /dev появился подкаталог ./aks/hasp/ с файлом устройства внутри
[x86_64] e801 ~ # service haspd start

Если ключ(и) только локальные (однопользовательский или серверный), из основной системы можно и так

# rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /home -b /tmp -b /run/dbus -b /dev -b /proc -- /bin/sh -c /usr/sbin/aksusbd

Юнит-файл systemd /etc/systemd/system/aksusbd.service

[Unit]
Description=Sentinel LDK Runtime Environment (aksusbd daemon)
Before=hasplmd.service
Requires=

[Service]
Type=forking
ExecStart=rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -- \
/bin/sh -c /usr/sbin/aksusbd

[Install]
WantedBy=multi-user.target

Совместимое оборудование

Данные, приведенные в статье, проверялись на оборудовании:

Примечания

  1. Дополнительное повышение производительности может быть достигнуто установкой опционального накопителя NVME, используемого под каталог баз данных. Проверялось с накопителем модель p5800x 400gb SSDPF21Q400GB01