Веб-публикация базы 1С через Apache 2.4 на Windows и Linux

· 9 мин

Содержание

Чтобы установить Apache сервер для 1С, нужны три вещи: сам Apache 2.4 той же разрядности, что и платформа 1С, компонент платформы «Модули расширения веб-сервера» и публикация базы через Конфигуратор или утилиту webinst. После публикации в httpd.conf появляется строка LoadModule _1cws_module с путём к wsap24.dll (в Linux — wsap24.so), и база открывается в браузере по адресу вида http://сервер/base.

Через тот же Apache работают веб-клиент, тонкий клиент по HTTP, веб-сервисы (SOAP), HTTP-сервисы и стандартный интерфейс OData. Настройка одинакова для файловой и клиент-серверной базы, разница только в строке подключения и правах доступа к каталогу базы.

Что проверить до установки: версии, разрядность, порт

Большая часть проблем с веб-публикацией 1С появляется ещё до первой команды. Пройдитесь по списку заранее.

  • 🧩 Версия Apache. Берите ветку 2.4. Для неё в платформе 8.3 есть модуль wsap24. Модуль wsap22 для Apache 2.2 тоже поставляется, но сама ветка 2.2 давно не поддерживается разработчиками Apache.
  • 🔢 Разрядность. 64-битный Apache загружает только модуль из 64-битной платформы. 32-битный — только из 32-битной. Смешать нельзя: сервис просто не стартует.
  • 📦 Компонент платформы. При установке 1С:Предприятия отметьте «Модули расширения веб-сервера». Если платформа уже стоит, запустите установщик той же версии повторно и выберите «Изменить».
  • 🔌 Свободный порт 80 (или 443). Его часто занимают IIS, другой веб-сервер или служебные программы. Проверка в Windows: netstat -ano | findstr :80.
  • 🔑 Лицензии. В файловом режиме лицензию ищет процесс веб-сервера, то есть она должна быть доступна на компьютере, где работает Apache. В клиент-серверном режиме лицензии выдаёт сервер 1С.
Что выбираемWindowsLinux
Где взять Apacheсборка Apache Lounge (архив zip)пакет из репозитория дистрибутива
Модуль 1Сwsap24.dll в каталоге bin платформыwsap24.so в каталоге платформы
Главный конфигC:\Apache24\conf\httpd.conf/etc/apache2/apache2.conf (Debian/Ubuntu), /etc/httpd/conf/httpd.conf (RHEL-семейство)
От чьего имени работаетслужба, по умолчанию «Локальная система»пользователь www-data или apache

Официальный сайт Apache готовых сборок под Windows не выкладывает. Обычно используют Apache Lounge: это сборка того же Apache, собранная под Visual C++.

Установка Apache на Windows и Linux

Windows

  1. Скачайте 64-битный архив Apache 2.4 с сайта Apache Lounge.
  2. Установите пакет Visual C++ Redistributable последней версии для x64. Без него при запуске появится ошибка об отсутствии VCRUNTIME140.dll.
  3. Распакуйте папку Apache24 в корень диска: C:\Apache24. Это путь по умолчанию в конфиге (переменная SRVROOT). Если ставите в другое место, поправьте строку Define SRVROOT в httpd.conf.
  4. Откройте командную строку от имени администратора и зарегистрируйте службу:
cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -k start
  1. Откройте http://localhost в браузере. Страница «It works!» означает, что веб-сервер работает.
  2. Если к базе будут подключаться с других компьютеров, откройте порт в брандмауэре Windows:
netsh advfirewall firewall add rule name="Apache 1C" dir=in action=allow protocol=TCP localport=80

Перед проверкой синтаксиса конфига полезно запомнить команду httpd.exe -t. Она показывает ошибку в httpd.conf с номером строки, а сервис при этом не трогает.

Linux (Ubuntu, Debian)

sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
sudo apache2ctl -t

В RHEL-подобных системах пакет называется httpd, служба — тоже httpd, а пользователь веб-сервера — apache.

Платформа 1С для Linux ставится из пакетов дистрибутива 1С. Модули веб-сервера входят в отдельный пакет или компонент установщика (в зависимости от версии платформы это пакет ws или пункт в графическом установщике). После установки проверьте, что файл есть на месте:

ls /opt/1cv8/x86_64/*/wsap24.so

Подключение модуля 1С и публикация базы

Публикацию можно сделать двумя способами. Результат одинаковый: каталог публикации с файлом default.vrd и блок настроек в конфиге Apache.

Способ 1. Через Конфигуратор (Windows)

  1. Запустите Конфигуратор от имени администратора. Иначе он не сможет записать httpd.conf.
  2. Откройте меню Администрирование → Публикация на веб-сервере.
  3. Выберите веб-сервер «Apache 2.4».
  4. Задайте имя публикации латиницей, например buh. Это часть адреса: http://сервер/buh.
  5. Укажите каталог публикации, например C:\Apache24\htdocs\buh.
  6. Отметьте, что публиковать: тонкий клиент и веб-клиент, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData.
  7. Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.

Способ 2. Утилита webinst (Windows и Linux)

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

cd /opt/1cv8/x86_64/8.3.24.1467
sudo ./webinst -publish -apache24 -wsdir buh -dir /var/www/buh \
  -connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf

Для файловой базы строка подключения будет такой: -connstr "File=/srv/1c/buh;". В Windows утилита называется webinst.exe, путь к конфигу передают как -confpath C:\Apache24\conf\httpd.conf. Номер версии в пути замените на свой.

Что появится в конфиге

После публикации в конце httpd.conf будет примерно такой блок:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1467/bin/wsap24.dll"

# 1c publication
Alias "/buh" "C:/Apache24/htdocs/buh/"
<Directory "C:/Apache24/htdocs/buh/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/Apache24/htdocs/buh/default.vrd"
</Directory>

Строка LoadModule пишется в файл один раз. Каждая следующая публикация добавляет только свой блок Alias и <Directory>.

Путь в LoadModule жёстко привязан к версии платформы. Если обновили платформу и удалили старую, Apache перестанет запускаться. После обновления поправьте путь вручную или переопубликуйте базу из новой версии.

Адреса веб-сервисов, HTTP-сервисов и OData

Ради интеграции Apache чаще всего и ставят. Когда публикация готова, сервисы конфигурации доступны по фиксированным адресам.

Что опубликованоАдресКак проверить
Веб-клиентhttp://сервер/buhоткрыть в браузере
Веб-сервис SOAPhttp://сервер/buh/ws/ИмяСервиса?wsdlбраузер должен вернуть XML с описанием
HTTP-сервисhttp://сервер/buh/hs/КорневойURL/...запрос через curl или Postman
ODatahttp://сервер/buh/odata/standard.odata/список доступных наборов

В адресе веб-сервиса подставляется имя публикации из свойств объекта в конфигурации, а не имя самого объекта. У HTTP-сервиса — его корневой URL.

Для OData мало галочки при публикации. В самой базе нужно указать, какие объекты отдавать через интерфейс. В типовых конфигурациях для этого есть обработка настройки автоматического REST-сервиса, её ищут через Все функции или по названию в списке обработок.

Для обмена между программами заведите в 1С отдельного пользователя только с нужными правами. Не отдавайте внешней системе логин главного бухгалтера.

Виртуальные хосты, HTTPS и права доступа

Права на каталог файловой базы

Клиент-серверной базе права на файлы не нужны: Apache обращается к серверу 1С по сети.

С файловой базой иначе. Процесс веб-сервера сам открывает файл 1Cv8.1CD, поэтому ему нужны чтение и запись в каталог базы.

  • 🐧 Linux: выдайте права пользователю веб-сервера:
sudo chown -R www-data:www-data /srv/1c/buh
  • 🪟 Windows, база на локальном диске: служба под «Локальной системой» обычно доступ имеет.
  • 🪟 Windows, база на сетевой папке: «Локальная система» к чужой шаре не пустит. Запустите службу Apache от доменной учётной записи с правами на папку: services.msc → служба Apache → вкладка «Вход в систему».

Публикация на отдельном домене

Если на сервере несколько сайтов, вынесите публикацию в виртуальный хост. Блок Alias и <Directory> переносится внутрь <VirtualHost>:

<VirtualHost *:80>
    ServerName 1c.example.local
    Alias "/buh" "/var/www/buh/"
    <Directory "/var/www/buh/">
        AllowOverride All
        Options None
        Require ip 192.168.10.0/24
        SetHandler 1c-application
        ManagedApplicationDescriptor "/var/www/buh/default.vrd"
    </Directory>
</VirtualHost>

Строка Require ip ограничивает доступ локальной сетью. Для доступа отовсюду верните Require all granted.

HTTPS

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

  1. Включите модуль: в Ubuntu sudo a2enmod ssl, в Windows раскомментируйте LoadModule ssl_module и строку Include conf/extra/httpd-ssl.conf.
  2. Пропишите в виртуальном хосте на порту 443 SSLEngine on, SSLCertificateFile и SSLCertificateKeyFile.
  3. Сертификат в Linux удобно получать через certbot, в Windows — через любой ACME-клиент под Windows.

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

Перед открытием публикации наружу
Выполнено: 0 / 5

Типовые ошибки Apache и модуля 1С

Сначала всегда запускайте проверку конфига: httpd.exe -t в Windows или apache2ctl -t в Linux. Она называет файл и строку с ошибкой. Затем смотрите журнал logs\error.log (Windows) или /var/log/apache2/error.log (Ubuntu).

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

Предупреждение AH00558: Could not reliably determine the server's fully qualified domain name не мешает работе. Оно пропадает, если указать в конфиге строку ServerName с именем сервера.

Перезапуск Apache обрывает работу всех, кто сейчас в базе через веб-клиент, и прерывает обмены. Правку конфига на рабочем сервере делайте вне рабочего времени или предупредите пользователей.

Обслуживание публикации после запуска

Сама установка занимает полчаса. Потом нужно не сломать то, что уже работает.

  • 🔄 Обновление платформы. Новая версия ставится в соседний каталог. Пока старую не удалили, Apache продолжает работать со старым модулем. Порядок такой: обновить платформу на сервере 1С → поправить путь в LoadModule → перезапустить Apache → проверить базу в браузере → только потом удалять старую версию.
  • 🗑️ Снятие публикации. В Конфигураторе то же окно Публикация на веб-сервере и кнопка «Отключить». Из командной строки — webinst -delete с теми же -wsdir и -confpath.
  • 📝 Ручные правки. Конфигуратор при повторной публикации перезаписывает свой блок. Свои директивы (ограничения по IP, HTTPS) держите в виртуальном хосте или отдельном подключаемом файле, чтобы их не затёрло.
  • 💾 Копия конфига. Перед любой правкой копируйте httpd.conf рядом с датой в имени. Откат займёт секунды.

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

Можно ли поставить Apache и сервер 1С на один компьютер?
Да, для небольшой нагрузки это обычная схема. При росте числа веб-пользователей веб-сервер выносят на отдельную машину, а строка подключения в публикации указывает на сервер 1С.
Что лучше для 1С: Apache или IIS?
На Windows работают оба. Apache переносится на Linux и настраивается текстовыми файлами. IIS удобнее, если в компании уже всё построено на Windows Server и нужна доменная аутентификация.
Нужна ли отдельная лицензия на веб-клиент?
Нет. Веб-клиент расходует такие же клиентские лицензии, как тонкий клиент. Отдельной лицензии на сам Apache или на публикацию нет.
Можно ли опубликовать несколько баз на одном Apache?
Да. Модуль загружается один раз, а каждая база получает свой каталог и свой Alias: /buh, /zup, /ut. Все базы на одном Apache должны работать на одной версии платформы.
Как открыть опубликованную базу в тонком клиенте?
В списке баз выберите «Добавить» → подключение к информационной базе на веб-сервере и укажите адрес публикации, например https://1c.example.ru/buh.