Сервер 1С:Предприятия с нуля: Linux, PostgreSQL, кластер

· 9 мин

Содержание

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

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

Файловая база тянет примерно до 5–10 одновременных пользователей. Дальше начинаются блокировки и тормоза. Если пользователей больше или база перевалила за несколько гигабайт, пора переходить на клиент-серверный режим.

Что понадобится: железо, ОС и лицензии

Начните с расчёта, потом выбирайте машину. Ориентиры для типовой «Бухгалтерии» или «ЗУП»:

ПользователейПроцессорПамятьДиск
до 104 ядра16 ГБSSD от 200 ГБ
10–308 ядер32 ГБSSD NVMe от 500 ГБ
30–10016 ядер64 ГБ и большеNVMe, лучше зеркало

Цифры ориентировочные. Для «Управления торговлей» и ERP берите с запасом в полтора-два раза. Если нагрузка пиковая (закрытие месяца , обмены), опирайтесь на неё, а не на среднюю.

Что выбрать из ОС:

  • 🐧 Linux (Debian, Ubuntu Server, Astra, РЕД ОС): нет платы за систему, меньше накладных расходов, проще автоматизировать. Нужна 64-разрядная версия из списка поддерживаемых вашей платформой.
  • 🪟 Windows Server: привычнее для админов без опыта Linux, но нужна лицензия на ОС.

Есть и деталь, о которой вспоминают поздно: серверной части нужна своя лицензия. Это программная или аппаратная (ключ) лицензия сервера, и она отдельная от клиентских. Без неё сервер запустится, но подключить сеансы не даст. Проверьте, что лицензия подходит под число ядер и пользователей, до покупки железа.

Подготовьте машину:

  1. Задайте статический IP и имя хоста. Имя сервера потом вшивается в кластер, менять его неприятно.
  2. Установите часовой пояс и синхронизацию времени (chrony или systemd-timesyncd). Расхождение времени ломает блокировки и обмены.
  3. Добавьте раздел или отдельный диск под данные PostgreSQL и под резервные копии.
  4. Откройте порты (список ниже в разделе про безопасность).

Если ставите на Linux, поставьте шрифты Microsoft или совместимые, иначе печатные формы поедут. Нужны также пакеты libwebkit2gtk и imagemagick для некоторых функций платформы. Точный список зависимостей смотрите в документации к своему релизу, он меняется.

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

PostgreSQL берут не любой. Платформа поддерживает определённые версии и сборки, и проверенный путь — сборка, адаптированная под 1С (например, от Postgres Professional или поставляемая вместе с платформой). Стандартный PostgreSQL из репозитория дистрибутива работает не всегда: у него нет доработок под особенности 1С, а на больших базах это заметно.

Порядок действий:

  1. Скачайте дистрибутив сборки под 1С для своей ОС и поставьте пакетом, как предписывает поставщик.
  2. Инициализируйте кластер СУБД на выделенном диске. Каталог данных не оставляйте на системном разделе.
  3. Задайте пароль суперпользователю postgres.
  4. Разрешите подключение с адреса сервера 1С в pg_hba.conf. Если СУБД и 1С на одной машине, хватит локального адреса.

Пример строки в pg_hba.conf для сервера 1С на 10.0.0.15:

host    all    all    10.0.0.15/32    md5

Затем настройте postgresql.conf. Отправные значения для машины с 32 ГБ памяти, где крутится и СУБД, и 1С:

shared_buffers = 6GB
effective_cache_size = 18GB
work_mem = 32MB
maintenance_work_mem = 1GB
max_connections = 200

Логика простая. shared_buffers примерно четверть памяти, отданной под СУБД. effective_cache_size подсказывает планировщику, сколько данных реально сидит в кэше ОС. Настройки по базе потом корректируют по результатам замеров, а не по чужим «волшебным» таблицам.

Не оставляйте пароль postgres по умолчанию и не открывайте порт 5432 всему миру. Сканеры находят такие серверы за часы.

После правок перезапустите службу и проверьте, что она поднялась:

sudo systemctl restart postgresql
sudo systemctl status postgresql

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

Возьмите дистрибутив платформы нужной версии с портала поддержки. Для сервера требуется серверный комплект, а не клиентский. На Linux он обычно идёт набором deb- или rpm-пакетов либо единым инсталлятором.

Обязательные компоненты:

  • 🧱 common — общие библиотеки;
  • 🖥️ server — серверная часть (агент, менеджер кластера, рабочие процессы);
  • 🌐 ws — модуль для веб-серверных расширений, если нужны веб-клиент и публикация;
  • 👤 клиент — по желанию, для проверки на самом сервере.

Установка из deb-пакетов выглядит так (имена файлов подставьте свои):

sudo dpkg -i 1c-enterprise83-common_*.deb 1c-enterprise83-server_*.deb
sudo apt-get -f install

После установки платформа лежит в каталоге вида /opt/1cv8/x86_64/8.3.x.y/, где 8.3.x.y — номер релиза. Служба сервера называется srv1cv83. Запускать её нужно под отдельным пользователем usr1cv8, он создаётся при установке. Не запускайте 1С под root.

Включите и стартуйте службу:

sudo systemctl enable srv1cv83
sudo systemctl start srv1cv83
sudo systemctl status srv1cv83

Если в статусе active (running) — агент сервера работает. На Windows то же делает служба «Агент сервера 1С:Предприятия 8.3», она ставится установщиком и стартует автоматически.

Отдельно поднимите администрирование. Проще всего служба ras (сервер администрирования), к которой подключается утилита rac и консоль:

/opt/1cv8/x86_64/8.3.x.y/ras cluster --daemon

Версия утилит должна совпадать с версией сервера, иначе rac отвечает невнятными ошибками.

Кластер серверов: создание и регистрация

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

Проверьте, что кластер виден:

/opt/1cv8/x86_64/8.3.x.y/rac cluster list

В выводе есть идентификатор cluster, имя и порт. Идентификатор понадобится дальше, запишите его.

Если нужен другой кластер (например, отдельный под тестовые базы), создайте его командой rac cluster insert с нужными параметрами порта и имени, либо через консоль администрирования. Параметры у разных релизов отличаются, поэтому сверяйтесь со справкой rac help cluster.

Затем создайте информационную базу. Есть два пути:

  1. Из клиента 1С. «Добавить» → «Создание новой информационной базы» → выберите шаблон или пустую базу → тип расположения «На сервере 1С:Предприятия». Укажите имя сервера (кластер) и имя базы в кластере, тип СУБД PostgreSQL, адрес сервера СУБД, пользователя и пароль СУБД. Отметьте создание базы данных, если её ещё нет.
  2. Командой rac infobase create, если делаете скриптом или без графики.

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

Для переноса существующей базы из файлового режима: выгрузите её в .dt через конфигуратор («Администрирование» → «Выгрузить информационную базу») и загрузите в новую серверную («Загрузить информационную базу»). Для большой базы запаситесь временем и местом на диске, процесс долгий.

Что проверить после создания базы
Выполнено: 0 / 5

Настройка производительности и рабочих процессов

Сервер без настройки работает, но не на полную. Основные рычаги:

  • ⚙️ Рабочие процессы. Один процесс держит ограниченное число соединений и память. Для кластера задают число процессов и максимальную память на процесс. Для небольшой базы хватает одного-двух. Для сотни пользователей процессов больше, а память одного процесса ограничивают, чтобы он не раздувался.
  • 🧠 Память под СУБД и под 1С. Если обе службы на одной машине, поделите память, а не отдавайте PostgreSQL всё. Типичная ошибка: shared_buffers съедает память, и 1С уходит в своп.
  • 💾 Диск. Журналы транзакций (pg_wal) выносите на быстрый диск. Это самый дешёвый способ ускорить запись.
  • 📊 Тесты. После настройки прогоните типовые операции: проведение пачки документов, формирование отчёта за год. Сравните время до и после.

Важно знать про тип блокировок. В серверном режиме работают управляемые блокировки. Они снимают большинство «зависаний» из файлового режима, но настройка режима управления блокировками конфигурации тоже влияет на скорость. Переключать режим нужно осознанно, а не «чтобы быстрее».

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

Меняйте за раз один параметр и записывайте результат. Если поменять пять, вы не узнаете, что помогло.

Регламентные задания и обслуживание базы

СУБД сама не наводит порядок так, как нужно 1С. Для PostgreSQL обязательны два дела:

  1. VACUUM и ANALYZE. Обновляют статистику и очищают «мёртвые» строки. Автовакуум включён по умолчанию, но на больших таблицах его порог стоит подкрутить.
  2. Реиндексация. Раз в месяц-два или после массовых загрузок.

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

Что обычно включают:

Обслуживание лучше автоматизировать скриптом и cron. Ночью, когда никто не работает , запускайте vacuumdb и проверку целостности. Результат пишите в лог и подключите уведомление по почте, чтобы узнавать о сбое от скрипта, а не от бухгалтера утром.

Резервное копирование и безопасность сервера

Резервная копия серверной базы делается тремя способами, и лучше сочетать их.

СпособЧто даётМинусы
pg_dump базыЛогическая копия, переносится на другую версиюДольше на больших базах
Копия каталога СУБД (физическая)Быстро, можно с архивацией WALТолько на ту же версию PostgreSQL
Выгрузка в .dt из 1СПроверка, что база открываетсяНужен монопольный доступ

Минимальный сценарий: ежедневный pg_dump в отдельное хранилище плюс еженедельная выгрузка .dt. Храните копии на другой машине или в облаке, а не рядом с базой. И хотя бы раз в квартал разворачивайте копию на тестовом стенде. Копия, которую ни разу не восстанавливали, не считается копией.

Пример ночного дампа:

pg_dump -U postgres -Fc -f /backup/buh_$(date +%F).dump buh_base

Теперь безопасность. Базовый набор:

  • 🔒 закройте всё, кроме нужных портов. Для кластера обычно открывают 1540 (агент), 1541 (менеджер кластера) и диапазон рабочих процессов, по умолчанию 1560–1591. Порт ras по умолчанию 1545, его наружу не выставляйте;
  • 🚫 PostgreSQL на 5432 доступен только серверу 1С, не пользователям;
  • 👤 разные пароли для администратора кластера, администратора базы и пользователя СУБД;
  • 🛡️ если клиентов извне много, подключайте их через VPN, а не пробрасывайте порты в интернет;
  • 🔄 обновляйте ОС и платформу, но сначала на тестовой копии.

Перед обновлением платформы или конфигурации всегда делайте свежую копию базы. Откат серверной базы без неё превращается в восстановление из последнего дампа.

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

Можно ли поставить PostgreSQL и сервер 1С на одну машину?
Можно, для небольших баз до нескольких десятков пользователей так и делают. На крупных нагрузках СУБД лучше выносить на отдельный сервер: они конкурируют за память и диск.
Чем серверная 1С отличается от файловой?
В файловом режиме все клиенты работают с файлом базы напрямую по сети. В серверном данные хранит СУБД, а обработкой запросов занимается кластер. Это быстрее при многих пользователях и надёжнее при сбоях.
Нужна ли отдельная лицензия на сервер?
Да. Лицензия серверной части приобретается отдельно от клиентских. Без неё подключиться к серверной базе не получится.
Какой порт использует сервер 1С по умолчанию?
Агент сервера слушает 1540, менеджер кластера 1541, рабочие процессы работают в диапазоне 1560–1591. Эти значения меняются при настройке.
Почему клиент не видит сервер по имени?
Чаще всего проблема в DNS или файле hosts: клиенту нужно разрешать имя сервера, которое вшито в кластер. Проверьте ping по имени и доступность порта 1541.