Сервер 1С на Linux и PostgreSQL: от чистой машины до первого пользователя
Содержание
Чтобы развернуть 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). Перед установкой сделайте три вещи:
- Задайте постоянное имя сервера:
sudo hostnamectl set-hostname srv1c. - Пропишите это имя и IP в
/etc/hostsна самом сервере и проверьте, чтоping srv1cотвечает с реального адреса, а не с127.0.1.1. - Включите русскую локаль:
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.
Администраторы
Сразу заведите двух администраторов:
- Администратор центрального сервера — в ветке «Администраторы» центрального сервера. Пока его нет, управлять агентом может любой, кто дотянулся до порта
1540. - Администратор кластера — в свойствах кластера, ветка «Администраторы».
Пароли храните вне сервера. Потеряете пароль администратора кластера — придётся останавливать службу и восстанавливать файлы кластера из резервной копии.
Управление без 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С на любом рабочем месте:
- Нажмите Добавить → «Создание новой информационной базы».
- Выберите шаблон конфигурации или «Создание информационной базы без конфигурации», если будете загружать
.dt. - Тип расположения — «На сервере 1С:Предприятия».
- Заполните параметры:
- кластер серверов
1С —
srv1c; - имя информационной базы в кластере —
buh(латиница, без пробелов); - тип СУБД — PostgreSQL;
- сервер баз данных —
localhost, если СУБД на той же машине, иначе её имя; - имя базы данных, пользователь и пароль СУБД;
- смещение дат —
0(для PostgreSQL); - флажок «Создать базу данных в случае её отсутствия».
- кластер серверов
1С —
- Включите «Установить блокировку регламентных заданий», если это копия рабочей базы: иначе тестовая копия начнёт обмениваться данными и отправлять почту от имени рабочей.
Перенос существующей файловой базы
- В файловой базе: Конфигуратор →
Администрирование → Выгрузить информационную базу→ файл.dt. - Создайте пустую базу на сервере по шагам выше.
- Откройте её в Конфигураторе →
Администрирование → Загрузить информационную базу→ выберите.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С
Test-NetConnection srv1c -Port 1540 в PowerShell, затем hosts/DNS и брандмауэр сервера.ss -tlnp на сервере и /etc/hosts: имя сервера не должно указывать на 127.0.1.1.Если служба не стартует, смотрите журнал systemd: journalctl -u srv1cv8-8.3.XX.YYYY@default -n 50. Частая причина — служба запущена дважды: старая версия платформы ещё висит на портах 1540–1541. Перед остановкой старой службы предупредите пользователей: все их сеансы оборвутся.
Частые вопросы
Можно ли поставить сервер 1С и PostgreSQL на одну машину?
Сколько стоит переход на клиент-серверный вариант?
Нужна ли отдельная лицензия на PostgreSQL?
Можно ли держать на одном кластере несколько баз?
Как обновить платформу на сервере без долгого простоя?
srvinfo подхватятся автоматически, но сделайте копию этого каталога заранее.