Сервер 1С:Предприятия 8.3 на Linux с PostgreSQL: от пустой машины до рабочей базы
Содержание
Сервер 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_buffers | 25% ОЗУ | кэш страниц самой СУБД |
effective_cache_size | 50–75% ОЗУ | подсказка планировщику про кэш ОС |
work_mem | 32–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.
Обновление платформы на сервере
Новая версия ставится тем же установщиком рядом со старой. Затем — переключение службы:
- Предупредите пользователей: остановка службы оборвёт все сеансы. Делайте это вне рабочего времени.
- Остановите и отключите старую службу:
systemctl disable --now srv1cv8-<старая_версия>@default. - Подключите, включите и запустите unit-файл новой версии, как выше.
- Повторите то же для
ras.
Реестр кластера в /home/usr1cv8/.1cv8/1C/1cv8/ при этом сохраняется: базы, администраторы и настройки остаются. Клиенты должны перейти на ту же версию платформы, иначе получат ошибку несоответствия версий клиента и сервера.
5. Рабочие процессы, порты и безопасность кластера
Рабочие процессы rphost сервер запускает сам — создавать их вручную не нужно. Управляют ими через свойства рабочего сервера в консоли кластера:
- 🔢 диапазон портов рабочих процессов — по умолчанию
1560:1591; - ⚙️ количество информационных баз на процесс и соединений на процесс — от них зависит, сколько
rphostподнимется; - 🧮 критический и временно допустимый объём памяти процессов — защита от того, что один процесс съест всю память;
- 🧩 требования назначения функциональности — какие сервисы и базы работают на каком сервере, если серверов несколько.
Для одного сервера на 10–30 пользователей значения по умолчанию обычно подходят. Менять их стоит, когда видно, что процессы упираются в память или один тяжёлый пользователь тормозит остальных.
Администраторы кластера
Сразу после установки кластер открыт любому, кто может подключиться к
ras. Заведите администратора:
- Подключитесь к кластеру консолью администрирования серверов 1С с Windows (укажите имя Linux-сервера и порт
1545) или работайте черезrac. - В кластере откройте узел администраторов и добавьте пользователя с паролем.
- Сделайте то же для администраторов центрального сервера (агента).
Синтаксис регистрации через командную строку покажет 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?
Можно ли поставить сервер 1С и PostgreSQL на одну машину?
Можно ли держать на одном Linux-сервере две версии платформы одновременно?
Подойдёт ли файловая база вместо сервера на Linux?
Чем администрировать кластер, если на сервере нет графики?
rac прямо на сервере или консолью администрирования серверов 1С с любого Windows-компьютера, подключившись к ras на порту 1545.