1С:Предприятие 8.3 на Linux-сервере: от установки пакетов до первой рабочей базы

· 10 мин

Содержание

Сервер 1С на Linux работает так же, как на Windows: агент ragent принимает подключения на порту 1540, менеджер кластера rmngr слушает 1541, а рабочие процессы rphost выполняют код конфигурации и ходят в СУБД. Разница не в архитектуре, а в установке и обслуживании: служба systemd вместо службы Windows, PostgreSQL вместо MS SQL, Apache вместо IIS.

Частое заблуждение — что «1С под Linux урезанная». Серверная часть платформы 8.3 на Linux полноценная: те же базы, тот же кластер, та же консоль администрирования. Ограничения касаются в основном клиента и внешних компонент под Windows, а не сервера.

Из чего состоит кластер 1С на Linux

Сервер 1С — это не одна программа, а набор процессов. Каждый отвечает за своё.

ПроцессПорт по умолчаниюЧто делает
ragent1540Агент сервера: точка входа для клиентов и консоли
rmngr1541Менеджер кластера: реестр баз, сеансы, блокировки
rphost1560–1591Рабочие процессы: выполняют серверный код, работают с СУБД
ras1545Сервер администрирования для утилиты rac и консолей

Клиент сначала обращается к агенту на 1540, тот передаёт его менеджеру кластера, а дальше соединение уходит на один из рабочих процессов. Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера. Отсюда главное правило для файрвола: открыть нужно не один порт, а весь набор.

Где что лежит после установки:

  • 📁 /opt/1cv8/x86_64/<версия>/ — исполняемые файлы платформы конкретной версии;
  • 📁 /home/usr1cv8/.1cv8/1C/1cv8/ — каталог кластера по умолчанию: реестр баз, журналы регистрации, сеансовые данные;
  • 📁 /opt/1cv8/conf/ — сюда кладут logcfg.xml для технологического журнала;
  • 👤 usr1cv8 — системный пользователь, от которого работает служба.

Несколько версий платформы ставятся рядом, в разные каталоги. Это удобно для обновления: новую версию можно поставить заранее, а переключиться позже.

Что нужно серверу 1С на Linux: железо, дистрибутив, пакеты

Требования к железу зависят от числа пользователей и тяжести конфигурации. Ориентиры для одной машины, где стоят и 1С, и PostgreSQL:

НагрузкаCPURAMДиск
До 10 пользователей, БП/ЗУП4 ядра16 ГБSSD от 200 ГБ
20–50 пользователей, УТ/КА8 ядер32–64 ГБNVMe, отдельный том под СУБД
Больше 50, ERPот 16 ядерот 64 ГБСервер СУБД выносят отдельно

Цифры ориентировочные. Узкое место чаще всего — диск под СУБД и частота ядер, а не их количество: один тяжёлый отчёт выполняется в одном потоке.

Дистрибутивы. Официально поддерживаются Ubuntu и Debian, RHEL-совместимые системы, а также российские Astra Linux, РЕД ОС и Альт. Актуальный перечень приводят в документации к каждой версии платформы — сверяйтесь с ним перед выбором ОС.

Что подготовить заранее:

  • 🌐 постоянный IP и имя хоста, которое разрешается и на самом сервере, и на всех клиентах;
  • 🔤 локаль ru_RU.UTF-8 в системе — без неё PostgreSQL не создаст базу с нужной сортировкой;
  • 🔠 шрифты (например, пакет ttf-mscorefonts-installer в Ubuntu) — иначе печатные формы и PDF на сервере поедут;
  • 🔑 лицензия сервера: программная (активируется в файл) или аппаратный ключ HASP — для него нужен драйвер aksusbd.

Имя хоста — источник половины проблем при первом подключении. Сервер сообщает клиенту своё имя, и клиент должен его разрешить. Если DNS нет, пропишите имя сервера в /etc/hosts на клиентах или в C:\Windows\System32\drivers\etc\hosts на Windows.

Установка сервера 1С на Linux по шагам

Начиная с платформы 8.3.20 сервер под Linux поставляется единым установщиком setup-full-<версия>-x86_64.run вместо набора deb- и rpm-пакетов. Порядок ниже — для него.

1. Подготовьте систему

Обновите пакеты, задайте имя хоста и проверьте локаль:

sudo apt update && sudo apt upgrade -y
sudo hostnamectl set-hostname srv1c
sudo locale-gen ru_RU.UTF-8
locale -a | grep ru_RU

Добавьте в /etc/hosts строку с IP сервера и его именем, если она не появилась сама.

2. Запустите установщик

Скачайте дистрибутив технологической платформы для Linux с портала поддержки, распакуйте архив и запустите установку без графического интерфейса:

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

Компонент server — сам сервер, ws — модули веб-сервера для публикации, server_admin — сервер администрирования ras. Клиент на сервер ставить не обязательно.

3. Подключите службу systemd

В каталоге версии лежит готовый шаблон юнита. Его подключают ссылкой и включают экземпляр default:

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
systemctl status srv1cv8-8.3.xx.xxxx@default

Если в статусе active (running), а ss -tlnp | grep 154 показывает порты 1540 и 1541 — сервер жив. В старых версиях платформы вместо юнита использовался скрипт /etc/init.d/srv1cv83.

4. Откройте порты

Для ufw это выглядит так:

sudo ufw allow 1540:1541/tcp
sudo ufw allow 1560:1591/tcp
sudo ufw allow 1545/tcp

Порт 1545 открывайте только для машин администраторов, а не для всей сети.

5. Активируйте лицензию и создайте базу

Программную лицензию проще всего активировать при первом запуске любой базы с клиента: мастер получения лицензии сохранит файл на сервере. Базу создают через консоль администрирования с Windows-машины или через rac прямо на сервере. Для проверки кластера:

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

Команда выведет идентификатор кластера, порт и имя хоста. Остальные подкоманды смотрите в справке rac help.

Перед подключением первого пользователя
Выполнено: 0 / 6

PostgreSQL под 1С: какую сборку ставить и как настроить

Обычный PostgreSQL из репозитория дистрибутива для 1С не подходит. Нужна сборка с патчами под платформу: PostgreSQL от фирмы 1С с портала поддержки или Postgres Pro для 1С. Версию СУБД выбирайте по списку совместимости вашей версии платформы.

Параметры, которые стоит поменять сразу

Настройки по умолчанию рассчитаны на слабую машину. Для сервера с 32 ГБ под СУБД отправная точка в postgresql.conf такая:

ПараметрЗначениеСмысл
shared_buffers8GBОколо 25% памяти, отданной СУБД
effective_cache_size22GBПодсказка планировщику: сколько кэширует ОС
work_mem64MBПамять на сортировку в одном запросе
maintenance_work_mem1GBДля VACUUM и построения индексов
max_connections300С запасом: каждый рабочий процесс открывает свои соединения
random_page_cost1.1Для SSD и NVMe

work_mem выделяется на каждую операцию сортировки, а не на соединение. При 300 соединениях большое значение легко съест всю память — поднимайте его постепенно и смотрите на нагрузку.

Если 1С и СУБД на одной машине, делите память: например, 32 ГБ под PostgreSQL и остаток под rphost. Кластер 1С под нагрузкой тоже потребляет гигабайты.

Резервное копирование: три уровня

СпособЧто даётКогда применять
pg_dump -FcКопия одной базы на момент запускаЕжедневно, ночью
pg_basebackup + архив WALВосстановление на любой момент времениДля баз, где потеря часа работы критична
Выгрузка .dt из КонфигуратораПереносимая копия, не зависит от СУБДПеред обновлением, для переезда

Простой ночной дамп через cron:

pg_dump -U postgres -Fc -f /backup/buh_$(date +%F).dump buh
find /backup -name 'buh_*.dump' -mtime +14 -delete

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

Веб-клиент через Apache и Nginx

Модуль веб-расширения 1С работает внутри Apache: утилита webinst умеет публиковать базы только в него (и в IIS на Windows). Nginx напрямую модуль 1С не загружает. Рабочая схема на Linux — Apache публикует базу на внутреннем порту, а Nginx стоит перед ним, принимает HTTPS и проксирует запросы.

Публикация в Apache

Поставьте Apache, переведите его на внутренний порт (например, 8080 в /etc/apache2/ports.conf) и опубликуйте базу:

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

После этого база открывается по адресу http://srv1c:8080/buh. Проверьте это до настройки Nginx — так проще понять, где ошибка.

Nginx впереди

Минимальный блок для проксирования с HTTPS:

server {
    listen 443 ssl http2;
    server_name 1c.example.ru;
    ssl_certificate     /etc/letsencrypt/live/1c.example.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/1c.example.ru/privkey.pem;

    client_max_body_size 200m;
    proxy_read_timeout 600s;

    location /buh/ {
        proxy_pass http://127.0.0.1:8080/buh/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Два параметра важнее остальных. client_max_body_size — без него не загрузятся файлы больше 1 МБ: вложения, выписки, обмены. proxy_read_timeout — без него Nginx оборвёт длинный отчёт или проведение через 60 секунд.

Не публикуйте базу в интернет по голому HTTP и с пользователями без пароля. Веб-клиент открыт для перебора паролей так же, как любая форма входа.

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

Скорость 1С на Linux упирается в те же четыре слоя, что и везде. Идите сверху вниз и не меняйте всё сразу.

Уровень ОС

  • 🧠 vm.swappiness = 10 в /etc/sysctl.conf — система реже уводит в своп память СУБД;
  • 📦 прозрачные огромные страницы (THP) для PostgreSQL лучше выключить: они дают задержки при выделении памяти;
  • 💾 файловая система для данных СУБД — ext4 или XFS с опцией noatime;
  • ⚡ режим энергосбережения процессора — performance, иначе частота плавает и одиночные запросы тормозят.

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

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

Проверьте и ограничение памяти рабочих процессов. Если оно не задано, утечка в одном rphost может съесть всю память сервера. Порог задают в свойствах рабочего сервера; при превышении процесс перезапускается.

Уровень запросов

Когда железо в порядке, а отчёт всё равно идёт минуты — виноват запрос. Включите технологический журнал: файл logcfg.xml в /opt/1cv8/conf/ с событиями DBPOSTGRS длительностью больше секунды. Журнал покажет текст тяжёлых запросов и место в коде, откуда они вызваны.

Технологический журнал быстро растёт. Ставьте ограничение по времени хранения и включайте только те события, которые разбираете сейчас.

Ошибки при запуске и подключении

Почти все проблемы первого запуска укладываются в несколько сценариев. Выберите свой симптом:

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

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

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

Можно ли перенести готовую базу с Windows-сервера на Linux?
Да. Выгрузите базу в .dt в Конфигураторе на старом сервере, создайте пустую базу в новом кластере на PostgreSQL и загрузите туда файл. Перенос через .dt не зависит от СУБД, поэтому годится и при переходе с MS SQL.
Нужен ли графический интерфейс на сервере?
Нет. Сервер 1С, PostgreSQL и Apache работают как службы и настраиваются из консоли. Кластером управляют консолью с Windows-машины или утилитой rac.
Можно ли держать на одном сервере две версии платформы?
Да, версии ставятся в разные каталоги под /opt/1cv8/x86_64/. Но два кластера одновременно должны слушать разные порты, иначе второй не запустится.
Работают ли внешние компоненты на Linux-сервере?
Только те, что собраны под Linux. Компонента, у которой есть лишь Windows-библиотека, на сервере под Linux не загрузится — проверяйте это до переезда, особенно для торгового оборудования и обменов с банками.
Как обновить платформу на сервере без долгого простоя?
Поставьте новую версию заранее рядом со старой. В окно обслуживания остановите старую службу, подключите юнит новой версии с тем же каталогом кластера и обновите клиентов.