Сервер 1С:Предприятия 8.3 с нуля: СУБД, кластер, доступ пользователей и бэкапы

· 10 мин

Содержание

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

Ниже порядок, по которому сервер собирают на практике: от железа до момента, когда бухгалтер открывает базу у себя на компьютере. Порядок работает для платформы 8.3.2x на Windows Server 2016 и новее и на Ubuntu/Debian.

Что подготовить до установки: железо, ОС, СУБД и лицензии

Начните с расчёта нагрузки. Ориентиры ниже даны для типовых конфигураций (БП, ЗУП, УТ) и умеренной работы пользователей. Тяжёлые обработки, ERP и интеграции требуют больше.

ПользователейЯдра CPUОЗУДискиСхема
до 15416 ГБSSD1С и СУБД на одной машине
15–506–832 ГБNVMeодна машина, СУБД ограничена по памяти
50–10012–1664 ГБNVMe, отдельный диск под журналы СУБДлучше 1С и СУБД раздельно
100+от 16от 96 ГБNVMe RAID 10два сервера, сеть 10 Гбит/с между ними

Цифры ориентировочные: на них удобно опираться при заказе сервера, но после месяца работы смотрите на фактическую загрузку.

Что ещё нужно до первого шага:

  • 🔑 Лицензия на сервер 1С:Предприятия (ПРОФ или КОРП, 64-битная) плюс клиентские лицензии по числу одновременных подключений. Без серверной лицензии клиент-серверная база не запустится.
  • 📦 Дистрибутив платформы 8.3 нужной версии. Версия сервера и клиентов должна совпадать до последней цифры сборки.
  • 🗄 СУБД. Для PostgreSQL нужна сборка с патчами для 1С: её выпускает фирма 1С и Postgres Professional. Обычный PostgreSQL из репозитория дистрибутива 1С не поддерживает.
  • 🌐 Постоянный IP-адрес и имя сервера, которое разрешается со всех клиентских машин.

Частота процессора для 1С важнее числа ядер. Один сеанс проведения документа выполняется в одном потоке, и сервер с 8 ядрами по 3,8 ГГц почти всегда работает отзывчивее, чем 24 ядра по 2,1 ГГц.

Подготовка операционной системы под сервер 1С

Windows Server

  1. Задайте серверу постоянное имя и статический IP. Имя менять после установки 1С нельзя: кластер запоминает его в своих настройках.
  2. Включите схему электропитания «Высокая производительность»: powercfg /setactive SCHEME_MIN.
  3. Откройте порты в брандмауэре:
New-NetFirewallRule -DisplayName "1C Server" -Direction Inbound -Protocol TCP -LocalPort 1540-1541,1560-1591 -Action Allow
  1. Исключите из проверки антивирусом каталоги баз СУБД, каталог кластера srvinfo и временные файлы 1С. Онлайн-проверка этих папок заметно тормозит работу.

Linux (Ubuntu, Debian)

  1. Установите шрифты, иначе печатные формы поедут: sudo apt install fontconfig ttf-mscorefonts-installer.
  2. Пропишите имя сервера в /etc/hosts и проверьте, что hostname -f возвращает то же имя, по которому к серверу будут подключаться клиенты.
  3. Откройте порты:
sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp
sudo ufw allow 5432/tcp   # только если СУБД на отдельной машине

Имя сервера должно разрешаться у каждого клиента. Кластер сообщает клиенту адреса рабочих процессов по имени машины, а не по IP. Если в сети нет внутреннего DNS, добавьте строку 192.168.1.10 srv1c в файл hosts на каждом компьютере пользователя.

Установка и настройка СУБД для 1С

Выбор между двумя основными вариантами обычно решают лицензии и опыт администратора.

СУБДКогда выбиратьНа что смотреть
PostgreSQL (сборка для 1С)Linux-сервер, нет бюджета на лицензии СУБДнужна сборка с патчами, регулярный VACUUM и ANALYZE
MS SQL ServerWindows-инфраструктура, есть лицензииExpress ограничен по размеру базы и памяти, для рабочих баз не подходит

PostgreSQL

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

shared_buffers = 8GB
effective_cache_size = 32GB
work_mem = 64MB
maintenance_work_mem = 2GB
max_connections = 500

Логика расчёта: shared_buffers около четверти памяти, отведённой СУБД, effective_cache_size около половины всей памяти. Базу заранее создавать не нужно: 1С создаст её сама при регистрации информационной базы. Роль, под которой 1С подключается к СУБД, должна иметь право создавать базы.

MS SQL Server

  1. При установке выберите сопоставление Cyrillic_General_CI_AS.
  2. Ограничьте память параметром max server memory, оставив 1С и ОС не меньше трети ОЗУ. Иначе SQL Server заберёт всё.
  3. Модель восстановления выберите осознанно: SIMPLE проще в обслуживании, FULL даёт восстановление на любой момент, но требует резервного копирования журнала транзакций.

Установка сервера 1С и настройка кластера

Установка на Windows

Запустите setup.exe из дистрибутива «Технологическая платформа 1С:Предприятия (64-bit) для Windows». В списке компонентов отметьте:

  • «Сервер 1С:Предприятия 8»;
  • «Администрирование сервера 1С:Предприятия»;
  • «Модули расширения веб-сервера», если планируете веб-доступ.

Установите сервер как службу и укажите пользователя, под которым она будет работать: установщик предлагает создать USR1CV8. После установки зарегистрируйте консоль администрирования, иначе оснастка не откроется:

regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"

Командную строку для этого запускайте от имени администратора. Затем откройте оснастку «Администрирование серверов 1С Предприятия», добавьте центральный сервер по имени машины, и в нём появится «Локальный кластер» на порту 1541.

Установка на Linux

С платформы 8.3.20 для Linux есть единый установщик. Пример установки сервера без графики:

sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws,server_admin

С версии 8.3.21 сервер запускается через systemd-шаблон, который лежит в каталоге платформы:

sudo systemctl link /opt/1cv8/x86_64/8.3.xx.xxxx/srv1cv8-8.3.xx.xxxx@.service
sudo systemctl enable --now srv1cv8-8.3.xx.xxxx@default

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

/opt/1cv8/x86_64/8.3.xx.xxxx/ras cluster --daemon
/opt/1cv8/x86_64/8.3.xx.xxxx/rac cluster list

Вторая команда выведет UUID кластера, его имя и порт. Полный список команд даёт rac help. Подключиться к такому серверу можно и из Windows-консоли, если ras запущен.

Что настроить в кластере сразу

Откройте свойства кластера и задайте администратора кластера с паролем. Без этого любой пользователь сети с консолью сможет управлять базами. Пароль запишите в хранилище паролей: восстановить его без доступа к серверу нельзя.

Как опубликовать базы на сервере для пользователей

Регистрация информационной базы

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

  • кластер серверов 1С — имя сервера, например srv1c;
  • имя информационной базы в кластере — латиницей, например buh;
  • тип СУБД, сервер баз данных, имя базы данных, пользователь и пароль СУБД;
  • флажок «Создать базу данных в случае её отсутствия».

Затем загрузите в пустую базу конфигурацию из шаблона или выгрузку .dt старой базы через Конфигуратор.

Как раздать базу пользователям

СпособКогда подходитЧто нужно
Строка в списке баз у каждогодо 10 рабочих местSrvr="srv1c";Ref="buh";
Общий список базофис, доменфайл .v8i в сетевой папке
Веб-клиент или тонкий клиент через HTTPудалённые сотрудникиApache или IIS, публикация базы
RDP / RemoteAppслабые каналы, филиалытерминальный сервер, лицензии RDS

Общий список баз. Создайте файл bases.v8i в сетевой папке и пропишите его в 1CEStart.cfg на клиентах строкой CommonInfoBases=\\srv1c\1c$\bases.v8i. Новую базу достаточно добавить в один файл, и она появится у всех.

Веб-публикация. На Windows её делают из Конфигуратора: Администрирование → Публикация на веб-сервере, Конфигуратор запускают от имени администратора. На Linux с Apache — утилитой webinst:

sudo /opt/1cv8/x86_64/8.3.xx.xxxx/webinst -apache24 -wsdir buh -dir /var/www/buh -connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2

После этого база доступна по адресу http://srv1c/buh. Наружу такую публикацию выставляйте только за HTTPS и VPN.

RemoteApp. Публикуйте не 1cv8.exe, а 1cestart.exe: тогда при обновлении платформы ярлыки у пользователей не сломаются.

Производительность сервера 1С на 50 и более пользователей

Когда пользователей больше полусотни, узкие места обычно три: диск СУБД, память рабочих процессов и долгие блокировки.

  • 🧠 Перезапуск рабочих процессов. В свойствах кластера задайте «Интервал перезапуска» (например, 86400 секунд) и «Допустимый объём памяти». Процесс, распухший от утечек, будет мягко заменён новым без обрыва сеансов.
  • ⚙️ Свойства рабочего сервера. Там же, где диапазон портов, задаются «Количество ИБ на процесс» и «Количество соединений на процесс». При 50+ пользователях и нескольких базах полезно ограничить число соединений на процесс, чтобы нагрузка распределялась.
  • 💽 Отдельные диски. Файлы данных СУБД, журналы транзакций и tempdb (для MS SQL) лучше разнести по разным NVMe.
  • 🧹 Регламентное обслуживание СУБД. Для MS SQL — еженедельное перестроение индексов и ежедневное обновление статистики. Для PostgreSQL — проверить, что работает автоочистка, и раз в неделю выполнять ANALYZE.
  • 🔒 Управляемые блокировки. Современные типовые конфигурации работают в этом режиме. Если в старой самописной базе остались автоматические блокировки, при 50+ пользователях будут постоянные ожидания.

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

Резервное копирование: скрипты и расписание

Основная копия делается средствами СУБД. Выгрузка .dt удобна для переноса, но для ежедневного бэкапа большой базы она медленная, и её лучше запускать вне рабочего времени.

Linux: ежедневно в 2:00 через cron

Скрипт /usr/local/bin/backup_1c.sh, каталог /backup/1c должен принадлежать пользователю postgres:

#!/bin/bash
set -e
DIR=/backup/1c
DATE=$(date +%F)
pg_dump -Fc -f "$DIR/buh_$DATE.dump" buh
find "$DIR" -name "buh_*.dump" -mtime +14 -delete

Сделайте его исполняемым (chmod +x), откройте расписание пользователя postgres командой sudo crontab -u postgres -e и добавьте строку:

0 2 * * * /usr/local/bin/backup_1c.sh >> /backup/1c/backup.log 2>&1

Копии старше 14 дней удаляются автоматически. Каждую ночь копируйте свежий файл на другой сервер или в облако: бэкап на том же диске не спасёт при отказе диска.

Windows и MS SQL: Планировщик заданий

Файл D:\Scripts\backup.bat:

sqlcmd -S localhost -E -Q "BACKUP DATABASE [buh] TO DISK = N'D:\Backup\buh.bak' WITH INIT"

Задание на 2:00 создаётся одной командой:

schtasks /Create /TN "Backup1C" /TR "D:\Scripts\backup.bat" /SC DAILY /ST 02:00 /RU SYSTEM

Раз в месяц восстанавливайте копию в тестовую базу и открывайте её в 1С. Копия, которую ни разу не проверяли, может не развернуться в тот день, когда она понадобится.

Ошибки при развёртывании 1С на сервере и где смотреть журналы

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

Как посмотреть последние 50 строк журнала

Подробности ошибок сервер пишет в технологический журнал. Включается он файлом logcfg.xml в каталоге conf платформы: C:\Program Files\1cv8\conf\ на Windows или /opt/1cv8/conf/ на Linux. Минимальная настройка для записи исключений:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1c_logs" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Параметр history — сколько часов хранить журнал. На Linux укажите путь вроде /var/log/1c и дайте на него права пользователю usr1cv8.

Последние 50 строк на Windows (PowerShell):

Get-ChildItem C:\1c_logs -Recurse -Filter *.log | Sort-Object LastWriteTime | Select-Object -Last 1 | Get-Content -Tail 50

На Linux — журнал службы и технологический журнал:

journalctl -u srv1cv8-8.3.xx.xxxx@default -n 50
tail -n 50 /var/log/1c/rphost_*/*.log

После диагностики сократите набор событий или удалите logcfg.xml. Полный технологический журнал за сутки на нагруженном сервере легко занимает десятки гигабайт.

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

Можно ли поставить сервер 1С и СУБД на одну машину?
Да, до 30–50 пользователей это нормальная схема. Ограничьте память СУБД, чтобы рабочим процессам 1С хватало ОЗУ.
Нужен ли домен Active Directory?
Нет. Он удобен для входа без пароля через учётную запись Windows, но сервер 1С работает и в рабочей группе.
Сколько клиентских лицензий нужно?
По числу одновременных сеансов, а не по числу сотрудников. Фоновые задания и регламентные операции клиентские лицензии не занимают.
Как обновить платформу на сервере?
Установите новую версию рядом со старой, остановите старую службу вечером, запустите новую и обновите клиентов до той же сборки. Старую версию удаляйте после проверки.
Чем ПРОФ отличается от КОРП для сервера?
КОРП нужна для расширенных функций: отказоустойчивого кластера и тонких настроек распределения нагрузки. Для одного сервера в небольшой компании обычно достаточно ПРОФ.