18.1. Установка PostgreSQL для 1С в Linux

18.1.1. Поддерживаемые дистрибутивы Linux
18.1.2. Подключение репозитория пакетов
18.1.3. Быстрая установка и настройка
18.1.4. Расширенная установка
18.1.5. Установка на рабочих станциях разработчиков
18.1.6. Настройка нескольких экземпляров PostgreSQL
18.1.7. Замечания о совместимости с антивирусами

Для систем на базе Linux PostgreSQL для 1С поставляется в виде двоичных пакетов. Все двоичные дистрибутивы PostgreSQL состоят из нескольких пакетов. Структура пакетов отличается от структуры ванильного PostgreSQL и поддерживает следующие режимы установки:

Минимальные системные требования для установки PostgreSQL, создания кластера баз данных и запуска сервера:

Для вспомогательных компонентов или данных потребуется дополнительное дисковое пространство.

18.1.1. Поддерживаемые дистрибутивы Linux

Примечание

Это последний выпуск PostgreSQL, в котором поддерживается Ubuntu 20.04. Со следующего выпуска поддержка этой операционной системы прекратится.

Примечание

Следующий выпуск PostgreSQL будет последним с поддержкой Ubuntu 24.10.

Двоичные пакеты PostgreSQL предоставляются для следующих систем на базе Linux:

  • Системы Red Hat Enterprise Linux (RHEL) и производные от них: CentOS 7/8, Rocky Linux 8/9, Red Hat Enterprise Linux 7/8/9, Oracle Linux 7/8/9, РЕД ОС МУРОМ 7.3/8, AlterOS 7.5, AlmaLinux 9

  • Системы на базе Debian: Debian 10/11/12, Ubuntu 20.04/22.04/24.04, Astra Linux 1.7/1.8

  • Альт 8/9/10/11, Альт Линукс СПТ 7.0, Альт СП 8/8.2 и выше, Альт СП релиз 10

  • SUSE Linux Enterprise Server (SLES) 12/15

Примечание

Двоичные пакеты PostgreSQL используют библиотеку tzdata, предоставляемую операционной системой, поэтому важно, чтобы в системе была установлена последняя её версия. В случае использования устаревшей библиотеки tzdata значения времени в вашей базе данных могут быть некорректными.

18.1.2. Подключение репозитория пакетов

Перед установкой PostgreSQL из двоичных пакетов (с помощью менеджера пакетов вашей операционной системы) необходимо подключить репозиторий пакетов PostgreSQL.

Для подключения репозитория выполните следующие действия:

  1. Перейдите на страницу загрузки PostgreSQL для 1С и нажмите кнопку загрузки.

  2. Заполните опросник, чтобы получить инструкции по установке. Эти инструкции будут высланы на адрес электронной почты, указанный в опроснике.

  3. Загрузите Bash-скрипт pgpro-repo-add.sh по ссылке из письма с инструкциями.

    Этот скрипт подключит репозиторий, чтобы менеджер пакетов вашей операционной системы мог использовать его.

  4. Убедитесь, что утилита wget установлена и имеет доступ в Интернет.

    Скрипту необходима утилита wget и доступ в Интернет, чтобы проверить доступность репозитория в ходе его подключения.

    Примечание

    Для доступа в Интернет невозможно использовать SOCKS5-прокси, поскольку в wget отсутствует поддержка прокси этого типа.

  5. (Необязательно) При необходимости проверьте содержимое файла со скриптом.

  6. Запустите скрипт от имени пользователя root (например, используя sudo).

Теперь все готово к установке PostgreSQL для 1С с помощью менеджера пакетов вашей операционной системы.

18.1.3. Быстрая установка и настройка

Если вам нужно установить только один экземпляр PostgreSQL и вы не собираетесь использовать никакие другие продукты на базе PostgreSQL в вашей системе, вы можете использовать режим быстрой установки. Типичная процедура установки в этом случае выглядит так:

  1. Подключите репозиторий пакетов, предназначенный для вашей операционной системы.

  2. Установите пакет postgrespro-1c-13. При этом по зависимостям установятся все требуемые компоненты, будет создана база данных по умолчанию, запущен сервер баз данных и настроен автозапуск сервера при загрузке системы, а все предоставляемые программы станут доступными в пути PATH.

Примечание

По умолчанию конфигурация базы данных настраивается под устанавливаемый продукт PostgreSQL. Если вам нужна другая настройка сервера базы данных, выберите расширенную установку и воспользуйтесь аргументом tune команды pg-setup initdb.

После завершения установки вы можете запустить psql от имени пользователя postgres и подключиться к только что созданной базе данных, находящейся в каталоге данных /var/lib/pgpro/1c-13/data.

Так как база данных по умолчанию создаётся скриптом pg-setup, путь к каталогу данных сохраняется в файле /etc/default/postgrespro-1c-13. Все последующие команды pg-setup, а также любые команды, управляющие службой PostgreSQL, будут нацелены именно на эту базу данных. Кроме того, в указанном файле можно изменить значение PG_OOM_ADJUST_VALUE для дочерних процессов postmaster (за подробностями обратитесь к Подразделу 19.4.4).

18.1.4. Расширенная установка

Разделение дистрибутива на несколько пакетов позволяет произвести инсталляцию по-разному для различных применений: для серверов баз данных, клиентских систем или рабочих станций разработчиков. Такие инсталляции необходимо настраивать вручную, но это даёт дополнительную гибкость при использовании продукта. Вы можете установить несколько версий PostgreSQL параллельно, а также вместе с другими продуктами PostgreSQL. В частности, это может потребоваться при осуществлении обновления или при миграции с другого продукта на базе PostgreSQL.

Для осуществления расширенной установки выполните следующие действия:

  1. Подключите репозиторий пакетов, предназначенный для вашей операционной системы.

  2. Выберите пакеты PostgreSQL, требующиеся для ваших целей, и установите их с помощью стандартных для вашего дистрибутива Linux команд. Доступные пакеты перечислены в Таблице 18.1.

    В результате все файлы будут установлены в каталог /opt/pgpro/1c-13.

  3. Запустите от имени root утилиту pg-wrapper, чтобы добавить и клиентские, и серверные установленные программы в путь поиска PATH, а также включить страницы man по SQL в файл конфигурации страниц man. Эта утилита входит в состав пакета postgrespro-1c-13-client.

    /opt/pgpro/1c-13/bin/pg-wrapper links update

    Подробнее о разрешении возможных конфликтов рассказывается в pg-wrapper.

  4. Если вы устанавливаете пакет postgrespro-1c-13-server, выполните следующую процедуру настройки сервера:

    1. Создайте начальную базу данных, запустив вспомогательный скрипт pg-setup от имени root с ключом initdb:

      /opt/pgpro/1c-13/bin/pg-setup initdb [--tune=конфигурация] [параметры_initdb]

      Здесь:

      • Аргумент tune выбирает вариант конфигурации базы данных.

      • параметры_initdb — обычные параметры initdb.

      Примечание

      По умолчанию pg-setup инициализирует кластер баз данных со включёнными контрольными суммами. Если для вас это нежелательно, укажите --no-data-checksums.

      Скрипт pg-setup выполняет административные операции с базами данных от имени пользователя postgres. Если вы не укажете никакие параметры initdb, база по умолчанию создаётся в каталоге /var/lib/pgpro/1c-13/data с параметрами локализации, определяемыми переменной окружения LANG текущего сеанса. Переменные окружения LC_* при этом игнорируются.

      Так как база данных по умолчанию создаётся скриптом pg-setup, путь к каталогу данных сохраняется в файле /etc/default/postgrespro-1c-13. Все последующие команды pg-setup, а также любые команды, управляющие службой PostgreSQL, будут нацелены именно на эту базу данных. Кроме того, в указанном файле можно изменить значение PG_OOM_ADJUST_VALUE для дочерних процессов postmaster (за подробностями обратитесь к Подразделу 19.4.4).

    2. Запустите сервер с помощью pg-setup от имени root следующим образом:

      /opt/pgpro/1c-13/bin/pg-setup service start

      Как и сервер ванильного PostgreSQL, сервер PostgreSQL работает под именем пользователя postgres.

      Примечание

      По умолчанию автоматический запуск сервера отключён, чтобы вы могли вручную управлять восстановлением базы данных после перезагрузки системы. Однако вы можете настроить и автоматический запуск сервера PostgreSQL. За подробностями обратитесь к Подразделу 18.1.4.2.

18.1.4.1. Выбор устанавливаемых пакетов

В следующей таблице перечислены все имеющиеся пакеты PostgreSQL.

Таблица 18.1. Пакеты PostgreSQL

Пакет

Описание

postgrespro-1c-13

Пакет верхнего уровня, устанавливающий и настраивающий PostgreSQL для серверных и клиентских систем. Не используйте этот пакет при обновлении или миграции.

Важно

При установке пакета postgrespro-1c-13 могут быть удалены существующие инсталляции продуктов на базе PostgreSQL и PostgreSQL. И напротив, установленный пакет PostgreSQL может быть автоматически удалён, если вы впоследствии развернёте другой продукт на базе PostgreSQL.

postgrespro-1c-13-client

Стандартные клиентские приложения, такие как psql и pg_dump.

postgrespro-1c-13-libs

Общие библиотеки, требующиеся для развёртывания клиентских приложений, включая libpq; библиотеки времени выполнения для обработчика ECPG.

postgrespro-1c-13-server

Сервер PostgreSQL и серверный язык программирования PL/pgSQL.

postgrespro-1c-13-contrib

Дополнительные расширения и программы, разворачиваемые на серверах баз данных.

postgrespro-1c-13-devel

Заголовочные файлы и библиотеки для разработки клиентских приложений и серверных расширений.

В системах на базе Debian этот пакет называется postgrespro-1c-13-dev.

postgrespro-1c-13-plperl

Реализация языка Perl для программирования на стороне сервера (см. Главу 46).

postgrespro-1c-13-plpython

Реализация языка Python для программирования на стороне сервера (см. Главу 47).

postgrespro-1c-13-plpython3

Реализация языка Python 3 для программирования на стороне сервера (см. Главу 47).

postgrespro-1c-13-pltcl

Реализация языка Tcl для программирования на стороне сервера (см. Главу 45).

postgrespro-1c-13-docs

Документация на английском языке.

postgrespro-1c-13-docs-ru

Документация на русском языке.

postgrespro-1c-13-test

Тестовые скрипты для сервера.

Этот пакет представлен только для систем на базе RHEL и SUSE.

postgrespro-1c-13-jit

Этот пакет обеспечивает поддержку JIT-компиляции.

Этот пакет предоставляется только для поддерживаемых систем Debian и Ubuntu, Astra Linux 1.7/1.8, Альт 8/9/10/11, Альт СП 8/8.2 и выше, Альт СП релиз 10, CentOS 7/8, Rocky Linux 8/9, Oracle Linux 7/8/9, AlmaLinux 9, SLES 15 и RHEL 7/8/9.

Чтобы узнать об использовании JIT больше, обратитесь к Главе 32.


Также PostgreSQL включает библиотеки и утилиты, необходимые для предоставляемых пакетов и сервера PostgreSQL. Эти пакеты предоставляются только для дистрибутивов, в которых отсутствует требуемая версия таких библиотек.

Таблица 18.2. Сторонние библиотеки и утилиты, собранные для PostgreSQL для 1С

Библиотека/утилита

Описание

libunwind

Библиотека для раскрутки стека, используемая параметром crash_info. Предоставляется для RHEL 8 и SLES 12.

libbacktrace

Библиотека для обратной трассировки стека, используемая параметром crash_info. Предоставляется для AlterOS 7, Альт 9, Альт СП 8.2, РЕД ОС МУРОМ 7.3/8, RHEL 8/9 и SLES 12.

perl-IO-Tty, perl-IPC-Run

Две библиотеки Perl, используемые в рамках TAP-тестирования и доступные в пакете postgrespro-1c-13-devel для разработчиков расширений и инженеров. perl-IO-Tty предоставляется для RHEL 8/9, SLES 12, а perl-IPC-Run — для RHEL 8/9, SLES 12/15.


Кроме того, PostgreSQL предоставляет отдельные пакеты с отладочной информацией для некоторых операционных систем:

  • В системах на базе Debian это пакет postgrespro-1c-13-dbg.

  • В системах на базе RHEL это пакет postgrespro-1c-13-debuginfo.

  • В ОС Альт Линукс для всех пакетов с двоичными файлами имеются соответствующие пакеты -debuginfo.

Для серверных инсталляций требуются как минимум следующие пакеты:

  • postgrespro-1c-13-server

  • postgrespro-1c-13-client

  • postgrespro-1c-13-libs

Для использования дополнительных расширений PostgreSQL вы должны также установить пакет postgrespro-1c-13-contrib. В системах на базе Debian пакет postgrespro-1c-13-server зависит от пакета postgrespro-1c-13-contrib, поэтому последний должен всегда устанавливаться вместе с сервером.

Для клиентских инсталляций обычно достаточно установить пакеты postgrespro-1c-13-client и postgrespro-1c-13-libs. Если вы используете независимые приложения и вам не нужны стандартные клиентские утилиты, такие как psql, вы можете установить только пакет postgrespro-1c-13-libs.

Для рабочих станций разработчиков необходимый минимум составляют следующие пакеты:

  • postgrespro-1c-13-libs

  • postgrespro-1c-13-devel/ postgrespro-1c-13-dev

Также вы можете установить и настроить сервер с тестовой базой данных. Подробнее о настройке, которая может потребоваться дополнительно, рассказывается в Подразделе 18.1.5.

18.1.4.2. Настройка автоматического запуска сервера

Если вы производите расширенную установку, автоматический запуск сервера по умолчанию отключается. После создания базы данных по умолчанию вы можете настроить автоматический запуск сервера при загрузке системы, используя имеющиеся в вашей операционной системе механизмы управления службами или сторонние средства обеспечения высокой степени доступности. Для облегчения этой задачи в пакете postgrespro-1c-13-server поставляется скрипт pg-setup, помещаемый в каталог /opt/pgpro/1c-13/bin.

Для настройки автозапуска сервера запустите скрипт pg-setup со следующими параметрами:

pg-setup service enable

Если требуется, вы можете отключить автозапуск сервера, используя тот же скрипт:

pg-setup service disable

Вы также можете использовать системные средства управления службами, непосредственно задействуя скрипты для систем инициализации SysV init.d и systemd, предоставляемые в пакете postgrespro-1c-13-server. В зависимости от дистрибутива Linux PostgreSQL поддерживает следующие механизмы управления службами:

Дистрибутив Linux

Предоставляемые скрипты

RHEL 7/8 и совместимые дистрибутивы, SLES 12/15

Файл службы systemd

Debian, Ubuntu, Альт 8/9/10/11

И файл службы systemd, и скрипт init.d в стиле SysV

Для включения автоматического запуска сервера средствами systemd выполните следующую команду:

systemctl enable postgrespro-1c-13

Для использования скрипта init.d в стиле SysV:

  • В системах Альт Линукс выполните следующую команду:

    systemctl enable postgrespro-1c-13
  • В системах Debian воспользуйтесь скриптом update-rc.d. За подробностями обратитесь к соответствующей странице man.

18.1.5. Установка на рабочих станциях разработчиков

Хотя может быть достаточно установить пакеты postgrespro-1c-13-libs и postgrespro-1c-13-devel/postgrespro-1c-13-dev, обычно на машинах разработчиков удобно иметь и установленный сервер. Для быстрой установки вы можете воспользоваться пакетом postgrespro-1c-13, который автоматически настроит предоставляемые клиентские и серверные программы, а также создаст начальную базу данных. Однако если вы планируете использовать одновременно несколько продуктов на базе PostgreSQL, следуйте инструкциям по расширенной установке, приведённым в Подразделе 18.1.4.

Чтобы скомпилировать программы с библиотеками PostgreSQL, используя утилиту pg_config, поставляемую с PostgreSQL, необходимо, чтобы её путь был указан в переменной PATH до путей каких-либо других версий pg_config. Заметьте, что в системах на базе RHEL pg_config не добавляется в PATH автоматически. Если в вашей системе нет других версий pg_config, вы можете воспользоваться утилитой pg-wrapper, поставляемой в пакете postgrespro-1c-13-client, для создания символической ссылки на pg_config в стандартном каталоге исполняемых файлов.

Для компиляции программ с использованием pkg-config добавьте путь /opt/pgpro/1c-13/lib/pkgconfig/ в переменную среды PKG_CONFIG_PATH.

Если вы хотите компилировать расширения PostgreSQL с поддержкой встраивания JIT, выполните дополнительные требования:

  • Установите пакет LLVM для разработки и компилятор Clang. Вы должны выбрать пакеты той же версии, какая использовалась для сборки пакета postgrespro-1c-13-jit, устанавливаемом на сервере. Определить версию, требующуюся для текущего выпуска PostgreSQL, вы можете по значению CLANG в файле /opt/pgpro/1c-13/lib/pgxs/src/Makefile.global.

  • Выполняя команды make и make install, добавьте параметр with-llvm=yes для компиляции и установки файлов с битовым кодом для вашего расширения. По умолчанию компиляции битового кода отключена, так как она зависит от доступности компилятора Clang.

18.1.5.1. Использование сторонних программ с PostgreSQL

Чтобы использовать сервер PostgreSQL с клиентской программой из стороннего продукта, вы можете установить версию библиотек PostgreSQL, с которыми компилировалась эта программа. Например, если программа поставляется в составе ванильного PostgreSQL, вам может потребоваться установить пакеты libpq или postgresql-libs, предоставляемые для вашего дистрибутива Linux. В этом случае программа, возможно, не будет использовать некоторые новые возможности сервера PostgreSQL, но скорее всего она и не поддерживает их.

Если вы предпочитаете использовать библиотеки PostgreSQL со сторонней программой или хотели бы задействовать новую возможность, которая не требует изменения самого клиентского приложения, например, проверку подлинности SCRAM, вы можете перекомпилировать вашу программу с библиотеками PostgreSQL.

Важно

Если программа скомпилирована с одной версией libpq, а используется с другой, её стабильная работа не гарантируется.

Если вы создаёте пакеты .rpm или .deb для вашей программы, рекомендуется сделать следующее:

  1. Добавьте путь /opt/pgpro/1c-13/bin в переменную PATH в сборочных скриптах (в файле .spec или debian/rules).

  2. Добавьте postgrespro-1c-13-dev в теги BuildDepends или BuildRequires описания пакета вашей программы.

Тем самым вы обеспечите вызов в процессе создания пакетов нужной версии pg_config при каждой пересборке пакета исходного кода.

18.1.6. Настройка нескольких экземпляров PostgreSQL

Чтобы настроить в Linux несколько экземпляров сервера PostgreSQL с разными каталогами данных, нужно проделать следующее:

  1. Установите и настройте PostgreSQL, следуя указаниям в Подразделе 18.1.3 или Подразделе 18.1.4.

  2. После создания начальной базы данных запустите initdb и укажите путь к другому каталогу данных и любые другие параметры, требующиеся для инициализации другого экземпляра сервера.

  3. Задайте другие порты для экземпляров серверов в соответствующих файлах postgresql.conf, чтобы не допустить конфликтов.

  4. Если требуется, настройте автоматический запуск сервера следующим образом:

    1. Создайте копию файла /etc/init.d/postgrespro-1c-13 или /lib/systemd/system/postgrespro-1c-13.service с другим именем и поменяйте в ней путь к каталогу данных.

    2. Включите автоматический запуск сервера, используя скрипты автозапуска, предоставленные для вашего системного механизма управления службами, вместо pg-setup, как описано в Подразделе 18.1.4.2. Убедитесь в том, что вы используете переименованные копии скриптов, созданные на шаге 1.

18.1.7. Замечания о совместимости с антивирусами

Настоятельно не рекомендуется использовать антивирусное ПО в системах, где работает PostgreSQL, так как антивирус создаёт дополнительную нагрузку и может оказывать непредсказуемое влияние на работу базы данных, что чревато проблемами с производительностью и надёжностью. Если вам необходимо использовать антивирусное ПО, обязательно добавьте в исключения антивируса следующие каталоги, так как они не содержат исполняемых файлов:

  • Каталог PGDATA с основными данными кластера (обычно /var/lib/pgpro/1c-13/data или другой каталог, заданный в параметрах initdb)

  • Каталоги созданных табличных пространств