Сервер 1С:Предприятия на Ubuntu с PostgreSQL: от пакетов до первой базы

· 10 мин

Содержание

Чтобы поставить 1С на Linux, нужны три вещи: подготовленная Ubuntu с русской локалью и правильным /etc/hosts, PostgreSQL в сборке для 1С и сервер 1С:Предприятия, установленный из единого дистрибутива setup-full-*.run с компонентами server и server_admin. Дальше сервер запускается как служба systemd, кластер поднимается сам, а базу создают из клиента или утилитой rac.

Ниже порядок для Ubuntu 22.04 LTS и платформы 8.3.2x. На Debian и других дистрибутивах с пакетами .deb шаги почти те же. Все команды выполняются от пользователя с правами sudo.

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

Сначала проверьте, что ваша версия Ubuntu есть в системных требованиях к выбранному релизу платформы. Список поддерживаемых дистрибутивов меняется от релиза к релизу, и «почти подходящая» система потом даёт странные ошибки при запуске.

Ориентир по ресурсам для небольшой компании (до 20–30 пользователей, одна-две базы):

РесурсМинимумКомфортно
Процессор4 ядра8 ядер
Память8 ГБ16–32 ГБ
Диск под СУБДSSDNVMe, отдельный раздел

Цифры примерные: всё упирается в размер баз и число одновременных сеансов. Сервер 1С и PostgreSQL на одной машине делят память, поэтому её лучше не жалеть.

Имя хоста и /etc/hosts

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

sudo hostnamectl set-hostname srv1c
hostname -f

В /etc/hosts пропишите реальный адрес сервера, а не только 127.0.1.1:

127.0.0.1   localhost
192.168.1.10   srv1c

На рабочих местах имя srv1c тоже должно разрешаться: через DNS в сети или через hosts на каждом компьютере.

Русская локаль и обновления

PostgreSQL создаёт кластер базы данных с локалью системы, а 1С нужна ru_RU.UTF-8. Сгенерируйте её до установки СУБД:

sudo apt update && sudo apt upgrade -y
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8

После этого перезайдите в сессию и проверьте вывод locale.

Шрифты и библиотеки

Серверу 1С нужны шрифты для формирования печатных форм и отчётов на стороне сервера. Без них PDF и табличные документы выходят с «квадратиками».

sudo apt install -y fontconfig ttf-mscorefonts-installer libfreetype6 libgsf-1-114

Пакет со шрифтами Microsoft попросит принять лицензию в псевдографическом окне. Если установщик 1С позже сообщит о недостающей библиотеке, доустановите её по имени из сообщения через apt.

2. PostgreSQL для 1С: установка и настройка

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

Установка пакетов

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

mkdir ~/pg1c && tar -xzf postgresql-*.tar.bz2 -C ~/pg1c
cd ~/pg1c && sudo apt install -y ./*.deb

Имя архива и расширение зависят от версии сборки, подставьте своё. Если пакеты лежат в подпапке, перейдите в неё.

Закрепите версию СУБД, чтобы плановое apt upgrade не заменило её ванильной сборкой: sudo apt-mark hold с именами установленных пакетов postgresql. Посмотреть имена можно через dpkg -l | grep postgres.

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

Задайте пароль пользователю postgres. Под ним (или под отдельной ролью с правом создавать базы) сервер 1С будет создавать информационные базы:

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

Если сервер 1С и СУБД на одной машине, PostgreSQL достаточно слушать localhost. Наружу порт 5432 не открывайте. Если СУБД на отдельной машине, в postgresql.conf укажите listen_addresses, а в pg_hba.conf разрешите подключение только с IP сервера 1С с проверкой пароля.

Базовые параметры памяти

Стандартные настройки рассчитаны на слабую машину. Для сервера с 16 ГБ, где рядом работает 1С, разумная отправная точка в postgresql.conf:

shared_buffers = 4GB
effective_cache_size = 8GB
work_mem = 32MB
maintenance_work_mem = 1GB
max_connections = 200

Логика простая: shared_buffers около четверти памяти, effective_cache_size около половины. После правки перезапустите СУБД: sudo systemctl restart postgresql. Перезапуск обрывает все подключения к базам, поэтому делайте его, пока пользователи не работают.

3. Как поставить платформу 1С на Linux-сервер

Начиная с 8.3.20 платформа для Linux распространяется единым установщиком. В архиве server64_8_3_xx_xxxx.tar.gz лежит файл setup-full-8.3.xx.xxxx-x86_64.run. Скачать его можно в личном кабинете на портале 1С, в разделе с дистрибутивами технологической платформы. Нужна действующая подписка ИТС или договор сопровождения.

tar -xzf server64_8_3_*.tar.gz
chmod +x setup-full-8.3.*-x86_64.run
sudo ./setup-full-8.3.*-x86_64.run --mode unattended --enable-components server,server_admin

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

  • 🖥️ server — сам сервер 1С:Предприятия (агент, менеджер, рабочие процессы);
  • 🛠️ server_admin — сервер администрирования ras и утилита rac;
  • 🌐 ws — модуль расширения веб-сервера, нужен только для публикации баз и веб-сервисов через Apache.

Платформа встаёт в /opt/1cv8/x86_64/8.3.xx.xxxx/. Установщик создаёт системного пользователя usr1cv8, от имени которого работает служба. Каталог данных кластера по умолчанию — /home/usr1cv8/.1cv8/1C/1cv8.

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

Версия сервера и клиента должна совпадать до последней цифры. Если на рабочих местах 8.3.24.1548, на сервере нужна ровно она же, иначе клиент откажется подключаться.

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

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

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

VER=8.3.24.1548
sudo systemctl link /opt/1cv8/x86_64/$VER/srv1cv8-$VER@.service
sudo systemctl enable --now srv1cv8-$VER@default
sudo systemctl status srv1cv8-$VER@default

Номер версии замените своим. В статусе должно быть active (running). Проверить, что агент слушает порт:

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

На старых релизах вместо юнита использовался скрипт /etc/init.d/srv1cv83, а параметры (порты, каталог данных) задавались в /etc/default/srv1cv83.

5. Кластер серверов: RAS, консоль и создание базы

При первом запуске агент сам создаёт кластер на порту 1541. Схема подключения такая: клиент обращается к агенту на 1540, тот направляет его к менеджеру кластера на 1541, а дальше к рабочему процессу из диапазона 1560–1591.

ПортКто слушаетКому открывать
1540агент серверарабочим местам
1541менеджер кластерарабочим местам
1560–1591рабочие процессырабочим местам
1545сервер администрирования rasтолько администратору
5432PostgreSQLникому, если СУБД на этой же машине

Диапазон рабочих процессов меняется в свойствах рабочего сервера. Если сузите или сдвинете его, поправьте и правила файрвола.

Управление из командной строки

Утилита rac работает через сервер администрирования ras. Запустите его:

sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.24.1548/ras cluster --daemon
/opt/1cv8/x86_64/8.3.24.1548/rac cluster list

Команда rac cluster list выведет идентификатор кластера (cluster), имя и порт. Идентификатор понадобится для остальных команд. Для постоянной работы ras лучше оформить отдельной службой systemd, чтобы он поднимался после перезагрузки.

Управление из консоли Windows

Привычная оснастка «Администрирование серверов 1С Предприятия» ставится вместе с платформой на Windows-компьютер администратора. В ней добавьте центральный сервер по имени srv1c: консоль подключается к агенту на порту 1540. Версия консоли должна совпадать с версией сервера.

Если оснастка не открывается или пишет об ошибке компонента, перерегистрируйте radmin.dll той же версии через regsvr32 из командной строки администратора.

Первая информационная база

Проще всего создать базу с клиента:

  1. Запустите 1С на рабочем месте и нажмите «Добавить».
  2. Выберите создание новой информационной базы, затем вариант «На сервере 1С:Предприятия».
  3. Укажите кластер srv1c, имя базы в кластере, тип СУБД PostgreSQL, сервер баз данных localhost, имя базы в СУБД, пользователя postgres и пароль.
  4. Отметьте «Создать базу данных в случае её отсутствия» и завершите мастер.

localhost здесь указывается с точки зрения сервера 1С, а не клиента: к СУБД обращается рабочий процесс.

Тот же результат даёт 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

Если какой-то параметр отличается в вашем релизе, сверьтесь с rac help infobase.

6. Лицензии и защита периметра сервера 1С

Без лицензии сервер базы не откроет (исключение — учебная версия платформы). На Linux применяются те же виды лицензий, что и на Windows.

  • 🔑 Программная лицензия сервера активируется пин-кодом. Удобнее всего с клиента: при первом подключении к серверной базе под администратором 1С откроет мастер получения лицензии и предложит записать её на сервер. Второй путь — утилита ring на самом сервере (подсказка по параметрам: ring license activate --help). Файлы лицензий хранятся в /var/1C/licenses.
  • 🔐 Аппаратный ключ HASP требует драйвера ключей защиты Sentinel для Linux. После установки драйвера проверьте, что служба ключа запущена и ключ виден в системе.
  • 👥 Клиентские лицензии можно держать на сервере, тогда рабочие места берут их оттуда. Это управляется флагом распределения лицензий у базы (параметр --license-distribution выше).

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

Файрвол

Откройте только нужные порты и только для своей сети. Пример для ufw, где 192.168.1.0/24 — офисная сеть, а 192.168.1.5 — компьютер администратора:

sudo ufw allow OpenSSH
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
sudo ufw enable

Сначала правило для SSH, потом enable, иначе удалённая сессия оборвётся и вы потеряете доступ к серверу.

Сервер 1С не стоит выставлять в интернет напрямую. Удалённым сотрудникам лучше давать доступ через VPN или публикацию базы на веб-сервере с HTTPS.

7. Журналы сервера 1С на Linux и разбор неполадок

Первое, куда смотреть, — журнал службы:

sudo journalctl -u srv1cv8-8.3.24.1548@default -n 100 --no-pager

Для глубокой диагностики включают технологический журнал. Это файл logcfg.xml в каталоге /opt/1cv8/conf/. Минимальная настройка, которая пишет исключения и сохраняет их сутки:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="/var/log/1c/techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Каталог журнала создайте заранее и отдайте пользователю службы:

sudo mkdir -p /var/log/1c/techlog
sudo chown -R usr1cv8:grp1cv8 /var/log/1c

Если группа у вас называется иначе, посмотрите её командой id usr1cv8. Сервер перечитывает logcfg.xml сам, перезапуск не нужен. Не оставляйте подробный журнал включённым надолго: на нагруженном сервере он за день занимает гигабайты.

PostgreSQL пишет свой журнал в /var/log/postgresql/ или в каталог данных кластера, в зависимости от сборки. Ошибки подключения к СУБД ищите там.

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

Перезапуск службы srv1cv8 обрывает все сеансы пользователей без сохранения их работы. Перед systemctl restart предупредите людей или дождитесь вечера.

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

Можно ли поставить сервер 1С и PostgreSQL на одну машину?
Да, для небольших баз это обычная схема. Следите за памятью: суммарно 1С и СУБД не должны выходить в своп, иначе база начнёт заметно тормозить.
Нужен ли графический интерфейс на сервере?
Нет. Серверу 1С и PostgreSQL достаточно Ubuntu Server без рабочего стола. Администрирование идёт через rac или консоль с Windows-компьютера.
Как обновить платформу на сервере Linux?
Установите новый релиз тем же setup-full-*.run, остановите и отключите службу старой версии, подключите и запустите юнит новой. Данные кластера остаются в каталоге usr1cv8. Клиенты нужно обновить до той же сборки.
Подойдёт ли PostgreSQL из стандартного репозитория Ubuntu?
Нет. Платформе нужна сборка СУБД с патчами для 1С, от фирмы 1С или Postgres Professional. С ванильной версией информационная база не будет работать корректно.
Можно ли запустить файловую базу на Linux-сервере вместо клиент-серверной?
Можно положить файловую базу в общую папку, но для нескольких пользователей это медленно и рискованно. Если сервер 1С уже стоит, переносите базу в клиент-серверный вариант через выгрузку .dt.