Сервер 1С:Предприятия и PostgreSQL на Linux: установка с нуля до рабочей базы

· 9 мин

Содержание

Чтобы установить сервер 1С и PostgreSQL, нужны четыре шага: поставить сборку PostgreSQL с патчами для 1С, задать пароль и доступ в pg_hba.conf, установить сервер 1С:Предприятия 8.3 из единого дистрибутива setup-full и запустить его службу, а затем создать информационную базу в кластере с типом СУБД PostgreSQL. На чистой Ubuntu или Debian вся процедура занимает час-полтора.

Типичная ситуация: компания выросла до 15 пользователей, файловая база начала тормозить и ловить блокировки. Покупать MS SQL дорого, поэтому выбирают Linux, сервер 1С и бесплатную СУБД. Ниже — порядок, который работает на практике, с командами и проверками после каждого этапа.

1. Подготовка сервера под 1С и PostgreSQL

Начните с железа и операционной системы. Сервер 1С и СУБД можно держать на одной машине — для небольшой компании это нормальный вариант.

Ориентиры по ресурсам

ПользователейCPURAMДиск
до 104 ядра8–16 ГБSSD от 100 ГБ
10–306–8 ядер16–32 ГБNVMe SSD от 200 ГБ
30–608–16 ядер32–64 ГБNVMe, база и журналы на разных дисках

Цифры примерные: тяжёлая УПП или ERP с закрытием месяца съест больше, чем Бухгалтерия на 10 пользователей. Главное — SSD. На HDD PostgreSQL под 1С работает заметно медленнее.

Операционная система

  • 🐧 Берите дистрибутив из списка поддерживаемых в системных требованиях вашей версии платформы. Чаще всего ставят Ubuntu LTS, Debian, Astra Linux, РЕД ОС или Альт.
  • 🌐 Задайте серверу постоянный IP-адрес и понятное имя хоста, например srv1c.
  • 🔤 Включите русскую локаль — без неё PostgreSQL создаст кластер не в той кодировке.
sudo apt update && sudo apt upgrade -y
sudo hostnamectl set-hostname srv1c
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8

Имя сервера и порты

Клиенты 1С обращаются к кластеру по имени хоста, а не только по IP. Если имя не резолвится с рабочего места, подключение упадёт, даже когда порты открыты. Добавьте запись в DNS организации или в файл hosts на каждом клиенте (в Windows — C:\Windows\System32\drivers\etc\hosts):

192.168.1.10   srv1c

Порты, которые должны быть открыты в межсетевом экране:

ПортЧто слушает
1540агент сервера (ragent)
1541менеджер кластера (rmngr)
1560–1591рабочие процессы (rphost)
1545сервер администрирования (ras), если используете
5432PostgreSQL, если СУБД на отдельной машине
sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp

Порт 5432 наружу не открывайте. Если сервер 1С и СУБД на одной машине, PostgreSQL достаточно слушать localhost.

2. Установка PostgreSQL для 1С и первичная настройка

Обычный PostgreSQL из репозитория дистрибутива для 1С не подходит. Платформе нужны дополнительные расширения (типы mchar, mvarchar и другие), которых в «ванильной» сборке нет. Есть два источника правильной сборки:

  • 📦 дистрибутив PostgreSQL для 1С с портала обновлений 1С (нужен договор сопровождения);
  • 📦 бесплатная сборка PostgreSQL для 1С от компании Postgres Professional из её репозитория.

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

Установка пакетов

Если скачали архив с deb-пакетами, распакуйте его и поставьте все пакеты разом — apt сам подтянет зависимости:

mkdir ~/pg1c && cd ~/pg1c
tar -xzf ~/postgresql-*.tar.gz      # имя архива — ваше
sudo apt install ./*.deb

Сразу заблокируйте пакеты от обновления, иначе при apt upgrade система может заменить сборку для 1С обычной:

sudo apt-mark hold $(dpkg -l | awk '/postgresql/ {print $2}')

Пароль и проверка работы

sudo systemctl status postgresql
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'СложныйПароль';"
sudo -u postgres psql -c "SHOW lc_collate;"

Последняя команда должна вернуть ru_RU.UTF-8. Если там C или en_US.UTF-8, кластер инициализирован без русской локали — пересоздайте его, пока в нём нет баз.

Доступ: postgresql.conf и pg_hba.conf

Файлы лежат в каталоге конфигурации кластера. Узнать путь можно так:

sudo -u postgres psql -c "SHOW config_file;"
sudo -u postgres psql -c "SHOW hba_file;"

Если СУБД и сервер 1С на одной машине, хватит строки для локальных подключений по паролю в pg_hba.conf:

host    all    all    127.0.0.1/32    scram-sha-256

Если СУБД отдельно — в postgresql.conf пропишите listen_addresses = '*', а в pg_hba.conf разрешите только IP сервера 1С:

host    all    all    192.168.1.10/32    scram-sha-256

После правок: sudo systemctl restart postgresql.

💡 Заведите для 1С отдельного пользователя СУБД с правом создавать базы вместо работы под postgres. Так проще разграничить доступ и аудит.

3. Как установить сервер 1С:Предприятия 8.3 на Linux

Начиная с версии 8.3.20, платформа для Linux поставляется единым установщиком setup-full-8.3.xx.xxxx-x86_64.run. Скачайте дистрибутив «Технологическая платформа 1С:Предприятия (64-bit) для Linux» той же версии, что используется у клиентов.

Зависимости

Для корректного вывода отчётов и печатных форм нужны шрифты:

sudo apt install -y fontconfig ttf-mscorefonts-installer

Запуск установщика

chmod +x setup-full-8.3.24.1467-x86_64.run
sudo ./setup-full-8.3.24.1467-x86_64.run --mode unattended --enable-components server,ws

Номер версии подставьте свой. Компонент server — сам сервер, ws — модуль расширения веб-сервера (нужен для публикации баз и веб-клиента). Полный список компонентов выведет запуск с ключом --help. Без ключей установщик откроет графический мастер, если на сервере есть графическая среда.

Платформа встаёт в /opt/1cv8/x86_64/<версия>/. Установщик сам создаёт системного пользователя usr1cv8, от имени которого работает сервер.

Регистрация и запуск службы

В каталоге версии лежит юнит systemd. Подключите его, включите автозапуск и запустите:

V=8.3.24.1467
sudo systemctl link /opt/1cv8/x86_64/$V/srv1cv8-$V@.service
sudo systemctl enable srv1cv8-$V@default
sudo systemctl start srv1cv8-$V@default
sudo systemctl status srv1cv8-$V@default

Проверьте, что порты слушаются:

sudo ss -tlnp | grep -E '1540|1541'

Если в выводе есть ragent и rmngr, кластер поднялся.

Лицензия сервера

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

Программная лицензия привязывается к параметрам оборудования. Не меняйте сетевую карту, диски и имя хоста после активации без необходимости — лицензия может «слететь», а число повторных активаций ограничено.

4. Создание информационной базы в кластере 1С на PostgreSQL

Самый простой способ — из клиента 1С на рабочем месте администратора.

  1. Запустите 1С:Предприятие, в окне списка баз нажмите Добавить.
  2. Выберите Создание новой информационной базы, затем пустую базу или шаблон.
  3. На шаге выбора варианта расположения отметьте На сервере 1С:Предприятия.
  4. Заполните поля:
    • Кластер серверов 1С:Предприятия — srv1c (имя хоста, не IP);
    • Имя информационной базы в кластере — например, buh;
    • Тип СУБД — PostgreSQL;
    • Сервер баз данных — localhost, если СУБД на той же машине, иначе её адрес;
    • Имя базы данных — обычно совпадает с именем в кластере;
    • пользователь и пароль СУБД из раздела 2.
  5. Отметьте Создать базу данных в случае ее отсутствия.
  6. Решите, нужен ли флажок Разрешить выдачу лицензий сервером 1С:Предприятия: включайте, если клиентские лицензии установлены на сервере.
  7. Нажмите Далее и Готово. Платформа создаст базу в PostgreSQL и зарегистрирует её в кластере.

Если вы переносите существующую базу, создайте пустую и загрузите выгрузку: Конфигуратор → Администрирование → Загрузить информационную базу, файл .dt. Загрузка требует монопольного доступа, на пустой базе это не проблема.

Через командную строку

На сервере без клиента базу можно создать утилитой rac. Ей нужен запущенный сервер администрирования ras:

cd /opt/1cv8/x86_64/8.3.24.1467
sudo -u usr1cv8 ./ras cluster --daemon
./rac cluster list

Из вывода возьмите cluster — идентификатор кластера. Создание базы выглядит так:

./rac infobase create --cluster=<id_кластера> \
  --create-database --name=buh --dbms=PostgreSQL \
  --db-server=localhost --db-name=buh --locale=ru \
  --db-user=postgres --db-pwd='СложныйПароль'

Набор параметров зависит от версии платформы — сверьтесь с ./rac help infobase.

5. Настройка производительности: параметры PostgreSQL и сервера 1С

Сборки для 1С уже содержат разумные настройки по умолчанию, но они рассчитаны на небольшую машину. Под реальную нагрузку параметры памяти стоит поднять. Ниже ориентиры для выделенного сервера с 32 ГБ RAM, где 1С и СУБД работают вместе.

Параметр postgresql.confОриентирЗачем
shared_buffers8GB (≈25% RAM)кэш данных СУБД
effective_cache_size16GB (≈50% RAM)подсказка планировщику о кэше ОС
work_mem64MBсортировки и соединения в запросах
maintenance_work_mem1GBVACUUM, создание индексов
temp_buffers256MB1С активно использует временные таблицы
max_connections200–500каждый сеанс 1С держит соединения
max_locks_per_transaction256реструктуризация больших конфигураций
random_page_cost1.1для SSD вместо значения 4

Помните: work_mem выделяется на каждую операцию в каждом соединении. При 300 соединениях 64 МБ легко превращаются в десятки гигабайт, поэтому не завышайте его. Когда 1С и СУБД на одной машине, оставьте серверу 1С примерно треть памяти — рабочие процессы rphost под нагрузкой занимают по 2–4 ГБ.

Изменение shared_buffers и max_connections требует перезапуска PostgreSQL. Перезапуск обрывает все сеансы 1С: делайте его вне рабочего времени, предупредив пользователей.

Обслуживание

  • 🧹 Не отключайте autovacuum. Без него таблицы раздуваются, а запросы деградируют за недели.
  • 📊 Раз в неделю, ночью, запускайте vacuumdb --all --analyze от пользователя postgres.
  • 💾 Настройте резервное копирование : pg_dump -Fc для каждой базы по расписанию плюс выгрузка .dt перед обновлениями.

Со стороны кластера 1С

В свойствах рабочего сервера можно ограничить память рабочих процессов и задать Безопасный расход памяти за один вызов, чтобы один тяжёлый отчёт не положил сервер. На Linux эти настройки меняют через rac или через консоль администрирования на Windows-машине, подключённой к ras.

💡 Для баз до 30–40 пользователей одного рабочего процесса хватает. Добавлять процессы стоит по факту нагрузки, а не заранее.

6. Диагностика и логи: почему не подключается сервер 1С или PostgreSQL

При сбое смотрите в три места: журнал службы 1С, журнал PostgreSQL и сетевую доступность.

sudo journalctl -u srv1cv8-8.3.24.1467@default -n 100
sudo tail -n 100 /var/log/postgresql/*.log
sudo ss -tlnp | grep -E '1540|1541|5432'

Каталог логов PostgreSQL зависит от сборки; если в /var/log/postgresql пусто, путь покажет SHOW log_directory;.

Для глубокого разбора включают технологический журнал: файл logcfg.xml кладут в /opt/1cv8/conf/. Пишите в журнал только нужные события (например, EXCP — исключения) и задайте срок хранения: полный журнал за пару часов съедает десятки гигабайт.

Диагностика: выберите симптом

Если ничего не помогло

  1. Остановите службу 1С (сеансы пользователей оборвутся — делайте это без людей в базе).
  2. Запустите агент вручную от usr1cv8 в консоли: sudo -u usr1cv8 /opt/1cv8/x86_64/<версия>/ragent — ошибки старта будут видны сразу.
  3. Подключитесь к СУБД с сервера 1С вручную: psql -h <адрес_СУБД> -U postgres -d postgres. Если не пускает psql, не пустит и 1С.

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

Можно ли поставить сервер 1С на Linux, а PostgreSQL на Windows?
Можно, связка поддерживается. Но на Windows PostgreSQL под нагрузкой 1С обычно работает медленнее, чем на Linux, поэтому для СУБД чаще выбирают Linux.
Подойдёт ли PostgreSQL из стандартного репозитория Ubuntu?
Нет. В нём нет расширений, нужных платформе 1С. Базу создать не получится или она будет работать с ошибками.
Нужна ли лицензия на PostgreSQL?
Нет, сборки PostgreSQL для 1С бесплатны. Платить нужно только за лицензии 1С: серверную и клиентские.
Можно ли держать несколько версий сервера 1С на одном Linux-сервере?
Можно. Каждая версия ставится в свой каталог и запускается своей службой. Второй экземпляр должен слушать другие порты, иначе он не стартует.
Как перенести файловую базу на сервер?
Выгрузите её в .dt из Конфигуратора файловой базы, создайте пустую базу в кластере и загрузите туда выгрузку. Данные, пользователи и настройки переносятся целиком.