Сервер 1С на Linux и PostgreSQL: от чистой машины до первого пользователя

· 10 мин

Содержание

Чтобы развернуть 1С в клиент-серверном варианте, нужны три компонента: сервер 1С:Предприятия 8.3 (служба ragent с кластером), СУБД (на Linux обычно PostgreSQL в сборке для 1С) и лицензия на сервер. Порядок такой: готовите машину и имя хоста, ставите СУБД, ставите сервер 1С и запускаете его службу, открываете порты 1540, 1541, 1560–1591, создаёте базу на сервере и добавляете её в список баз у пользователей.

Файловый вариант проще, но он упирается в 10–15 одновременных пользователей и плохо переносит сетевые сбои. Клиент-серверный выбирают, когда людей больше, база тяжелее 10–20 ГБ, нужны регламентные задания по расписанию или веб-доступ. На Windows Server сервер 1С ставится похоже, но ниже разобран самый частый сегодня сценарий: Linux плюс PostgreSQL.

Подготовка сервера: железо, ОС, выбор СУБД

Начните с выбора СУБД. От неё зависят сборка, лицензии на саму СУБД и то, кто будет её сопровождать.

СУБДКогда выбираютЧто учесть
PostgreSQL (сборка для 1С)Linux, экономия на лицензиях СУБДНужна именно пропатченная сборка, не «ванильная» из репозитория ОС
Postgres ProНужна поддержка вендора, крупные базыПлатные редакции, есть бесплатная сборка для 1С
Microsoft SQL ServerИнфраструктура на WindowsЛицензии на SQL Server, сервер на Windows

Обычный PostgreSQL из репозитория Ubuntu или Debian для 1С не подходит: без патчей фирмы 1С база либо не создастся, либо будет работать с ошибками. Берите дистрибутив «PostgreSQL для 1С» или Postgres Pro в сборке для 1С, версию сверяйте со списком поддерживаемых для вашей платформы.

Ориентиры по железу для одного сервера, где стоят и 1С, и СУБД:

  • 🖥️ до 15 пользователей — 4 ядра, 16 ГБ памяти, SSD;
  • 🖥️ 15–40 пользователей — 8 ядер, 32 ГБ, NVMe;
  • 🖥️ больше 40 или несколько тяжёлых баз — 1С и СУБД лучше развести на две машины.

Цифры примерные: многое зависит от конфигурации. ЗУП на 200 сотрудников и УТ с тысячей документов в день грузят сервер очень по-разному.

ОС — 64-битная Ubuntu LTS, Debian или отечественные дистрибутивы из списка совместимых (Astra Linux, РЕД ОС, ALT). Перед установкой сделайте три вещи:

  1. Задайте постоянное имя сервера: sudo hostnamectl set-hostname srv1c.
  2. Пропишите это имя и IP в /etc/hosts на самом сервере и проверьте, что ping srv1c отвечает с реального адреса, а не с 127.0.1.1.
  3. Включите русскую локаль: sudo locale-gen ru_RU.UTF-8, затем sudo update-locale.

Ошибка с именем хоста — самая частая причина, по которой клиенты «не видят» сервер 1С. Агент сообщает клиенту адреса рабочих процессов по имени машины. Если клиент это имя не разрешает, подключение срывается уже после первого соединения.

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

Дистрибутив PostgreSQL для 1С приходит набором пакетов под конкретную ОС. Распакуйте архив и поставьте пакеты штатным менеджером: для deb-систем это sudo apt install ./*.deb в папке с пакетами. Установщик создаст службу и системного пользователя postgres.

Дальше задайте пароль пользователю СУБД, под которым 1С будет создавать базы:

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'СложныйПароль';
\q

Для продакшена удобнее завести отдельную роль, например usr1c, с правом создавать базы, а суперпользователя postgres не отдавать в настройки 1С.

Сетевой доступ к СУБД

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

  • в postgresql.conf параметр listen_addresses — адрес сервера или '*';
  • в pg_hba.conf строку разрешения только для IP сервера 1С, метод scram-sha-256 или md5.
# pg_hba.conf: пускаем только сервер 1С
host    all    all    192.168.10.20/32    scram-sha-256

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

Стартовые значения для сервера с 16 ГБ памяти, где PostgreSQL делит машину с 1С:

shared_buffers = 4GB
effective_cache_size = 8GB
work_mem = 64MB
maintenance_work_mem = 1GB
max_connections = 200
standard_conforming_strings = off
escape_string_warning = off

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

Установка сервера 1С:Предприятие на Linux

С платформы 8.3.20 под Linux выпускается единый установщик setup-full-8.3.XX.YYYY-x86_64.run вместо отдельных deb- и rpm-пакетов. Скачайте дистрибутив «Технологическая платформа» для Linux x86-64 под нужный номер версии.

Тихая установка компонентов сервера

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

Компонент server — сам сервер 1С, ws — модули расширения веб-сервера, нужны только для публикации базы через Apache. Платформа ляжет в /opt/1cv8/x86_64/8.3.XX.YYYY/, установщик создаст системного пользователя usr1cv8. Можно запустить установщик и без ключей, в графическом режиме, и отметить компоненты галочками.

Если в системе не хватает библиотек, установщик выведет их список. Доставьте их через apt и повторите запуск.

Запуск службы

В каталоге платформы лежит готовый unit-файл для systemd. Подключите его и запустите службу:

VER=8.3.XX.YYYY
sudo systemctl link /opt/1cv8/x86_64/$VER/srv1cv8-$VER@.service
sudo systemctl enable srv1cv8-$VER@default
sudo systemctl start srv1cv8-$VER@default
sudo systemctl status srv1cv8-$VER@default

Проверьте, что агент слушает порты: ss -tlnp | grep -E '1540|1541'. Данные кластера хранятся в каталоге srvinfo в домашней папке пользователя usr1cv8. Его стоит включить в резервное копирование: там список баз и настройки кластера.

Номер версии сервера и клиентов должен совпадать до последней цифры. Клиент 8.3.24.1467 не подключится к серверу 8.3.24.1342. При обновлении платформы обновляйте и сервер, и все рабочие места.

Кластер серверов 1С: порты, администраторы, консоль

После первого запуска агент сам создаёт кластер «Локальный кластер» на порту 1541. Схема обмена такая:

ПортКто слушаетЗачем
1540Агент сервера (ragent)Первое обращение клиента, подключение консоли
1541Менеджер кластера (rmngr)Распределение сеансов
1560–1591Рабочие процессы (rphost)Основная работа пользователей
1545Сервер администрирования (ras)Управление через утилиту rac

Диапазон 1560–1591 задаётся в свойствах рабочего сервера, его можно сузить или сдвинуть. Откройте порты в брандмауэре только для своей сети:

sudo ufw allow from 192.168.10.0/24 to any port 1540:1541 proto tcp
sudo ufw allow from 192.168.10.0/24 to any port 1560:1591 proto tcp

Консоль администрирования с Windows

Сервером на Linux удобно управлять из «Администрирования серверов 1С:Предприятия» на рабочем месте администратора. Консоль ставится вместе с платформой для Windows, но перед первым запуском зарегистрируйте её библиотеку от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.XX.YYYY\bin\radmin.dll"

Версия radmin.dll должна совпадать с версией сервера. Затем в консоли добавьте центральный сервер по имени srv1c, порт 1540.

Администраторы

Сразу заведите двух администраторов:

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

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

Управление без Windows

Для работы из консоли Linux запустите сервер администрирования и проверьте кластер:

/opt/1cv8/x86_64/8.3.XX.YYYY/ras cluster --daemon
/opt/1cv8/x86_64/8.3.XX.YYYY/rac cluster list

Остальные команды и их параметры смотрите в rac help — у разных версий платформы набор ключей отличается.

Создание информационной базы и подключение клиентов

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

  1. Нажмите Добавить → «Создание новой информационной базы».
  2. Выберите шаблон конфигурации или «Создание информационной базы без конфигурации», если будете загружать .dt.
  3. Тип расположения — «На сервере 1С:Предприятия».
  4. Заполните параметры:
    • кластер серверов 1С — srv1c;
    • имя информационной базы в кластере — buh (латиница, без пробелов);
    • тип СУБД — PostgreSQL;
    • сервер баз данных — localhost, если СУБД на той же машине, иначе её имя;
    • имя базы данных, пользователь и пароль СУБД;
    • смещение дат — 0 (для PostgreSQL);
    • флажок «Создать базу данных в случае её отсутствия».
  5. Включите «Установить блокировку регламентных заданий», если это копия рабочей базы: иначе тестовая копия начнёт обмениваться данными и отправлять почту от имени рабочей.

Перенос существующей файловой базы

  1. В файловой базе: Конфигуратор → Администрирование → Выгрузить информационную базу → файл .dt.
  2. Создайте пустую базу на сервере по шагам выше.
  3. Откройте её в Конфигураторе → Администрирование → Загрузить информационную базу → выберите .dt.

Загрузка требует монопольного доступа и затирает всё в целевой базе. Проверьте, что грузите в новую, а не в рабочую серверную базу .

Подключение пользователей

На рабочих местах ставится только клиент той же версии. Базу добавляют через «Добавить» → «Добавление в список существующей информационной базы» → «На сервере 1С:Предприятия», указав srv1c и buh. Строка соединения выглядит так:

Srvr="srv1c";Ref="buh";

Если пользователей много, не настраивайте каждого руками. Положите общий файл списка баз .v8i в сетевую папку и укажите его в 1cestart.cfg через параметр CommonInfoBases. Новая база появится у всех после перезапуска окна запуска.

На клиентах, где нет внутреннего DNS, пропишите srv1c в файл hosts (C:\Windows\System32\drivers\etc\hosts).

Лицензии и безопасность серверного варианта

Клиент-серверному варианту нужны два вида лицензий:

  • 🔑 лицензия на сервер — для 64-битного сервера на Linux это «ПРОФ» или «КОРП»; без неё пользователи не смогут работать с базами на сервере;
  • 👥 клиентские лицензии — по числу одновременных сеансов.

Программные лицензии активируют пин-кодом. Клиентские лицензии в серверном варианте удобно держать на сервере 1С: тогда их выдаёт кластер, и пользователю не нужен ни ключ, ни активация на своём компьютере. Для этого в свойствах базы в консоли включите «Разрешить выдачу лицензий сервером 1С:Предприятия».

Аппаратные USB-ключи на Linux требуют драйвера HASP (aksusbd), а в виртуальной машине — проброса USB. Для новых установок программные лицензии проще.

Программная лицензия привязывается к параметрам оборудования. Замена диска, сетевой карты или перенос виртуальной машины могут потребовать повторной активации резервным пин-кодом. Сохраните конверт с пин-кодами и регистрационную анкету.

Минимальный набор защиты:

  • 🛡️ порты 1540–1591 открыты только для внутренней сети или VPN, наружу их не публикуют;
  • 🛡️ порт PostgreSQL 5432 доступен только серверу 1С;
  • 🛡️ заданы администраторы центрального сервера и кластера;
  • 🛡️ в каждой базе созданы пользователи с паролями, вход без авторизации отключён;
  • 🛡️ настроено резервное копирование СУБД (pg_dump по расписанию) и проверено восстановление.

Если клиенты не подключаются к серверу 1С

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

Если служба не стартует, смотрите журнал systemd: journalctl -u srv1cv8-8.3.XX.YYYY@default -n 50. Частая причина — служба запущена дважды: старая версия платформы ещё висит на портах 1540–1541. Перед остановкой старой службы предупредите пользователей: все их сеансы оборвутся.

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

Можно ли поставить сервер 1С и PostgreSQL на одну машину?
Да, для небольших компаний это обычная схема. Разносить на две машины стоит, когда пользователей больше 40 или базы большие и одна машина упирается в память или диск.
Сколько стоит переход на клиент-серверный вариант?
Основная статья расходов — лицензия на сервер: ориентировочно от 90 тыс. руб. за «ПРОФ» (x86-64) и примерно вдвое-втрое дороже за «КОРП». PostgreSQL для 1С бесплатен, клиентские лицензии уже купленные подходят.
Нужна ли отдельная лицензия на PostgreSQL?
Нет. PostgreSQL в сборке для 1С распространяется бесплатно. Платные лицензии нужны только для коммерческих редакций Postgres Pro или для Microsoft SQL Server.
Можно ли держать на одном кластере несколько баз?
Да. Каждой базе в кластере дайте своё имя и свою базу данных в СУБД. Рабочие процессы кластера обслуживают их все.
Как обновить платформу на сервере без долгого простоя?
Поставьте новую версию рядом со старой, остановите старую службу в нерабочее время, подключите и запустите службу новой версии, затем обновите клиентов. Данные кластера в srvinfo подхватятся автоматически, но сделайте копию этого каталога заранее.