Сервер 1С:Предприятия 8.3 с нуля: СУБД, кластер, доступ пользователей и бэкапы
Содержание
Чтобы развернуть 1С на сервере, нужны четыре вещи: СУБД (PostgreSQL или MS SQL Server), сервер 1С:Предприятия той же версии, что у клиентов, открытые порты 1540, 1541 и 1560–1591 и серверная лицензия. Сама установка занимает час-два. Основное время уходит на подготовку ОС, настройку СУБД и проверку резервного копирования.
Ниже порядок, по которому сервер собирают на практике: от железа до момента, когда бухгалтер открывает базу у себя на компьютере. Порядок работает для платформы 8.3.2x на Windows Server 2016 и новее и на Ubuntu/Debian.
Что подготовить до установки: железо, ОС, СУБД и лицензии
Начните с расчёта нагрузки. Ориентиры ниже даны для типовых конфигураций (БП, ЗУП, УТ) и умеренной работы пользователей. Тяжёлые обработки, ERP и интеграции требуют больше.
| Пользователей | Ядра CPU | ОЗУ | Диски | Схема |
|---|---|---|---|---|
| до 15 | 4 | 16 ГБ | SSD | 1С и СУБД на одной машине |
| 15–50 | 6–8 | 32 ГБ | NVMe | одна машина, СУБД ограничена по памяти |
| 50–100 | 12–16 | 64 ГБ | 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
- Задайте серверу постоянное имя и статический IP. Имя менять после установки 1С нельзя: кластер запоминает его в своих настройках.
- Включите схему электропитания «Высокая производительность»:
powercfg /setactive SCHEME_MIN. - Откройте порты в брандмауэре:
New-NetFirewallRule -DisplayName "1C Server" -Direction Inbound -Protocol TCP -LocalPort 1540-1541,1560-1591 -Action Allow
- Исключите из проверки антивирусом каталоги баз СУБД, каталог кластера
srvinfoи временные файлы 1С. Онлайн-проверка этих папок заметно тормозит работу.
Linux (Ubuntu, Debian)
- Установите шрифты, иначе печатные формы поедут:
sudo apt install fontconfig ttf-mscorefonts-installer. - Пропишите имя сервера в
/etc/hostsи проверьте, чтоhostname -fвозвращает то же имя, по которому к серверу будут подключаться клиенты. - Откройте порты:
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 Server | Windows-инфраструктура, есть лицензии | 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
- При установке выберите сопоставление
Cyrillic_General_CI_AS. - Ограничьте память параметром
max server memory, оставив 1С и ОС не меньше трети ОЗУ. Иначе SQL Server заберёт всё. - Модель восстановления выберите осознанно:
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С на сервере и где смотреть журналы
ping srv1c с клиента.Как посмотреть последние 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. Полный технологический журнал за сутки на нагруженном сервере легко занимает десятки гигабайт.