1C/Эльбрус: различия между версиями

Материал из ALT Linux Wiki
< 1C
м (+ссылки)
 
(не показано 70 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{Тимовец|Pauli|email=pauli@altlinux.org}}
{{Тимовец|Pauli|email=pauli@altlinux.org}}
= Веб-клиент =
{{Note|Данные, приведенные в статье, проверялись с операционной системой Альт Рабочая станция 10 из дистрибутива alt-workstation-20211211-e2kv4. Оборудование и операционные системы находятся в состоянии интенсивной разработки, поэтому в вашем случае всё то же самое может работать лучше, хуже или не работать совсем. Вы предупреждены.}}
= Тонкий клиент =
== Клиент ==
= Толстый клиент =
=== Веб-клиент ===
= Автономный сервер =
Самый простой вариант. Согласно [https://v8.1c.ru/tekhnologii/sistemnye-trebovaniya-1s-predpriyatiya-8/ официальным данным], сейчас веб-клиент совместим с Mozilla Firefox версии 52 и выше. Проверить как это работает можно на сайте demo.1c.ru, например, для Бухгалтерии - по прямой [https://accounting.demo.1c.ru/accounting ссылке].
= Рабочий сервер =
=== Тонкий клиент ===
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


Только режим Предприятия.
{{Note|Здесь и далее 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
Можно запустить все виды клиентов - толстый, тонкий, веб-, и конфигуратор. Автовыбор требуемой версии.
{{Note|В консоли никаких предупреждений быть не должно. В случае появления - разбираться. }}
== Автономный сервер ==
=== Автономный сервер с файловой базой данных ===
Работает. Пример запуска:
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
{{Note|Требуется серверный ключ защиты программы}}
== Рабочий сервер кластера ==
Установить и запустить bind.
Установить и запустить bind.
Настроить доменную зону, например test.alt
Настроить доменную зону, будущий рабочий сервер должен иметь имя, принадлежащее доменной зоне.


Настроить разрешение имён на адрес, по которому слушает bind. Правильное разрешение адреса совершенно необходимо для запуска и работы рабочего сервера кластера.
Настроить разрешение имён на адрес, по которому слушает bind. Правильное разрешение адреса совершенно необходимо для запуска и работы рабочего сервера кластера.
Проверить правильность настройки удобнее всего командой
Проверить правильность настройки можно командой
  ping `hostname`
  ping `hostname`
И переключить систему инициализации сети в [[etcnet|/etc/net]], чтобы избежать варианта, когда bind запускается прежде инициализации сети - запустится, но отвечать не будет. 


Установка и запуск PostgreSQL
* Сервер DNS лучше (правильнее) размещать на отдельной машине. Адреса настроенной доменной зоны должны разрешаться на всех рабочих серверах и клиентах 1С, для этой цели удобно на основном DNS организации настроить форвардинг. Или назначить A-запись рабочего сервера прямо на основном DNS в общей доменной зоне, если возможно. В данной статье описан сценарий подготовки тестового стенда, поэтому решения некоторых задач могут отличаться от применимых при промышленном развёртывании. 
 
=== Установка и запуск PostgreSQL ===
  e801 ~ # epm install postgresql13-1C-server postgresql13-1C-contrib
  e801 ~ # epm install postgresql13-1C-server postgresql13-1C-contrib
  e801 ~ # /etc/init.d/postgresql initdb
  e801 ~ # /etc/init.d/postgresql initdb
Строка 20: Строка 67:
  e801 ~ # service postgresql status
  e801 ~ # service postgresql status


  e801 home # rpm -qa | grep rtc
  e801 ~ # rpm -qa | grep rtc
  rtc-4.1-alt1.E2K.1.e2kv4
  rtc-4.1-alt1.E2K.1.e2kv4
  ...
  ...


Создать чрут
=== Создание чрута ===
  wget http://mirror.yandex.ru/altlinux/p10/images/cloud/alt-p10-rootfs-minimal-x86_64.tar.xz
  wget http://mirror.yandex.ru/altlinux/p10/images/cloud/alt-p10-rootfs-minimal-x86_64.tar.xz
  mkdir -p /opt/x86_64
  mkdir -p /opt/x86_64
  tar -C /opt/x86_64 -xf alt-p10-rootfs-minimal-x86_64.tar.xz
  tar -C /opt/x86_64 -xf alt-p10-rootfs-minimal-x86_64.tar.xz


Определить резолвер для чрута
Определить резолвер для чрута (промышленно может пригодиться {{pkg|chrooted}})
  cp /etc/resolv.conf /opt/x86_64/etc/resolv.conf
  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
  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 home # _


Отменить (удалить) требование подписи репозитория
Отменить (удалить) требование подписи репозитория
Строка 39: Строка 86:
  [x86_64] e801 ~ # sed -i 's,\[p10\] ,,' /etc/apt/sources.list.d/alt.list
  [x86_64] e801 ~ # sed -i 's,\[p10\] ,,' /etc/apt/sources.list.d/alt.list


  [x86_64] e801 ~ # apt-get update # Работает
  [x86_64] e801 ~ # apt-get update  


Проблема сети
Проблема сети
Строка 54: Строка 101:
установить отсутствующие пакеты с помощью пакетного менеджера операционной  
установить отсутствующие пакеты с помощью пакетного менеджера операционной  
системы и заново запустить установку платформы. Отсутствующие пакеты приведены  
системы и заново запустить установку платформы. Отсутствующие пакеты приведены  
ниже и их можно скопировать в буфер обмена:
ниже и их можно скопировать в буфер обмена: <!-- если 1c-preinstall* их не тянет, надо дополнить // mike@ -->
libgtk+3 libenchant libharfbuzz-icu libgstreamer libgst-plugins libsecret  
libgtk+3 libenchant libharfbuzz-icu libgstreamer libgst-plugins libsecret libsoup libsqlite3 libGL libEGL libXrender libXfixes libxslt
libsoup libsqlite3 libGL libEGL libXrender libXfixes libxslt
Для работы клиента дополнительно потребуются:
Дополнительно:
libxapps glibc-locales fonts-ttf-ms libunwind libXt
libxapps
Полностью, одной командой:
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 ~ # apt-get install 1c-preinstall-full libxapps
Собственно развертывание:
  [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


[x86_64] e801 ~ # ./setup-full-8.3.21.1302-x86_64.run
Его можно взять за основу, предварив значение параметра ExecStart указанием на запуск в чруте rtc:


rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -- /opt/setup-full-8.3.21.1302-x86_64.run
<syntaxhighlight lang="ini">
[Unit]
Description=1C:Enterprise Server 8.3 (8.3.21.1302) (%I)
Requires=network.target


e801 ~ # rtc_opt_rel_p1_x64_ob --path_prefix /opt/x86_64 -b /tmp -b /run -b /dev -b /proc -b /home -- /opt/x86_64/opt/1cv8/x86_64/8.3.21.1302/ragent
[Service]
1C:Enterprise 8.3 (x86-64) (8.3.21.1302) Server Agent started. Ctrl+C to exit.
# 1C:Enterprise server keytab file.
1C:Enterprise 8.3 (x86-64) (8.3.21.1302) Cluster Manager started. Ctrl+C to exit.
# default - usr1cv83.keytab file in 1C:Enterprise server
1C:Enterprise 8.3 (x86-64) (8.3.21.1302) Working Process started. Ctrl+C to exit.
#          installation directory
^C
#
1C:Enterprise 8.3 (x86-64) (8.3.21.1302) Cluster Manager finished.
Environment=SRV1CV8_KEYTAB=/opt/1cv8/x86_64/8.3.21.1302/usr1cv8.keytab
1C:Enterprise 8.3 (x86-64) (8.3.21.1302) Working Process finished.
 
1C:Enterprise 8.3 (x86-64) (8.3.21.1302) Server Agent finished.
# 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


e801 ~ # cp srv1cv8.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 -b /etc -- \
e801 ~ # systemctl daemon-reload
                        /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


e801 ~ # systemctl enable srv1cv8
Restart=always
Created symlink /etc/systemd/system/multi-user.target.wants/srv1cv8.service → /etc/systemd/system/srv1cv8.service.
RestartSec=1


e801 ~ # adduser usr1cv8
[Install]
e801 ~ # groupadd grp1cv8
DefaultInstance=default
e801 ~ # chown -R usr1cv8:grp1cv8 usr1cv8
WantedBy=multi-user.target
</syntaxhighlight>


e801 home # systemctl start srv1cv8.service  
e801 ~ # cp srv1cv8.service /etc/systemd/system
e801 home # systemctl status srv1cv8.service  
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) ()
  ● srv1cv8.service - 1C:Enterprise Server 8.3 (8.3.21.1302) ()
     Loaded: loaded (/etc/systemd/system/srv1cv8.service; disabled; vendor preset: disabled)
     Loaded: loaded (/etc/systemd/system/srv1cv8.service; disabled; vendor preset: disabled)
Строка 108: Строка 232:
  ~
  ~


Сервер лцензирования
=== Сервер администрирования 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 ~ # apt-get install haspd
Подключить токен(ы), проверить видимость в системе
[x86_64] e801 ~ # /usr/sbin/usbkeytest --detect
aladdin
{{attention|Ввиду того, что установка пакета haspd производится в чрут, a USB-токен должен распознаваться основной системой, необходимо переложить или скопировать /lib/udev/rules.d/80-hasp.rules из чрута в основную систему. Перезагрузиться, убедиться что в /dev появился подкаталог ./aks/hasp/ с файлом устройства внутри}}
  [x86_64] e801 ~ # service haspd start
  [x86_64] e801 ~ # service haspd start
  [x86_64] e801 opt # /usr/sbin/usbkeytest --detect
Если ключ(и) только локальные (однопользовательский или серверный), из основной системы можно и так
aladdin
  # 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
 
<syntaxhighlight lang="ini">
[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


Клиент 1С
[Install]
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 -- /opt/1cv8/x86_64/8.3.21.1302/1cv8s
WantedBy=multi-user.target
</syntaxhighlight>


/built/src/build-v8/../src/unix/utilsunx.cpp(578): assert "*argv" failed in wxExecute(): can't exec empty command
== Совместимое оборудование ==
Данные, приведенные в статье, проверялись на оборудовании:
* [http://old.mcst.ru/elbrus_801-pc Вычислительный комплекс Эльбрус 801-РС ТВГИ.466535.175] (1шт Эльбрус 8С, архитектура e2kv4, производитель [http://mcst.ru МЦСТ]);
* [https://servers.norsi-trans.ru/upload/iblock/295/Буклет%20Яхонт%20УВМ%20Э24sff.pdf Сервер ЯХОНТ-УВМ Э24] (Rack 2U, 1шт Эльбрус 8С архитектура e2kv4, 32GB RAM, 2шт SSD 240GB, 2xGeth, 2xБП, производитель [https://servers.norsi-trans.ru/catalog/ Норси-Транс]);
* [https://servers.norsi-trans.ru/upload/iblock/abc/z7salwm8uw0vb9qa293bz86376ce9zna/Листовка%20Яхонт%20УВМ%20Б41.pdf Сервер ЯХОНТ-УВМ Б41] (Rack 2U, 4шт Эльбрус 8СВ архитектура e2kv5, 256GB RAM, 2шт SSD 240GB, 2xGeth, 2xБП, производитель [https://servers.norsi-trans.ru/catalog/ Норси-Транс]);<ref name="NVME" />
* Машина вычислительная электронная промышленная панельная М К02 ЛКНВ.466215.019.02 (1шт Эльбрус 8С, архитектура e2kv4, производитель [https://ivk.ru АО "ИВК"])<ref name="1C-demo" />


(1cv8s:11988): Gtk-WARNING **: 12:04:59.045: Could not load a pixbuf from /org/gtk/libgtk/theme/Adwaita/assets/check-symbolic.svg.
== Примечания ==
This may indicate that pixbuf loaders or the mime database could not be found.
<references>
<ref name="NVME">Дополнительное повышение производительности может быть достигнуто установкой опционального накопителя NVME, используемого под каталог баз данных. Проверялось с накопителем p5800x 400gb SSDPF21Q400GB01</ref>
<ref name="1C-demo">[[Файл:1С-elbrus-3.jpg|20px]] - фото экземпляра с демо-версией Бухгалтерии предприятия 3, впервые выставлялся на форуме «Армия-2022»</ref>
</references>


(1cv8s:11988): Gtk-WARNING **: 12:04:59.246: gtk_window_set_titlebar() called on a realized window
== Ссылки ==
* [http://1c.ru/news/info.jsp?id=30134 Поддержка процессоров Эльбрус-8С с версии 8.3.22 платформы "1С:Предприятие"]


{{Category navigation|title=1C|category=1C|sortkey=*}}
{{Category navigation|title=1C|category=1C|sortkey=*}}
{{Category navigation|title=E2K|category=E2K|sortkey=*}}
{{Category navigation|title=E2K|category=E2K|sortkey=*}}

Текущая версия от 23:06, 31 декабря 2022

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
  2. 1С-elbrus-3.jpg - фото экземпляра с демо-версией Бухгалтерии предприятия 3, впервые выставлялся на форуме «Армия-2022»

Ссылки