Сервер 1С:Предприятия на Ubuntu с PostgreSQL: от пакетов до первой базы
Содержание
Чтобы поставить 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 ГБ |
| Диск под СУБД | SSD | NVMe, отдельный раздел |
Цифры примерные: всё упирается в размер баз и число одновременных сеансов. Сервер 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 | только администратору |
| 5432 | PostgreSQL | никому, если СУБД на этой же машине |
Диапазон рабочих процессов меняется в свойствах рабочего сервера. Если сузите или сдвинете его, поправьте и правила файрвола.
Управление из командной строки
Утилита 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С:Предприятия».
- Укажите кластер
srv1c, имя базы в кластере, тип СУБД PostgreSQL, сервер баз данныхlocalhost, имя базы в СУБД, пользователяpostgresи пароль. - Отметьте «Создать базу данных в случае её отсутствия» и завершите мастер.
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/ или в каталог данных кластера, в зависимости от сборки. Ошибки подключения к СУБД ищите там.
ping srv1c), служба в статусе active и порты 1540, 1541 и 1560–1591 открыты в файрволе.Перезапуск службы srv1cv8 обрывает все сеансы пользователей без сохранения их работы. Перед systemctl restart предупредите людей или дождитесь вечера.
8. Частые вопросы
Можно ли поставить сервер 1С и PostgreSQL на одну машину?
Нужен ли графический интерфейс на сервере?
rac или консоль с Windows-компьютера.Как обновить платформу на сервере Linux?
setup-full-*.run, остановите и отключите службу старой версии, подключите и запустите юнит новой. Данные кластера остаются в каталоге usr1cv8. Клиенты нужно обновить до той же сборки.