Автономный сервер 1С и база на СУБД (Postgres)

В этой статье я опишу как подключить автономный сервер 1C к базе расположенной на сервере СУБД Postgres, и опишу особенности такой работы.

Введение

Я уже писал две статьи по Автономному серверу 1С:

А в данной статье я расскажу, как подключить автономный сервер к базе данных, которая находится на сервере СУБД. В моём случае это будет сервер PostgreSQL. Но автономный сервер 1С может работать со всеми серверами СУБД, с которыми работает обычный сервер 1С.

Обратите внимание! Для работы с сервером СУБД автономному серверу необходима серверная лицензия 1С.

Подготовка служебных каталогов и конфига

Во-первых, создадим служебные каталоги для нового экземпляра автономного сервера:

$ mkdir base_pg
$ mkdir base_pg/data
  • base_pg — основной каталог, сюда положим конфиг (conf.yml);
  • base_pg/data — подкаталог для служебных файлов.

Перейдём в каталог с установленной платформой 1С:

$ cd /opt/1cv8/x86_64/8.3.25.1374/

И создадим конфиг для базы:

$ ./ibcmd server config init --name=base_pg --base=/base_pg --port=8080 --address=192.168.0.25 --dbms=postgresql --database-server=192.168.0.25 --db-user=postgres --database-password=54321 --database-name=base_pg > /home/alex/base_pg/conf.yml

Рассмотрим используемые здесь опции:

  • --name — имя базы на автономном сервере;
  • --base — имя базы на встроенном веб-сервере;
  • --port — порт, на котором будет работать встроенный веб-сервер;
  • --address — адрес, на котором будет работать автономный сервер;
  • --dbms — тип СУБД сервера;
  • --database-server — адрес СУБД сервера;
  • --db-user — имя пользователя на СУБД сервере;
  • --database-password — пароль пользователя на СУБД сервере;
  • --database-name — имя базы на СУБД сервере.

Посмотрим на получившийся конфиг, он мало чем будет отличается от конфига для файловой базы:

$ cat base_pg/conf.yml
server:
  address: 192.168.0.25
  port: 8080
database:
  dbms: PostgreSQL
  server: 192.168.0.25
  name: base_pg
  user: postgres
  password: 54321
infobase:
  id: 0a58fc5f-4b0a-4b7d-a36a-96878b1c1592
  name: base_pg
  distribute-licenses: yes
  schedule-jobs: allow
  disable-local-speech-to-text: no
http:
  base: /base_pg

Здесь в секции database указаны параметры подключения к базе на сервере СУБД.

Создание базы на сервере Postgres

Создадим базу на сервере СУБД:

$ ./ibcmd infobase create --config /home/alex/base_pg/conf.yml --data='/home/alex/base_pg/data' --create-database

Проверим что база на сервере СУБД появилась:

$ sudo su - postgres -c 'psql -c "SELECT datname FROM pg_database;"'
  datname
-----------
 postgres
 base_pg
 template1
 template0
(4 строки)

Запуск автономного сервера

Запустим автономный сервер с помощью команды ibsrv. При этом необходимо указать каталог служебных файлов (base_pg/data) и конфиг (base_pg/conf.yml).

$ ./ibsrv --data='/home/alex/base_pg/data' --config /home/alex/base_pg/conf.yml
1C:Enterprise 8.3 (x86-64)  (8.3.25.1374) Stand-alone Server started. Ctrl+C to exit.
1C:Enterprise 8.3 (x86-64)  (8.3.25.1374) Stand-alone Server ready.

Так как мы запустили сервер в интерактивном режиме, то можем выключить его нажав Ctrl+C.

Создание службы SystemD

Для удобства мы можем сделать службу SystemD, с помощью которой будем включать и выключать автономный сервер.

Создадим файл службы:

$ sudo nano /etc/systemd/system/1c-base_pg.service
[Unit]
Description=Standalone server 1C for base_pg
Requires=network.target
[Service]
ExecStart=/opt/1cv8/x86_64/8.3.25.1374/ibsrv --daemon --data='/home/alex/base_pg/data' --config /home/alex/base_pg/conf.yml
Type=forking
User=alex
Group=alex
Restart=on-failure
RestartSec=1
[Install]
DefaultInstance=default
WantedBy=multi-user.target

После создания файла применим изменения и запустим службу:

$ sudo systemctl daemon-reload
$ sudo systemctl start 1c-base_pg.service

Затем можем посмотреть статус службы:

$ systemctl status 1c-base_pg.service
● 1c-base_pg.service - Standalone server 1C for base_pg
     Loaded: loaded (/etc/systemd/system/1c-base_pg.service; disabled; preset: enabled)
     Active: active (running) since Mon 2024-10-14 14:05:57 MSK; 7s ago
    Process: 3122 ExecStart=/opt/1cv8/x86_64/8.3.25.1374/ibsrv --daemon --data=/home/alex/base_pg/data --config /home/alex/base_pg/conf.yml (code=exited, status=0/SUCCESS)
   Main PID: 3123 (ibsrv)
      Tasks: 208 (limit: 4623)
     Memory: 292.8M
        CPU: 2.381s
     CGroup: /system.slice/1c-base_pg.service
             ├─3123 /opt/1cv8/x86_64/8.3.25.1374/ibsrv --daemon --data=/home/alex/base_pg/data --config /home/alex/base_pg/conf.yml
             └─3228 /opt/1cv8/x86_64/8.3.25.1374/jre/bin/java

Как видим, запускается процесс автономного сервера ibsrv и java.

Теперь, если нам нужно что-то поменять, например выключить регламентные задания, то просто редактируем конфиг (в моём случае — /home/alex/base_pg/conf.yml) и перезапускаем службу.

Подключение к базе

Подключение к базе автономного сервера 1С ничем не отличается от файлового варианта.

Про остальные способы подключения (например конфигуратором), а также про работу утилиты ibcmd можете почитать в статье про файловый вариант — здесь.


Инструкция по автономному серверу есть на сайте ИТС.

Остальные мои статьи по серверам 1С доступны здесь.

Если понравилась статья, подпишись на мой канал в VK или Telegram.

2 комментария к “Автономный сервер 1С и база на СУБД (Postgres)”

  1. вопрос на засыпку:
    — запускаем Автономный Сервер на пустую БД, в которой есть Пользователь «Administrator»:
    ‘»c:\Program Files\1cv8\8.3.24.1691\bin\ibsrv.exe» —db-path=%CD% —name=DBTemp —data=%CD%\build\tmp
    — как-то (не важно как) получаем PID процесса Автономного Сервера = 6000
    — пытаемся выполнить команду при помощи утилиты ibcmd — например:
    «c:\Program Files\1cv8\8.3.24.1691\bin\ibcmd.exe» —pid=6000 session list
    получаем интерактивный запрос Пользователя:
    Authentication in the infobase is required to perform the operation
    User:

    — если пытаемся выполнить:
    «c:\Program Files\1cv8\8.3.24.1691\bin\ibcmd.exe» —pid=6000 session list —db-user=Administrator
    получаем:
    Error parsing option: —db-user=Administrator

    — если пытаемся выполнить:
    «c:\Program Files\1cv8\8.3.24.1691\bin\ibcmd.exe» —pid=20824 session list —user=Administrator
    получаем:
    Error parsing option: —user=Administrator

    ЧЯДНТ ?

    Ответить
    • Я проводил эксперимент на базе без пользователей, попробую с пользователем и паролем. Потом отпишусь

      Ответить

Оставьте комментарий