Веб-публикация 1С на Linux — это связка из трёх компонентов: сервер 1С (кластер), СУБД (обычно PostgreSQL в сборке для 1С) и веб-сервер Apache с модулем веб-расширения платформы. Базу публикует утилита webinst: она создаёт файл default.vrd и подключает к Apache модуль wsap24. После этого база открывается в браузере по адресу http://сервер/ИмяПубликации, а заодно становятся доступны HTTP-сервисы, OData и веб-сервисы.

Для разработки и тестирования такой стенд удобно собрать на одной виртуальной машине и запустить с community-лицензией. Ниже порядок, который я использую для тестовых контуров: что поставить, в какой последовательности, какие команды и где обычно ломается.

Что понадобится для стенда

Для тестового контура достаточно одной виртуальной машины:

КомпонентЧто выбратьКомментарий
ГипервизорHyper-V, VirtualBox, ProxmoxВажна аппаратная виртуализация в BIOS
ОСDebian/Ubuntu или Astra LinuxДля отечественного контура — Astra
Ресурсыот 2 ядер, 4–8 ГБ ОЗУ, 40+ ГБ дискаПод СУБД память лучше не жалеть
ПлатформаДистрибутив сервера x86_64 для LinuxТа же версия ставится клиентом на Windows
СУБДPostgreSQL для 1С (Postgres Pro или сборка 1С)Обычный PostgreSQL без патчей 1С не подойдёт
Веб-серверApache 2.4Модуль веб-расширения ставится вместе с платформой

Ещё пригодятся SSH-клиент и WinSCP (или любой SFTP-клиент) для переноса дистрибутивов, а также pgAdmin, если удобнее смотреть базу графически.

Пара практических замечаний по виртуалке. В Hyper-V для Linux второго поколения отключите Secure Boot, иначе многие сборки не загрузятся. При установке ОС сразу отметьте SSH-сервер: дальше всё удобнее делать из терминала, а не из консоли гипервизора.

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

Дистрибутив кладём во временный каталог, распаковываем и запускаем установщик. Для стенда ставлю сервер, модули веб-расширения, средства администрирования и клиент (если на машине есть графика):

bash
mkdir -p ~/distrib && cd ~/distrib
tar -xzf server64_8_3_23_1437.tar.gz
sudo ./setup-full-8.3.23.1437-x86_64.run --mode unattended \
  --enable-components server,ws,server_admin,client_full

Компонент ws — это и есть модули веб-расширения для Apache, без него публиковать нечего. Номер версии в командах замените на свой.

Начиная с версий 8.3.21+ платформа поставляет юнит systemd в каталоге установки. Подключаем его и запускаем службу:

bash
VER=8.3.23.1437
sudo systemctl link /opt/1cv8/x86_64/$VER/srv1cv8-$VER@.service
sudo systemctl enable srv1cv8-$VER@default.service
sudo systemctl start srv1cv8-$VER@default.service
systemctl status srv1cv8-$VER@default.service

В выводе статуса должно быть active (running). Проверить кластер можно с Windows-машины через консоль администрирования серверов 1С, указав IP виртуалки.

Отладка на сервере

Для тестового стенда отладка нужна почти всегда. Не редактируйте поставочный юнит-файл — его перезапишет следующая установка. Правильнее сделать переопределение:

bash
sudo systemctl edit srv1cv8-$VER@default.service

В открывшемся редакторе:

ini
[Service]
Environment=SRV1CV8_DEBUG=-debug

Затем sudo systemctl daemon-reload и перезапуск службы. В systemctl status у процессов rphost должны появиться ключи -debug -tcp. Если конфигуратор видит предметы отладки, но точки останова не срабатывают, проверьте файрвол: порты отладки должны быть открыты с машины разработчика.

PostgreSQL для 1С

Ставим сборку PostgreSQL с патчами для 1С. Для Postgres Pro это делается через их скрипт подключения репозитория и пакет вида postgrespro-1c-15; у сборок от фирмы «1С» свой порядок установки. После установки нужно поправить два файла в каталоге данных.

В postgresql.conf разрешаем внешние подключения и настраиваем память по рекомендациям для 1С:

ini
listen_addresses = '*'

В pg_hba.conf добавляем правило доступа. Для изолированного стенда можно открыть подсеть, но с парольной аутентификацией:

text
host    all    all    192.168.0.0/16    scram-sha-256

Правило 0.0.0.0/0 с паролем из старых инструкций годится только для машины, которая не видна снаружи. Пользователя для 1С создаём в psql:

sql
CREATE USER usr1c WITH SUPERUSER PASSWORD 'надёжный_пароль';

После перезапуска службы СУБД создаём информационную базу из консоли администрирования или из окна запуска 1С: тип СУБД PostgreSQL, сервер баз данных localhost, пользователь usr1c.

Веб-публикация 1С через Apache

Теперь основное. Ставим Apache и готовим каталог публикации:

bash
sudo apt install -y apache2
sudo mkdir -p /var/www/1c/demo

Публикацию удобно держать в отдельном файле конфигурации, чтобы её легко включать и выключать штатными a2enconf и a2disconf:

bash
sudo touch /etc/apache2/conf-available/1c-demo.conf
cd /opt/1cv8/x86_64/$VER
sudo ./webinst -publish -apache24 -wsdir demo -dir /var/www/1c/demo \
  -connstr 'Srvr="localhost";Ref="demo";' \
  -confpath /etc/apache2/conf-available/1c-demo.conf
sudo a2enconf 1c-demo
sudo systemctl restart apache2

Что делает webinst:

  • создаёт в каталоге публикации файл default.vrd с адресом базы и настройками сервисов;
  • дописывает в указанный файл LoadModule модуля wsap24 нужной версии и блок Alias / Directory для имени публикации.

-wsdir — имя публикации в адресе, Ref в строке соединения — имя базы в кластере. Они не обязаны совпадать, но на стенде удобнее называть одинаково.

Веб-публикация 1С на Linux: база, сервер 1С и веб-шлюз Apache в одном стеке
Веб-публикация 1С на Linux: база, сервер 1С и веб-шлюз Apache в одном стеке

Проверка: в браузере открываем http://IP-виртуалки/demo. Должен открыться веб-клиент.

Публикация HTTP-сервисов и OData

По умолчанию webinst публикует базу для веб-клиента. Чтобы включить HTTP-сервисы, веб-сервисы и стандартный интерфейс OData, правят default.vrd (или публикуют через конфигуратор на Windows, где это галочки). Типовые элементы файла — <httpServices publishByDefault="true"/>, <standardOdata enable="true" .../>. После правки перезапустите Apache. Подробно про сами сервисы — в статье базы знаний про HTTP-сервисы 1С.

Community-лицензия для тестового стенда

В платформе 8.3.23 появилась community-лицензия для обучения, разработки и тестирования. Она работает и в клиент-серверном варианте, поэтому стенд не требует покупки ключей. Порядок:

  1. Зарегистрируйтесь на портале для разработчиков developer.1c.ru.
  2. При первом запуске базы платформа предложит активировать community-лицензию — вводите учётные данные портала.
  3. Число одновременных активаций на одну учётную запись ограничено, лишние освобождаются через портал.

Для веб-клиента лицензию должен видеть серверный процесс. На практике после активации из клиента файл лицензии копируют в каталог лицензий сервера (например, /var/1C/licenses) и выдают права пользователю usr1cv8. Точное расположение зависит от версии и настроек, поэтому сверяйтесь с документацией на ИТС к вашей платформе.

Важно: community-лицензия не для рабочей эксплуатации. Перенос боевой базы на стенд с такой лицензией — нормально для тестирования, а работа пользователей на нём — нарушение условий.

Типичные ошибки

  • Ошибка 500 сразу после публикации. Версия модуля wsap24 не совпадает с версией сервера или в конфигурации Apache остались строки от старой публикации. Проверьте LoadModule и /var/log/apache2/error.log.
  • 403 Forbidden. У пользователя www-data нет прав на каталог публикации или в блоке Directory не разрешён доступ.
  • «Не найдена лицензия» в веб-клиенте. Лицензия активирована для пользователя ОС, а серверный процесс её не видит. Положите файл лицензии туда, где его ищет сервер.
  • Не подключается к СУБД. Не исправлен listen_addresses, нет строки в pg_hba.conf или СУБД не перезапущена после правки.
  • Отладка не работает. Юнит отредактирован, но не выполнен daemon-reload; или порты отладки закрыты файрволом.
  • После обновления платформы публикация сломалась. Новая версия ставится в отдельный каталог, а Apache по-прежнему грузит модуль старой. Переопубликуйте базу webinst из нового каталога.
Тестовый стенд на Linux собирается за пару часов, если ставить компоненты в правильном порядке: сервер 1С, СУБД, база, Apache, публикация, лицензия.

Если нужен не стенд, а рабочий контур с HTTPS, балансировкой и резервированием, это уже отдельный проект: перевод 1С на Linux и PostgreSQL, настройка веб-доступа к 1С и администрирование сервера 1С.

Коротко

  • Веб-публикация 1С на Linux — это сервер 1С, PostgreSQL для 1С и Apache 2.4 с модулем wsap24.
  • Ставьте платформу с компонентом ws, иначе публиковать будет нечем.
  • Публикуйте через webinst -publish -apache24 в отдельный файл в conf-available и включайте его a2enconf.
  • Отладку включайте переопределением юнита systemd с SRV1CV8_DEBUG=-debug.
  • Community-лицензия подходит для разработки и тестов, но не для работы пользователей.