Сервер 1С:Предприятия и PostgreSQL на Linux: установка с нуля до рабочей базы
Содержание
Чтобы установить сервер
1С и PostgreSQL, нужны четыре шага: поставить сборку PostgreSQL с патчами для 1С, задать пароль и доступ в pg_hba.conf, установить сервер 1С:Предприятия 8.3 из единого дистрибутива setup-full и запустить его службу, а затем создать информационную базу в кластере с типом СУБД PostgreSQL. На чистой Ubuntu или Debian вся процедура занимает час-полтора.
Типичная ситуация: компания выросла до 15 пользователей, файловая база начала тормозить и ловить блокировки. Покупать MS SQL дорого, поэтому выбирают Linux, сервер 1С и бесплатную СУБД. Ниже — порядок, который работает на практике, с командами и проверками после каждого этапа.
1. Подготовка сервера под 1С и PostgreSQL
Начните с железа и операционной системы. Сервер 1С и СУБД можно держать на одной машине — для небольшой компании это нормальный вариант.
Ориентиры по ресурсам
| Пользователей | CPU | RAM | Диск |
|---|---|---|---|
| до 10 | 4 ядра | 8–16 ГБ | SSD от 100 ГБ |
| 10–30 | 6–8 ядер | 16–32 ГБ | NVMe SSD от 200 ГБ |
| 30–60 | 8–16 ядер | 32–64 ГБ | NVMe, база и журналы на разных дисках |
Цифры примерные: тяжёлая УПП или ERP с закрытием месяца съест больше, чем Бухгалтерия на 10 пользователей. Главное — SSD. На HDD PostgreSQL под 1С работает заметно медленнее.
Операционная система
- 🐧 Берите дистрибутив из списка поддерживаемых в системных требованиях вашей версии платформы. Чаще всего ставят Ubuntu LTS, Debian, Astra Linux, РЕД ОС или Альт.
- 🌐 Задайте серверу постоянный IP-адрес и понятное имя хоста, например
srv1c. - 🔤 Включите русскую локаль — без неё PostgreSQL создаст кластер не в той кодировке.
sudo apt update && sudo apt upgrade -y
sudo hostnamectl set-hostname srv1c
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
Имя сервера и порты
Клиенты 1С обращаются к кластеру по имени хоста, а не только по IP. Если имя не резолвится с рабочего места, подключение упадёт, даже когда порты открыты. Добавьте запись в DNS организации или в файл hosts на каждом клиенте (в Windows — C:\Windows\System32\drivers\etc\hosts):
192.168.1.10 srv1c
Порты, которые должны быть открыты в межсетевом экране:
| Порт | Что слушает |
|---|---|
| 1540 | агент сервера (ragent) |
| 1541 | менеджер кластера (rmngr) |
| 1560–1591 | рабочие процессы (rphost) |
| 1545 | сервер администрирования (ras), если используете |
| 5432 | PostgreSQL, если СУБД на отдельной машине |
sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp
Порт 5432 наружу не открывайте. Если сервер 1С и СУБД на одной машине, PostgreSQL достаточно слушать localhost.
2. Установка PostgreSQL для 1С и первичная настройка
Обычный PostgreSQL из репозитория дистрибутива для 1С не подходит. Платформе нужны дополнительные расширения (типы mchar, mvarchar и другие), которых в «ванильной» сборке нет. Есть два источника правильной сборки:
- 📦 дистрибутив PostgreSQL для 1С с портала обновлений 1С (нужен договор сопровождения);
- 📦 бесплатная сборка PostgreSQL для 1С от компании Postgres Professional из её репозитория.
Версию СУБД сверяйте с требованиями вашего релиза платформы: новые выпуски PostgreSQL поддерживаются не сразу.
Установка пакетов
Если скачали архив с deb-пакетами, распакуйте его и поставьте все пакеты разом — apt сам подтянет зависимости:
mkdir ~/pg1c && cd ~/pg1c
tar -xzf ~/postgresql-*.tar.gz # имя архива — ваше
sudo apt install ./*.deb
Сразу заблокируйте пакеты от обновления, иначе при apt upgrade система может заменить сборку для 1С обычной:
sudo apt-mark hold $(dpkg -l | awk '/postgresql/ {print $2}')
Пароль и проверка работы
sudo systemctl status postgresql
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'СложныйПароль';"
sudo -u postgres psql -c "SHOW lc_collate;"
Последняя команда должна вернуть ru_RU.UTF-8. Если там C или en_US.UTF-8, кластер инициализирован без русской локали — пересоздайте его, пока в нём нет баз.
Доступ: postgresql.conf и pg_hba.conf
Файлы лежат в каталоге конфигурации кластера. Узнать путь можно так:
sudo -u postgres psql -c "SHOW config_file;"
sudo -u postgres psql -c "SHOW hba_file;"
Если СУБД и сервер 1С на одной машине, хватит строки для локальных подключений по паролю в pg_hba.conf:
host all all 127.0.0.1/32 scram-sha-256
Если СУБД отдельно — в postgresql.conf пропишите listen_addresses = '*', а в pg_hba.conf разрешите только IP сервера 1С:
host all all 192.168.1.10/32 scram-sha-256
После правок: sudo systemctl restart postgresql.
💡 Заведите для 1С отдельного пользователя СУБД с правом создавать базы вместо работы под postgres. Так проще разграничить доступ и аудит.
3. Как установить сервер 1С:Предприятия 8.3 на Linux
Начиная с версии 8.3.20, платформа для Linux поставляется единым установщиком setup-full-8.3.xx.xxxx-x86_64.run. Скачайте дистрибутив «Технологическая платформа 1С:Предприятия (64-bit) для Linux» той же версии, что используется у клиентов.
Зависимости
Для корректного вывода отчётов и печатных форм нужны шрифты:
sudo apt install -y fontconfig ttf-mscorefonts-installer
Запуск установщика
chmod +x setup-full-8.3.24.1467-x86_64.run
sudo ./setup-full-8.3.24.1467-x86_64.run --mode unattended --enable-components server,ws
Номер версии подставьте свой. Компонент server — сам сервер, ws — модуль расширения веб-сервера (нужен для публикации баз и веб-клиента). Полный список компонентов выведет запуск с ключом --help. Без ключей установщик откроет графический мастер, если на сервере есть графическая среда.
Платформа встаёт в /opt/1cv8/x86_64/<версия>/. Установщик сам создаёт системного пользователя usr1cv8, от имени которого работает сервер.
Регистрация и запуск службы
В каталоге версии лежит юнит systemd. Подключите его, включите автозапуск и запустите:
V=8.3.24.1467
sudo systemctl link /opt/1cv8/x86_64/$V/srv1cv8-$V@.service
sudo systemctl enable srv1cv8-$V@default
sudo systemctl start srv1cv8-$V@default
sudo systemctl status srv1cv8-$V@default
Проверьте, что порты слушаются:
sudo ss -tlnp | grep -E '1540|1541'
Если в выводе есть ragent и rmngr, кластер поднялся.
Лицензия сервера
Для работы сервера 1С нужна серверная лицензия — программная или аппаратный ключ. Программную активируют при первом подключении к базе через клиент 1С или сразу на сервере. Клиентские лицензии нужны дополнительно, по числу одновременных пользователей. Без лицензии платформа базу не запустит.
Программная лицензия привязывается к параметрам оборудования. Не меняйте сетевую карту, диски и имя хоста после активации без необходимости — лицензия может «слететь», а число повторных активаций ограничено.
4. Создание информационной базы в кластере 1С на PostgreSQL
Самый простой способ — из клиента 1С на рабочем месте администратора.
- Запустите 1С:Предприятие, в окне списка баз нажмите
Добавить. - Выберите
Создание новой информационной базы, затем пустую базу или шаблон. - На шаге выбора варианта расположения отметьте
На сервере 1С:Предприятия. - Заполните поля:
Кластер серверов 1С:Предприятия—srv1c(имя хоста, не IP);Имя информационной базы в кластере— например,buh;Тип СУБД—PostgreSQL;Сервер баз данных—localhost, если СУБД на той же машине, иначе её адрес;Имя базы данных— обычно совпадает с именем в кластере;- пользователь и пароль СУБД из раздела 2.
- Отметьте
Создать базу данных в случае ее отсутствия. - Решите, нужен ли флажок
Разрешить выдачу лицензий сервером 1С:Предприятия: включайте, если клиентские лицензии установлены на сервере. - Нажмите
ДалееиГотово. Платформа создаст базу в PostgreSQL и зарегистрирует её в кластере.
Если вы переносите существующую базу, создайте пустую и загрузите выгрузку: Конфигуратор → Администрирование → Загрузить информационную базу, файл .dt. Загрузка требует монопольного доступа, на пустой базе это не проблема.
Через командную строку
На сервере без клиента базу можно создать утилитой rac. Ей нужен запущенный сервер администрирования ras:
cd /opt/1cv8/x86_64/8.3.24.1467
sudo -u usr1cv8 ./ras cluster --daemon
./rac cluster list
Из вывода возьмите cluster — идентификатор кластера. Создание базы выглядит так:
./rac infobase create --cluster=<id_кластера> \
--create-database --name=buh --dbms=PostgreSQL \
--db-server=localhost --db-name=buh --locale=ru \
--db-user=postgres --db-pwd='СложныйПароль'
Набор параметров зависит от версии платформы — сверьтесь с ./rac help infobase.
5. Настройка производительности: параметры PostgreSQL и сервера 1С
Сборки для 1С уже содержат разумные настройки по умолчанию, но они рассчитаны на небольшую машину. Под реальную нагрузку параметры памяти стоит поднять. Ниже ориентиры для выделенного сервера с 32 ГБ RAM, где 1С и СУБД работают вместе.
Параметр postgresql.conf | Ориентир | Зачем |
|---|---|---|
shared_buffers | 8GB (≈25% RAM) | кэш данных СУБД |
effective_cache_size | 16GB (≈50% RAM) | подсказка планировщику о кэше ОС |
work_mem | 64MB | сортировки и соединения в запросах |
maintenance_work_mem | 1GB | VACUUM, создание индексов |
temp_buffers | 256MB | 1С активно использует временные таблицы |
max_connections | 200–500 | каждый сеанс 1С держит соединения |
max_locks_per_transaction | 256 | реструктуризация больших конфигураций |
random_page_cost | 1.1 | для SSD вместо значения 4 |
Помните: work_mem выделяется на каждую операцию в каждом соединении. При 300 соединениях 64 МБ легко превращаются в десятки гигабайт, поэтому не завышайте его. Когда 1С и СУБД на одной машине, оставьте серверу 1С примерно треть памяти — рабочие процессы rphost под нагрузкой занимают по 2–4 ГБ.
Изменение shared_buffers и max_connections требует перезапуска PostgreSQL. Перезапуск обрывает все сеансы 1С: делайте его вне рабочего времени, предупредив пользователей.
Обслуживание
- 🧹 Не отключайте
autovacuum. Без него таблицы раздуваются, а запросы деградируют за недели. - 📊 Раз в неделю, ночью, запускайте
vacuumdb --all --analyzeот пользователяpostgres. - 💾 Настройте резервное копирование
:
pg_dump -Fcдля каждой базы по расписанию плюс выгрузка.dtперед обновлениями.
Со стороны кластера 1С
В свойствах рабочего сервера можно ограничить память рабочих процессов и задать Безопасный расход памяти за один вызов, чтобы один тяжёлый отчёт не положил сервер. На Linux эти настройки меняют через rac или через консоль администрирования на Windows-машине, подключённой к ras.
💡 Для баз до 30–40 пользователей одного рабочего процесса хватает. Добавлять процессы стоит по факту нагрузки, а не заранее.
6. Диагностика и логи: почему не подключается сервер 1С или PostgreSQL
При сбое смотрите в три места: журнал службы 1С, журнал PostgreSQL и сетевую доступность.
sudo journalctl -u srv1cv8-8.3.24.1467@default -n 100
sudo tail -n 100 /var/log/postgresql/*.log
sudo ss -tlnp | grep -E '1540|1541|5432'
Каталог логов PostgreSQL зависит от сборки; если в /var/log/postgresql пусто, путь покажет SHOW log_directory;.
Для глубокого разбора включают технологический журнал: файл logcfg.xml кладут в /opt/1cv8/conf/. Пишите в журнал только нужные события (например, EXCP — исключения) и задайте срок хранения: полный журнал за пару часов съедает десятки гигабайт.
ping srv1c с рабочего места, запись в DNS или hosts, правила ufw для 1540, 1541 и 1560–1591.sudo systemctl reload postgresql.Если ничего не помогло
- Остановите службу 1С (сеансы пользователей оборвутся — делайте это без людей в базе).
- Запустите агент вручную от
usr1cv8в консоли:sudo -u usr1cv8 /opt/1cv8/x86_64/<версия>/ragent— ошибки старта будут видны сразу. - Подключитесь к СУБД с сервера 1С вручную:
psql -h <адрес_СУБД> -U postgres -d postgres. Если не пускаетpsql, не пустит и 1С.
Частые вопросы
Можно ли поставить сервер 1С на Linux, а PostgreSQL на Windows?
Подойдёт ли PostgreSQL из стандартного репозитория Ubuntu?
Нужна ли лицензия на PostgreSQL?
Можно ли держать несколько версий сервера 1С на одном Linux-сервере?
Как перенести файловую базу на сервер?
.dt из Конфигуратора файловой базы, создайте пустую базу в кластере и загрузите туда выгрузку. Данные, пользователи и настройки переносятся целиком.