Развертывание сервера 1С:Предприятие на Linux-системах — это не просто альтернатива Windows-решениям, а полноценный способ оптимизировать инфраструктуру для крупных баз данных, высоких нагрузок или специфических требований безопасности. Несмотря на то, что исторически ассоциируется с Windows, официальная поддержка Linux (начиная с версии платформы 8.3.10) открыла новые возможности для администраторов: от снижения лицензионных затрат до использования кластерных решений на базе PostgreSQL.

В этой статье мы разберём не только как технически работает сервер 1С на Linux, но и какие скрытые нюансы влияют на производительность системы — от выбора дистрибутива до настройки сетевых протоколов. Вы узнаете, почему некоторые операции (например, резервное копирование) на Linux выполняются быстрее, а другие (например, работа с COM-объектами) требуют дополнительных костылей. Материал будет полезен и тем, кто мигрирует с Windows, и тем, кто только планирует развернуть сервер с нуля.

Архитектура сервера 1С на Linux: ключевые компоненты

Сервер 1С:Предприятие на Linux состоит из нескольких взаимосвязанных слоёв, каждый из которых выполняет свою роль в обработке запросов клиентов. В отличие от Windows-версии, где многие процессы управляются через SCM (Service Control Manager), на Linux используется классическая модель демонов и системных служб.

Основные компоненты:

  • 🖥️ ragent — агент сервера, отвечающий за запуск и контроль рабочих процессов (rmngr и rphost). Работает как фоновый демон и управляется через systemd.
  • 🔄 rmngr — менеджер кластера, который распределяет нагрузку между рабочими процессами (rphost). На Linux его конфигурация хранится в /etc/xdg/1C/conf/.
  • 🗃️ PostgreSQL — СУБД, рекомендуемая для работы с 1С на Linux (альтернатива — Microsoft SQL Server, но только через Wine или удалённо). Взаимодействие идёт через драйвер libpq.
  • 🌐 Apache/Nginx — веб-сервер для публикации веб-клиента 1С или REST-сервисов. На Linux чаще используется Nginx из-за меньшего потребления ресурсов.

Важно понимать, что на Linux нет встроенной поддержки COM-объектов (например, для работы с Word или Excel через 1С). Для таких задач требуется либо удалённый Windows-сервер, либо эмуляция через Wine, что не всегда стабильно. Зато производительность операций с базой данных на PostgreSQL под Linux может быть выше на 15–30% по сравнению с MS SQL на Windows — это подтверждают тесты на базах объёмом от 50 ГБ.

📊 Какой дистрибутив Linux вы используете для 1С?
Ubuntu Server
CentOS/RHEL
Debian
Alt Linux
Другой

Требования к серверу: железо, ОС и зависимости

Минимальные и рекомендуемые требования к серверу зависят от количества пользователей и объёма базы данных. Однако есть универсальные правила:

Компонент Минимально Рекомендовано (50+ пользователей)
CPU 2 ядра, 2.0 ГГц 8+ ядер, 3.0 ГГц (Intel Xeon/AMD EPYC)
RAM 4 ГБ 32+ ГБ (с учётом кеша PostgreSQL)
Дисковая подсистема HDD (7200 RPM) NVMe SSD (RAID 10 для базы данных)
ОС Ubuntu 20.04 LTS, CentOS 7 Ubuntu 22.04 LTS, RHEL 9 (с ядром 5.4+)

Критические зависимости, без которых сервер 1С не запустится:

  • 📦 libxslt1.1, libgsf-1 — для работы с отчётами и печатными формами.
  • 🔗 unixodbc — если используете ODBC-соединения с другими базами.
  • 🛡️ apparmor/selinux — должны быть настроены для работы с каталогами 1С (/opt/1C/, /var/log/1C/).
⚠️ Внимание: Начиная с версии платформы 8.3.20, официально поддерживает только Ubuntu LTS, RHEL/CentOS и Alt Linux. Использование других дистрибутивов (например, Arch или Fedora) может привести к проблемам с обновлениями или работой кластера.

Для проверки совместимости вашего дистрибутива выполните команду:

cat /etc/os-release | grep "PRETTY_NAME"

Если в выводе нет поддерживаемого названия (например, Ubuntu 22.04.3 LTS), придётся либо обновить ОС, либо использовать контейнеры (Docker или LXC).

Установка сервера 1С на Linux: пошаговая инструкция

Процесс установки сервера 1С на Linux состоит из трёх этапов: подготовка системы, установка платформы и настройка кластера. Рассмотрим каждый шаг на примере Ubuntu 22.04 LTS.

Добавить пользователя usr1cv8 с правами на /opt/1C/|

Установить зависимости: sudo apt install libgsf-bin unixodbc|

Скачать дистрибутив платформы с сайта 1С (файл setup-full-*.tar.gz)|

Создать каталоги: sudo mkdir -p /opt/1C/v8.3/{x86_64,conf}|-->

1. Установка платформы:

Распакуйте архив с дистрибутивом и запустите установщик:

sudo tar -xzf setup-full-*.tar.gz -C /opt/1C/v8.3/x86_64/

sudo /opt/1C/v8.3/x86_64/setup-full

В процессе установки выберите компоненты:

- Сервер 1С:Предприятия (server);

- Администрирование сервера (server-admin);

- Клиентское приложение (client, опционально).

2. Настройка кластера:

После установки необходимо инициализировать кластер. Для этого:

  1. Создайте конфигурационный файл /etc/xdg/1C/conf/1cv8.conf:
  2. [1C:Enterprise 8.3]
    

    ServerRoot=/opt/1C/v8.3/x86_64/

    ServerPortRange=1540:1591

  3. Запустите службу srv1cv83:
  4. sudo systemctl enable srv1cv83
    

    sudo systemctl start srv1cv83

3. Проверка работы:

Убедитесь, что процессы ragent и rmngr активны:

ps aux | grep 1c

Если в выводе нет процессов, проверьте логи:

tail -n 50 /var/log/1C/srv1cv83.log
⚠️ Внимание: При установке на CentOS/RHEL может потребоваться отключить SELinux или настроить политики для каталогов 1С. Временное решение:
sudo setenforce 0

Но для продуктивной среды лучше создать кастомный модуль SELinux.

💡

Если при запуске сервера возникает ошибка libc.so.6: version `GLIBC_2.32' not found, обновите библиотеку glibc или используйте более новую версию ОС.

Настройка PostgreSQL для 1С: оптимизация и резервное копирование

PostgreSQL — рекомендуемая СУБД для 1С на Linux, но её нужно правильно настроить, чтобы избежать проблем с производительностью. Основные параметры конфигурации (/etc/postgresql/*/main/postgresql.conf):

  • 🔧 shared_buffers — должно быть не менее 25% от общей RAM (например, 8GB для сервера с 32 ГБ ОЗУ).
  • 🔧 effective_cache_size — устанавливайте в 2–3 раза больше, чем shared_buffers.
  • 🔧 maintenance_work_mem — увеличивайте до 1GB для ускорения операций VACUUM и REINDEX.
  • 🔧 random_page_cost — для SSD-дисков установите значение 1.1 (по умолчанию 4.0 для HDD).

Для резервного копирования баз 1С на PostgreSQL используйте утилиту pg_dump с опцией --format=directory (параллельное копирование). Пример команды:

sudo -u postgres pg_dump -Fd -j 4 -f /backup/1c_db_$(date +%Y%m%d) db_name

Важно: не используйте pg_dump для живых баз — это может заблокировать таблицы. Лучше настраивать репликацию или использовать WAL-архивирование:

wal_level = replica

archive_mode = on

archive_command = 'test ! -f /wal_archive/%f && cp %p /wal_archive/%f'

⚠️ Внимание: Если в базе 1С используются полнотекстовые индексы (tsvector), резервное копирование через pg_dump может занимать на 40% больше времени. В таких случаях лучше использовать pg_basebackup.
Что делать, если PostgreSQL "завис" при резервном копировании?

Если процесс pg_dump зависает, проверьте:

1. Наличие блокировок: SELECT * FROM pg_locks;

2. Активные длинные транзакции: SELECT now() - xact_start AS duration, * FROM pg_stat_activity WHERE state = 'active' ORDER BY duration DESC;

3. Загрузку дисков: iostat -x 1 (если %util близко к 100%, проблема в дисковой подсистеме).

Частая причина — нехватка work_mem для больших таблиц (например, DocumentJournal в 1С).

Публикация веб-клиента 1С через Nginx

Для доступа к 1С через браузер необходимо опубликовать веб-клиент. На Linux для этого чаще используется Nginx — он легче и быстрее Apache при обработке статических файлов. Минимальная конфигурация (/etc/nginx/sites-available/1c.conf):

server {

listen 80;

server_name 1c.yourdomain.ru;

location / {

proxy_pass http://localhost:1540;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location /ws/ {

proxy_pass http://localhost:1541;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

}

}

После настройки:

  1. Включите конфиг:
  2. sudo ln -s /etc/nginx/sites-available/1c.conf /etc/nginx/sites-enabled/
    

    sudo nginx -t # проверка конфигурации

    sudo systemctl restart nginx

  3. В консоли администрирования 1С (rac) опубликуйте веб-сервис:
  4. /opt/1C/v8.3/x86_64/rac cluster --cluster=ЛокальныйКластер publish --webserver-url=http://1c.yourdomain.ru --name=MainWebService

Для HTTPS используйте Let’s Encrypt:

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d 1c.yourdomain.ru

⚠️ Внимание: Если после публикации веб-клиент не открывается, проверьте:

- Порт 1540 должен быть открыт в фаерволе (sudo ufw allow 1540).

- В логах Nginx (/var/log/nginx/error.log) не должно быть ошибок вида connect() failed (111: Connection refused) — это означает, что ragent не запущен.

Оптимизация производительности: от ядра ОС до запросов 1С

Производительность сервера 1С на Linux зависит не только от "железа", но и от настроек ОС и СУБД. Вот ключевые параметры для оптимизации:

  • 🔄 Ядро ОС: Используйте ядро с низкой латентностью (linux-lowlatency для Ubuntu) или настройте sysctl:
    vm.swappiness=10
    

    vm.dirty_ratio=5

    vm.dirty_background_ratio=3

  • 🗄️ PostgreSQL: Для баз 1С отключите ненужные расширения в postgresql.conf:
    shared_preload_libraries = ''  # если не используете pg_stat_statements
  • 🔌 1С-кластер: Увеличьте количество рабочих процессов (rphost) в 1cv8.conf:
    [1C:Enterprise 8.3]
    

    MaxNumberOfWorkingProcesses=10 # по умолчанию 5

Для мониторинга нагрузки используйте:

  • 📊 htop — для наблюдения за процессами rphost.
  • 📈 pg_top — для анализа запросов PostgreSQL.
  • 🔍 iotop — если подозреваете проблемы с дисковой подсистемой.

Критическая особенность Linux-версии 1С: при высокой нагрузке (100+ пользователей) рабочие процессы (rphost) могут "засыпать" из-за ограничений epoll. Решение — увеличить лимит открытых файлов для пользователя usr1cv8:

echo "usr1cv8 soft nofile 65536" | sudo tee -a /etc/security/limits.conf

echo "usr1cv8 hard nofile 65536" | sudo tee -a /etc/security/limits.conf

💡

На Linux сервер 1С может показывать лучшую производительность при работе с большими базами (100+ ГБ) за счёт более эффективного управления памятью в PostgreSQL по сравнению с MS SQL на Windows.

Типичные ошибки и их решения

Даже при правильной установке на Linux могут возникать специфические ошибки. Рассмотрим самые распространённые:

Ошибка Причина Решение
Ошибка формата потока при подключении клиента Несовпадение версий платформы на сервере и клиенте Обновите клиентское ПО до версии сервера (/opt/1C/v8.3/x86_64/setup-full)
Could not connect to server: Connection refused (0x0000000D) Порт 1540 заблокирован фаерволом или ragent не запущен Проверьте sudo systemctl status srv1cv83 и sudo ufw status
FATAL: password authentication failed for user "usr1cv8" Неверные права доступа к PostgreSQL Проверьте pg_hba.conf и перезапустите PostgreSQL
Медленная работа отчётов Недостаточно work_mem в PostgreSQL Увеличьте work_mem до 256MB–1GB в postgresql.conf

Если в логах 1С (/var/log/1C/srv1cv83.log) появляется ошибка:

ALERT: Cluster manager failed to start working process

проверьте:

  1. Наличие свободной памяти (free -h).
  2. Права на каталог /opt/1C/v8.3/ для пользователя usr1cv8.
  3. Отсутствие ограничений ulimit -a (должно быть open files >= 65536).

FAQ: Частые вопросы по серверу 1С на Linux

Можно ли использовать MS SQL Server вместо PostgreSQL на Linux?

Технически да, но только через:

  • Удалённый сервер MS SQL на Windows (рекомендуемый вариант).
  • Локальный MS SQL на Linux (через Docker или native-установку), но это не поддерживается 1С официально.

PostgreSQL остаётся приоритетным выбором из-за лучшей интеграции с платформой 1С на Linux.

Как обновить сервер 1С на Linux?

Процесс обновления:

  1. Остановите кластер: sudo systemctl stop srv1cv83.
  2. Скачайте новый дистрибутив с сайта 1С и распакуйте его в /opt/1C/v8.3/x86_64/.
  3. Запустите установщик: sudo /opt/1C/v8.3/x86_64/setup-full --update.
  4. Перезапустите службу: sudo systemctl start srv1cv83.

Важно: перед обновлением сделайте резервную копию каталога /etc/xdg/1C/conf/ — там хранятся настройки кластера.

Поддерживает ли 1С на Linux работу с внешними компонентами (например, для печати этикеток)?

Частично. Нативные компоненты для Linux:

  • 🖨️ 1C:Печать штрихкодов (через libbarcode).
  • 📄 1C:PDF (генерация PDF-файлов).

COM-объекты (например, для Word или Excel) не работают. Альтернативы:

  • Использовать LibreOffice в головном режиме через unoconv.
  • Выносить COM-задачи на отдельный Windows-сервер.
Как настроить резервное копирование баз 1С на Linux?

Оптимальный сценарий:

  1. Для PostgreSQL: pg_dump + WAL-архивирование.
  2. Для файлов конфигурации: rsync каталога /opt/1C/ на резервный сервер.
  3. Автоматизация через cron:
    0 2   * /usr/bin/pg_dump -Fc -f /backup/1c_db_$(date +\%Y\%m\%d).dump db_name

Для больших баз (>100 ГБ) используйте pg_basebackup с инкрементальными копиями.

Можно ли запустить 1С на Linux в Docker-контейнере?

Да, но с оговорками:

  • ✅ Официальные образы от 1С отсутствуют, но есть community-решения (например, advantsh/1c-enterprise).
  • ⚠️ В контейнере сложнее настроить systemd для ragent — придётся использовать supervisord.
  • 🗃️ Для PostgreSQL лучше использовать отдельный контейнер с volume для данных.

Пример docker-compose.yml:

version: '3'

services:

postgres:

image: postgres:13

volumes:

- pg_data:/var/lib/postgresql/data

server1c:

image: advantsh/1c-enterprise:8.3.20

ports:

- "1540:1540"

depends_on:

- postgres

volumes:

pg_data: