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

· 11 мин

Содержание

Сервер 1С на Linux ставится в четыре этапа: подготовить систему (локаль ru_RU.UTF-8, имя хоста, шрифты), запустить единый установщик setup-full-8.3.xx.xxxx-x86_64.run с компонентами сервера, поставить PostgreSQL в сборке для 1С и подключить службу srv1cv8 через systemd. После первого запуска службы агент сам создаёт локальный кластер на порту 1541, и в нём уже можно регистрировать информационные базы.

Порядок зависит от версии платформы. Начиная с 8.3.20 вместо набора deb- и rpm-пакетов выпускается один установщик .run для всех дистрибутивов, а с 8.3.21 в комплекте идёт готовый unit-файл для systemd. Инструкция ниже написана под эти версии и под Ubuntu/Debian; для rpm-систем (RED OS, ALT, Rocky) меняются только команды пакетного менеджера.

1. Подготовка Linux перед установкой сервера 1С

Что нужно до установки:

  • 🖥️ 64-разрядный дистрибутив: Ubuntu, Debian, Astra Linux, РЕД ОС, Альт и подобные;
  • 🧠 ориентир по памяти — от 8 ГБ для сервера 1С и PostgreSQL на одной машине на 10–20 пользователей; от 16 ГБ, если пользователей больше или базы тяжёлые (ERP, ЗУП на сотни сотрудников);
  • 💽 SSD под каталог данных PostgreSQL — это главный фактор скорости;
  • 📦 архив платформы server64_8_3_xx_xxxx.tar.gz из личного кабинета поставщика и лицензия на сервер (программная или аппаратный ключ).

Локаль

PostgreSQL для 1С создаёт базы в русской локали. Если её нет в системе, создание базы упадёт с ошибкой про локаль.

sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
locale -a | grep ru_RU

Имя хоста

Это самый частый источник проблем, поэтому сразу. Клиенты 1С подключаются к серверу по имени, а не по IP: даже если в строке подключения указан адрес, сервер отдаёт клиенту своё имя хоста, и дальше клиент идёт по нему.

Задайте понятное имя и пропишите его в /etc/hosts с реальным IP, а не с 127.0.1.1, который Ubuntu и Debian ставят по умолчанию:

sudo hostnamectl set-hostname srv1c
# в /etc/hosts:
192.168.1.10   srv1c

То же имя должно резолвиться на каждом клиенте: через DNS или через строку в C:\Windows\System32\drivers\etc\hosts.

Шрифты и зависимости

Сервер формирует печатные формы, отчёты в PDF и диаграммы. Без шрифтов в табличных документах поедет вёрстка.

sudo apt update
sudo apt install -y fontconfig ttf-mscorefonts-installer
sudo fc-cache -fv

Время на сервере сверьте с NTP (timedatectl). Расхождение часов с клиентами путает журнал регистрации и регламентные задания.

2. Установка сервера 1С на Linux единым дистрибутивом

Распакуйте архив и сделайте установщик исполняемым:

tar -xzf server64_8_3_25_1394.tar.gz
chmod +x setup-full-8.3.25.1394-x86_64.run

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

sudo ./setup-full-8.3.25.1394-x86_64.run --mode unattended \
  --enable-components server,ws,server_admin

Что означают компоненты:

КомпонентЧто ставитКогда нужен
serverагент, менеджер кластера, рабочие процессывсегда
wsмодули расширения веб-сервера, утилита webinstдля публикации баз и веб-сервисов
server_adminсервер администрирования ras и утилита racдля управления кластером с Linux
client_full, client_thinклиенты 1Сна сервере обычно не нужны

Платформа встаёт в /opt/1cv8/x86_64/8.3.25.1394/. Установщик создаёт системного пользователя usr1cv8, от имени которого работает сервер. Данные кластера хранятся в его домашнем каталоге: /home/usr1cv8/.1cv8/1C/1cv8/.

Каждая версия платформы ставится в свой каталог и не удаляет предыдущую. Это удобно для отката, но служба запускается от конкретной версии — после обновления её нужно переключить (см. раздел о службе).

На версиях до 8.3.20 установка шла пакетами 1c-enterprise83-common, 1c-enterprise83-server, 1c-enterprise83-ws через dpkg -i или rpm -i. Если ставите новый сервер — берите актуальный установщик, к пакетам возвращаться незачем.

3. PostgreSQL для 1С: установка и настройка СУБД

Обычный PostgreSQL из репозитория дистрибутива для 1С не подходит. Нужна сборка с доработками под платформу: её выпускают фирма 1С (дистрибутив «PostgreSQL для 1С» доступен там же, где платформа) и Postgres Professional (бесплатная редакция для 1С). Ставьте ту мажорную версию СУБД, которую поддерживает ваша версия платформы, — список поддерживаемых версий есть в описании релиза.

Установка

Для сборки Postgres Professional порядок такой: подключить их репозиторий по инструкции на сайте, поставить пакет и инициализировать кластер СУБД с русской локалью. Для сборки фирмы 1С — установить deb-пакеты из архива через apt install ./*.deb и тоже инициализировать кластер.

Проверьте после установки:

sudo systemctl status postgresql*
sudo -u postgres psql -c "SHOW lc_collate;"

В ответе должно быть ru_RU.UTF-8. Если там C или en_US, кластер СУБД создан без нужной локали — проще пересоздать его сейчас, пока в нём нет данных.

Пароль и доступ

Серверу 1С нужен пользователь СУБД с правом создавать базы. Самый простой вариант — задать пароль пользователю postgres:

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'СложныйПароль';"

Аккуратнее — отдельная роль с правом создания баз, без прав суперпользователя на всё остальное. В pg_hba.conf оставьте парольную аутентификацию (scram-sha-256 или md5) и откройте доступ только тем адресам, откуда реально подключается сервер 1С. Если 1С и СУБД на одной машине, хватит 127.0.0.1/32.

Параметры памяти

Сборки для 1С уже содержат часть нужных значений, но память под конкретный сервер выставляют вручную в postgresql.conf:

ПараметрОриентирЗачем
shared_buffers25% ОЗУкэш страниц самой СУБД
effective_cache_size50–75% ОЗУподсказка планировщику про кэш ОС
work_mem32–64 МБсортировки и соединения в запросах
max_connectionsс запасом под число сеансовкаждый рабочий процесс держит соединения

После правки перезапустите СУБД. Пока пользователей нет, это безопасно; на рабочем сервере перезапуск оборвёт все сеансы 1С.

4. Запуск службы сервера 1С через systemd

С 8.3.21 в каталоге версии лежит шаблон unit-файла srv1cv8-8.3.25.1394@.service. Его подключают в systemd, включают автозапуск и запускают экземпляр default:

sudo systemctl link /opt/1cv8/x86_64/8.3.25.1394/srv1cv8-8.3.25.1394@.service
sudo systemctl enable srv1cv8-8.3.25.1394@default
sudo systemctl start srv1cv8-8.3.25.1394@default
sudo systemctl status srv1cv8-8.3.25.1394@default

При первом запуске агент (ragent) создаёт локальный кластер: менеджер на порту 1541, агент на 1540. Отдельно создавать кластер не нужно.

Проверка, что сервер слушает порты:

sudo ss -tlnp | grep -E '1540|1541|156'

Сервер администрирования

Чтобы управлять кластером — из консоли на Windows или утилитой rac прямо на сервере, — нужен ras. В том же каталоге версии лежит его unit-файл, подключается так же:

sudo systemctl link /opt/1cv8/x86_64/8.3.25.1394/ras-8.3.25.1394.service
sudo systemctl enable --now ras-8.3.25.1394

ras слушает порт 1545. Проверить кластер:

/opt/1cv8/x86_64/8.3.25.1394/rac cluster list

Команда вернёт идентификатор кластера (cluster), имя «Локальный кластер», хост и порт. Идентификатор понадобится для остальных команд rac.

Обновление платформы на сервере

Новая версия ставится тем же установщиком рядом со старой. Затем — переключение службы:

  1. Предупредите пользователей: остановка службы оборвёт все сеансы. Делайте это вне рабочего времени.
  2. Остановите и отключите старую службу: systemctl disable --now srv1cv8-<старая_версия>@default.
  3. Подключите, включите и запустите unit-файл новой версии, как выше.
  4. Повторите то же для ras.

Реестр кластера в /home/usr1cv8/.1cv8/1C/1cv8/ при этом сохраняется: базы, администраторы и настройки остаются. Клиенты должны перейти на ту же версию платформы, иначе получат ошибку несоответствия версий клиента и сервера.

5. Рабочие процессы, порты и безопасность кластера

Рабочие процессы rphost сервер запускает сам — создавать их вручную не нужно. Управляют ими через свойства рабочего сервера в консоли кластера:

  • 🔢 диапазон портов рабочих процессов — по умолчанию 1560:1591;
  • ⚙️ количество информационных баз на процесс и соединений на процесс — от них зависит, сколько rphost поднимется;
  • 🧮 критический и временно допустимый объём памяти процессов — защита от того, что один процесс съест всю память;
  • 🧩 требования назначения функциональности — какие сервисы и базы работают на каком сервере, если серверов несколько.

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

Администраторы кластера

Сразу после установки кластер открыт любому, кто может подключиться к ras. Заведите администратора:

  1. Подключитесь к кластеру консолью администрирования серверов 1С с Windows (укажите имя Linux-сервера и порт 1545) или работайте через rac.
  2. В кластере откройте узел администраторов и добавьте пользователя с паролем.
  3. Сделайте то же для администраторов центрального сервера (агента).

Синтаксис регистрации через командную строку покажет rac help cluster и rac help agent.

Запишите пароль администратора кластера в хранилище паролей. Сбросить его штатно нельзя: при потере придётся останавливать службу и восстанавливать файлы реестра кластера из резервной копии.

Файрвол

Пример для ufw, где 192.168.1.0/24 — сеть пользователей, 192.168.1.5 — машина администратора:

sudo ufw allow from 192.168.1.0/24 to any port 1540:1541 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 1560:1591 proto tcp
sudo ufw allow from 192.168.1.5 to any port 1545 proto tcp

Порт PostgreSQL 5432 наружу не открывайте, если СУБД и сервер 1С на одной машине.

Лицензии

Программная серверная лицензия активируется при первом обращении к серверу из клиента 1С: мастер запросит пин-код. На Linux файлы лицензий лежат в /var/1C/licenses; у пользователя usr1cv8 должны быть права на запись в этот каталог. Для аппаратного ключа HASP ставится драйвер aksusbd.

Активация программной лицензии привязана к параметрам оборудования. Если сервер — виртуальная машина, не меняйте ей набор сетевых карт и дисков без необходимости: лицензия может «слететь», и понадобится повторная активация резервным пин-кодом.

6. Создание информационной базы на сервере и публикация через веб-сервер

Из клиента 1С на Windows

Самый привычный путь — окно запуска 1С: Добавить → Создание новой информационной базы → На сервере 1С:Предприятия. Поля заполняются так:

ПолеЗначение
Кластер серверов 1С:Предприятияsrv1c (имя Linux-сервера)
Имя информационной базы в кластереbuh
Тип СУБДPostgreSQL
Сервер баз данныхlocalhost, если СУБД на том же сервере
Имя базы данныхbuh
Пользователь сервера БД и парольроль из раздела про PostgreSQL
Создать базу данных в случае ее отсутствияфлажок включён

«Сервер баз данных» указывается с точки зрения сервера 1С, а не клиента. Поэтому localhost здесь правильный, даже если вы сидите на другом компьютере.

Через rac прямо на сервере

rac infobase --cluster=<id_кластера> create --create-database \
  --name=buh --dbms=PostgreSQL --db-server=localhost \
  --db-name=buh --locale=ru --db-user=postgres --db-pwd='СложныйПароль' \
  --license-distribution=allow

Если на кластере уже заведён администратор, добавьте --cluster-user и --cluster-pwd. Затем загрузите в пустую базу выгрузку .dt или конфигурацию через Конфигуратор.

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

Для работы через браузер или тонкий клиент по HTTP поставьте Apache и опубликуйте базу утилитой webinst из каталога платформы:

sudo apt install -y apache2
sudo /opt/1cv8/x86_64/8.3.25.1394/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 и без ограничения доступа не выставляйте. Модуль веб-сервера должен совпадать по версии с сервером 1С: после обновления платформы публикацию переделывают.

7. Логи и диагностика сервера 1С на Linux

Куда смотреть при сбоях:

  • 📜 журнал службы: journalctl -u srv1cv8-8.3.25.1394@default -n 200;
  • 🗂️ журнал регистрации базы: /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/<id_базы>/1Cv8Log/;
  • 🔬 технологический журнал: включается файлом /opt/1cv8/conf/logcfg.xml, пишет в указанный в нём каталог;
  • 🐘 лог PostgreSQL: каталог log внутри данных СУБД или журнал systemd её службы.

Минимальный logcfg.xml, который пишет только исключения и аварийные завершения процессов:

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="/var/log/1c/techlog" history="24">
    <event><eq property="name" value="EXCP"/></event>
    <event><eq property="name" value="PROC"/></event>
  </log>
</config>

Каталог /var/log/1c/techlog создайте заранее и отдайте пользователю usr1cv8. Технологический журнал включайте на время разбора, а не навсегда: подробные события быстро занимают диск.

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

Если не помогло

Запустите на сервере rac cluster list и rac infobase --cluster=<id> summary list. Если команды отвечают, а клиент не подключается — проблема в сети или в имени хоста. Если не отвечают — в самой службе: смотрите её журнал. Для тяжёлых случаев включите технологический журнал с событиями CONN и EXCP, воспроизведите ошибку и сравните время в логе с моментом сбоя.

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

Нужна ли отдельная лицензия на сервер 1С для Linux?
Нет, серверная лицензия одна для Windows и Linux. Важна разрядность и уровень: x86-64 обычная или КОРП. Клиентские лицензии нужны дополнительно.
Можно ли поставить сервер 1С и PostgreSQL на одну машину?
Да, для небольших и средних внедрений это нормальная схема. Разносят на разные серверы, когда базы и число пользователей растут и СУБД начинает конкурировать с рабочими процессами за память.
Можно ли держать на одном Linux-сервере две версии платформы одновременно?
Можно, если у второй службы свой экземпляр с другими портами и своим каталогом реестра кластера. Для одной организации обычно проще держать одну версию.
Подойдёт ли файловая база вместо сервера на Linux?
Файловую базу можно положить на общий ресурс Samba, но это не клиент-серверный режим и не заменяет сервер 1С. При 5–10 одновременных пользователях и выше файловый режим начинает заметно тормозить.
Чем администрировать кластер, если на сервере нет графики?
Утилитой rac прямо на сервере или консолью администрирования серверов 1С с любого Windows-компьютера, подключившись к ras на порту 1545.