К статье
Практический материал

Администрирование · 13 мин

Установка PostgreSQL для 1С на Ubuntu: полное руководство

Установка и настройка PostgreSQL для 1С на Ubuntu: выбор сборки, репозиторий, параметры postgresql.conf, создание базы, типичные ошибки и проверка результата.

Работа 1С:Предприятия в клиент-серверном режиме на Linux чаще всего строится на связке «сервер 1С + PostgreSQL». Обычная поставка PostgreSQL из стандартных репозиториев Ubuntu для этого не подходит: платформа 1С требует специальную сборку СУБД с патчами, которые меняют поведение блокировок и обработку некоторых типов данных. Поэтому установка сводится не к одной команде apt, а к осмысленной последовательности: выбор сборки, установка, настройка конфигурации, создание базы и проверка.

Ниже описан рабочий порядок действий для Ubuntu Server 20.04/22.04 LTS. Команды приведены для сценария, когда PostgreSQL и сервер 1С стоят на одной машине, но все шаги применимы и к раздельной схеме — отличия отмечены отдельно. Перед началом убедитесь, что у вас есть права root или sudo-доступ и сервер имеет достаточно оперативной памяти: для небольшой базы на 5–10 пользователей разумный минимум — 8 ГБ на весь сервер.

Почему для 1С нельзя взять обычный PostgreSQL из репозитория Ubuntu

Платформа 1С:Предприятие работает с СУБД через собственный слой доступа и предъявляет к PostgreSQL нестандартные требования. Ванильная сборка из репозитория Ubuntu не содержит патчей, которые 1С использует для управления управляемыми блокировками, и имеет отличия в обработке типов данных и сортировке строк. Попытка развернуть базу на стандартном пакете чаще всего заканчивается ошибками при создании информационной базы или непредсказуемыми проблемами под нагрузкой.

Есть три практических варианта сборки. Первый — пакеты PostgreSQL, опубликованные фирмой «1С» на портале releases.1c.ru: они бесплатны и официально поддерживаются платформой. Второй — PostgresPro Standard или Certified: платные дистрибутивы с коммерческой поддержкой, актуальные для организаций, где требуется сертификация или гарантированная реакция вендора. Третий — сборка из исходников с наложением патчей: вариант для опытных администраторов, он даёт гибкость, но усложняет обновления.

Сравнение вариантов сборки PostgreSQL

Сборка с портала 1С

Бесплатна, официально совместима с платформой. Ограничение: обновления выходят с задержкой, поддержки вендора нет.

PostgresPro Standard/Certified

Подходит для организаций с требованиями к поддержке и сертификации. Ограничение: платная лицензия.

Сборка из исходников

Полный контроль над версией и патчами. Ограничение: высокий порог входа, обновления и безопасность — целиком ваша зона ответственности.

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

Подготовка системы: локали, пакеты и пользователь

PostgreSQL чувствителен к локали операционной системы: от неё зависят правила сортировки и сравнения строк, а 1С ожидает русскую локаль с корректной collation. Перед установкой убедитесь, что локаль ru_RU.UTF-8 сгенерирована и доступна. Если база будет создана с неправильной локалью, исправить это потом можно только пересозданием кластера — настройка не меняется «на лету».

bash
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
locale -a | grep ru_RU

Далее обновите индекс пакетов и установите вспомогательные утилиты — curl или wget для загрузки дистрибутива, а также пакеты зависимостей, которые могут потребоваться инсталлятору (libicu, libxml2 и другие; точный список зависит от версии сборки, менеджер пакетов подтянет их автоматически при установке deb-пакетов). Отдельно создавать системного пользователя не нужно: при установке пакетов автоматически создаётся учётная запись postgres, под которой работает служба СУБД.

Полезно заранее решить, где будут лежать данные. По умолчанию кластер размещается в /var/lib/postgresql. Если под базу выделен отдельный диск или раздел — а это рекомендуется для производительности и удобства бэкапов — примонтируйте его до инициализации кластера или планируйте перенос каталога данных сразу после установки, пока база пустая.

Установка PostgreSQL из пакетов 1С

Дистрибутив скачивается с портала releases.1c.ru в разделе технологической платформы — там публикуются deb-пакеты PostgreSQL для Ubuntu. Загрузите архив, распакуйте его и установите пакеты через apt, чтобы автоматически разрешились зависимости. Установка из локальных файлов выполняется командой apt с указанием пути к пакетам.

bash
tar -xf postgresql-<em>.tar
cd postgres</em>
sudo apt install ./postgresql-*_amd64.deb

После установки пакеты сами инициализируют кластер и создадут службу. Проверьте, что служба запущена и кластер работает: утилита pg_lsclusters покажет список кластеров и их статус, а systemctl — состояние службы. Если кластер не поднялся автоматически, инициализируйте его вручную с явным указанием локали.

bash
pg_lsclusters
sudo systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"
Порядок установки
  1. 1
    Сгенерируйте и проверьте локаль ru_RU.UTF-8
  2. 2
    Скачайте deb-пакеты PostgreSQL с портала 1С
  3. 3
    Установите пакеты через apt из локального каталога
  4. 4
    Проверьте, что кластер инициализирован и служба запущена
  5. 5
    Выполните тестовое подключение через psql от пользователя postgres

Если сервер 1С будет установлен на той же машине, порядок установки компонентов не критичен, но удобнее сначала поднять PostgreSQL и убедиться в его работоспособности, а затем ставить сервер 1С — так проще локализовать возможные проблемы. При раздельной схеме (СУБД и сервер 1С на разных машинах) дополнительно потребуется открыть сетевой доступ, о чём ниже.

Настройка postgresql.conf под нагрузку 1С

Конфигурация по умолчанию рассчитана на минимальные ресурсы и для рабочей базы 1С не подходит: при значениях из коробки даже небольшая база будет работать медленно. Основной файл настроек — postgresql.conf в каталоге данных кластера (обычно /etc/postgresql/<версия>/main/postgresql.conf в deb-поставках). После правки большинства параметров требуется перезапуск службы.

Ключевые параметры, которые стоит скорректировать: shared_buffers — обычно 20–25% от объёма ОЗУ сервера; work_mem — память на операции сортировки и хеширования, задаётся с учётом числа одновременных соединений; maintenance_work_mem — для служебных операций вроде VACUUM и создания индексов; effective_cache_size — оценка доступного дискового кэша, влияет на выбор планов запросов. Также для 1С важны параметры, связанные с блокировками: max_locks_per_transaction следует увеличить относительно значения по умолчанию, иначе на массовых операциях возможны ошибки нехватки блокировок.

bash
sudo nano /etc/postgresql/15/main/postgresql.conf
# примеры параметров для сервера с 16 ГБ ОЗУ:
# shared_buffers = 4GB
# work_mem = 32MB
# maintenance_work_mem = 1GB
# effective_cache_size = 10GB
# max_locks_per_transaction = 150
sudo systemctl restart postgresql

Точные значения зависят от объёма памяти, числа пользователей и характера нагрузки — универсального рецепта нет. Разумная стратегия: задать консервативные стартовые значения, понаблюдать за работой под реальной нагрузкой и корректировать по результатам мониторинга. Не выделяйте под PostgreSQL всю память сервера: оставьте запас операционной системе и серверу 1С, если он работает на той же машине.

Сетевая настройка и создание информационной базы

Если сервер 1С установлен на другой машине, PostgreSQL по умолчанию не примет подключение: он слушает только localhost. В postgresql.conf измените параметр listen_addresses, указав адрес интерфейса или звёздочку, а в файле pg_hba.conf добавьте строку, разрешающую подключение с адреса сервера 1С по паролю (метод md5 или scram-sha-256, в зависимости от версии). После правки pg_hba.conf достаточно перечитать конфигурацию без полного перезапуска.

bash
# postgresql.conf
listen_addresses = '192.168.1.10,localhost'

# pg_hba.conf — доступ для сервера 1С
host  all  all  192.168.1.20/32  scram-sha-256

sudo systemctl reload postgresql

Саму информационную базу удобнее всего создавать штатными средствами 1С: в консоли кластера серверов 1С или при добавлении базы в список на клиенте — платформа сама создаст базу в PostgreSQL с нужными параметрами. При этом указывается пользователь СУБД (обычно postgres) и его пароль. Альтернатива — создать пустую базу вручную через createdb с владельцем postgres, а затем зарегистрировать её в кластере 1С без создания.

Пароль пользователя postgres задаётся сразу после установки, если он не был установлен автоматически. Сделайте это до попытки создания базы из 1С, иначе получите ошибку аутентификации. Пароль храните в безопасном месте: он понадобится для обслуживания — бэкапов, обновлений статистики, регламентных операций.

bash
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'StrongPasswordHere';"

Проверка результата и типичные ошибки

Итоговая проверка состоит из нескольких контрольных точек. Сначала убедитесь, что служба PostgreSQL активна и кластер принимает локальные подключения. Затем создайте тестовую информационную базу через консоль кластера 1С — успешное создание означает, что сборка СУБД совместима с платформой, локаль корректна, а права пользователя достаточны. Наконец, запустите клиент 1С, войдите в базу и выполните несколько типовых операций: запись документа, проведение, формирование отчёта.

Контрольные точки

Как проверить результат

Статус службы
Норма

systemctl показывает active (running), кластер online в pg_lsclusters

Тревожный признак

Служба failed или кластер down — смотрите журнал PostgreSQL в /var/log/postgresql

Создание базы из консоли 1С
Норма

База создаётся без ошибок и появляется в списке

Тревожный признак

Ошибка про несовместимую версию СУБД или локаль — проверьте сборку и параметры кластера

Подключение клиента
Норма

Клиент открывает базу, справочники и документы доступны

Тревожный признак

Ошибка аутентификации или таймаут — проверьте pg_hba.conf, listen_addresses и файрвол

Работа под нагрузкой
Норма

Проведение документов и отчёты выполняются за приемлемое время

Тревожный признак

Резкие паузы и ошибки блокировок — пересмотрите max_locks_per_transaction и настройки памяти

Наиболее частые ошибки при установке: использование стандартного пакета PostgreSQL вместо сборки для 1С; неверная локаль кластера, из-за которой платформа отказывается создавать базу; незаданный пароль postgres; закрытый порт 5432 на файрволе при раздельной схеме; отсутствие строки в pg_hba.conf для адреса сервера 1С. Каждая из них диагностируется по журналу PostgreSQL — это первое место, куда стоит смотреть при любой проблеме.

Типичные ошибки
01
Установка PostgreSQL из стандартного репозитория Ubuntu — платформа 1С не сможет создать или корректно обслуживать базу
02
Инициализация кластера с локалью по умолчанию вместо ru_RU.UTF-8 — придётся пересоздавать кластер с потерей данных
03
Копирование чужого postgresql.conf без учёта объёма ОЗУ — нехватка памяти и падение процессов СУБД
04
Разрешение listen_addresses = '*' и открытый pg_hba.conf без ограничения подсетей — база доступна всей сети, включая потенциальных злоумышленников
05
Отсутствие резервного копирования после развёртывания — первая же авария приводит к потере рабочих данных

Отдельно упомянем резервное копирование: сразу после развёртывания настройте регулярный логический бэкап через pg_dump по расписанию (cron) или файловый бэкап каталога данных при остановленной службе. Работа 1С без бэкапов — вопрос времени до потери данных, а восстановление из копии должно быть отработанной процедурой, а не теорией.

Удобно держать PostgreSQL и сервер 1С на одной машине для небольших внедрений до 15–20 пользователей: меньше сетевых настроек и проще диагностика. При росте нагрузки разнесение СУБД и сервера приложений по разным машинам даёт более предсказуемую производительность, но требует аккуратной настройки pg_hba.conf и мониторинга сети.
ПЗ
Практическое замечание

Частые вопросы

Можно ли использовать PostgreSQL из стандартного репозитория Ubuntu для 1С?

Технически пакет установится, но платформа 1С с высокой вероятностью откажется создавать информационную базу или будет работать некорректно: требуются патчи для управляемых блокировок и особенности обработки типов. Используйте сборку с портала 1С или PostgresPro.

Какую версию PostgreSQL выбрать для моей платформы 1С?

Диапазон поддерживаемых версий указан в системных требованиях конкретной версии технологической платформы на портале 1С. Брать самую свежую мажорную версию СУБД без проверки совместимости не стоит — она может не поддерживаться вашей платформой.

Как исправить ошибку про локаль при создании базы?

Локаль кластера задаётся при инициализации и не меняется afterwards. Решение — остановить службу, удалить каталог данных кластера, инициализировать его заново с локалью ru_RU.UTF-8 и создать базу повторно. Существующие данные при этом теряются, поэтому сначала сделайте выгрузку.

Нужен ли отдельный сервер под PostgreSQL?

Для небольших баз и до пары десятков пользователей совмещение СУБД и сервера 1С на одной машине — нормальная практика при достаточном объёме ОЗУ. Отдельный сервер оправдан при росте нагрузки, требованиях к отказоустойчивости или когда база занимает значительную часть ресурсов.

Как организовать резервное копирование базы 1С в PostgreSQL?

Минимальный рабочий вариант — ежедневный pg_dump по расписанию cron с хранением копий на отдельном носителе или другом сервере. Для больших баз рассматривают физическое копирование с WAL-архивом. Обязательно периодически проверяйте восстановление из копии на тестовом стенде.

Что делать, если клиент 1С не подключается к базе на другом сервере?

Проверьте по цепочке: слушает ли PostgreSQL нужный интерфейс (listen_addresses), есть ли разрешающая строка для адреса сервера 1С в pg_hba.conf, открыт ли порт 5432 в файрволе, верен ли пароль пользователя. Журнал PostgreSQL покажет, доходит ли попытка подключения до СУБД.

Итог

Что важно запомнить

Для 1С нужна специальная сборка PostgreSQL, корректная локаль ru_RU.UTF-8 при инициализации кластера и настройка памяти и блокировок в postgresql.conf под ресурсы сервера. Базу создают средствами консоли 1С, результат проверяют подключением клиента, а резервное копирование настраивают сразу после развёртывания.