Как выложить информационную базу 1С в веб через Apache 2.4 на Windows и Linux

· 9 мин

Содержание

Чтобы опубликовать базу 1С на веб-сервере Apache, нужны три вещи: Apache 2.4 той же разрядности, что и платформа, установленный компонент «Модули расширения веб-сервера» и сама публикация — через Конфигуратор (Администрирование → Публикация на веб-сервере) или утилиту webinst. После этого база открывается в браузере по адресу вида http://сервер/buh/, а тонкий клиент подключается к ней «через веб-сервер».

Частое заблуждение — что достаточно поставить Apache и нажать «Опубликовать». На деле публикация ломается на мелочах: 32-битный Apache при 64-битной платформе, у пользователя веб-сервера нет прав на каталог базы, после обновления платформы в конфиге остался путь к старому модулю. Ниже — порядок, при котором эти ловушки не срабатывают.

Что подготовить до публикации базы 1С

Сначала решите, какую базу публикуете. От этого зависят права и лицензии.

Вариант базыСтрока подключенияЧто важно
ФайловаяFile="D:\Bases\buh";Пользователь, от имени которого работает Apache, должен иметь полный доступ к каталогу базы
Клиент-сервернаяSrvr="srv1c";Ref="buh";Веб-сервер должен видеть сервер 1С по сети (порты кластера, по умолчанию 1540–1541 и диапазон 1560–1591)

Список того, что понадобится:

  • 🖥️ Apache 2.4. Для Windows — сборка Apache Lounge, для Linux — пакет apache2 (Debian/Ubuntu) или httpd (RHEL-семейство).
  • 🧩 Платформа 1С:Предприятие 8.3 с компонентом модулей веб-сервера. Версия платформы на веб-сервере должна совпадать с версией сервера 1С до последней цифры.
  • 🔑 Лицензии. Каждый сеанс через браузер или тонкий клиент по HTTP занимает клиентскую лицензию, как и обычный запуск.
  • 🔒 Сертификат, если база будет доступна из интернета. Без HTTPS пароли пользователей 1С уходят по сети открытым текстом.

Разрядность решает всё. 64-битная платформа работает только с 64-битным Apache. Модуль 32-битной платформы не загрузится в 64-битный веб-сервер, и наоборот.

Установка модуля расширения веб-сервера 1С

Модуль — это библиотека, которую Apache подгружает при старте. Для Apache 2.4 она называется wsap24.dll в Windows и wsap24.so в Linux. Для старого Apache 2.2 был wsap22, но эту ветку давно пора не использовать.

Windows

  1. Скачайте Apache 2.4 нужной разрядности, распакуйте в C:\Apache24.
  2. Установите распространяемый пакет Visual C++, который требует сборка Apache Lounge (версия указана на странице загрузки).
  3. Зарегистрируйте службу из командной строки администратора:
cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -k start
  1. Откройте http://localhost/ — должна появиться страница «It works!».
  2. Запустите установщик платформы 1С и в списке компонентов включите «Модули расширения веб-сервера». Если платформа уже стоит — запустите установщик повторно и выберите «Изменить».

Linux

Начиная с версии 8.3.20 платформа ставится единым установщиком. Компонент веб-сервера называется ws:

sudo apt install apache2
sudo ./setup-full-8.3.xx.xxxx-x86_64.run --mode unattended --enable-components server,ws

Если веб-сервер стоит на отдельной машине, где сервер 1С не нужен, достаточно --enable-components ws. Модуль окажется в каталоге платформы, обычно /opt/1cv8/x86_64/<версия>/wsap24.so.

Проверьте, что Apache стартует чисто ещё до публикации: sudo apachectl configtest должен вернуть Syntax OK. Иначе потом не поймёте, чья это ошибка — 1С или веб-сервера.

Публикуем базу на веб-сервере Apache: Конфигуратор и webinst

Способ выбирайте по ситуации.

СпособКогда подходитОграничения
КонфигураторWindows, разовая публикация, есть рабочий стол на сервереНужен запуск Конфигуратора от имени администратора
webinstLinux, скрипты, массовая публикация, обновление путей после смены версииВсё задаётся ключами командной строки
Ручная правка конфигаТонкая настройка, нестандартные путиЛегко ошибиться в кавычках и путях

Через Конфигуратор

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

Через webinst

Утилита лежит в каталоге bin платформы. Пример для Linux и клиент-серверной базы:

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

Пример для Windows и файловой базы:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\webinst.exe" -publish -apache24 -wsdir buh ^
  -dir "C:\Apache24\htdocs\buh" -connstr "File=""D:\Bases\buh"";" ^
  -confpath "C:\Apache24\conf\httpd.conf"

Кавычки вокруг пути в строке файловой базы удвоены — так их экранирует командная строка Windows.

Что публикация добавляет в конфигурацию Apache

После публикации в конце httpd.conf (или apache2.conf) появляется блок такого вида:

LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.xx.xxxx/wsap24.so"

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

Разберём строки:

  • LoadModule — путь к модулю конкретной версии платформы. Строка должна быть одна на весь конфиг, даже если публикаций десять.
  • Alias — связывает адрес /buh с каталогом на диске.
  • SetHandler 1c-application — передаёт все запросы в этом каталоге модулю 1С.
  • ManagedApplicationDescriptor — путь к файлу default.vrd, где описана сама публикация.

Файл default.vrd — это XML. Главное в нём — атрибут ib со строкой подключения и блоки, включающие сервисы:

<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/buh"
       ib="Srvr=&quot;srv1c&quot;;Ref=&quot;buh&quot;;">
    <ws pointEnableCommon="true"/>
    <httpServices publishByDefault="true"/>
    <standardOdata enable="true"/>
</point>

После публикации адреса будут такими:

  • 🌐 веб-клиент — http://сервер/buh/;
  • 🔌 HTTP-сервисы — http://сервер/buh/hs/<корневой URL сервиса>/...;
  • 📄 веб-сервисы — http://сервер/buh/ws/<имя>?wsdl;
  • 📊 OData — http://сервер/buh/odata/standard.odata/.

Для отдельной интеграции удобно сделать вторую публикацию той же базы, например /buh-api, и включить в ней только HTTP-сервисы. Так проще ограничить к ней доступ и не открывать наружу веб-клиент.

Права доступа и аутентификация пользователей

Здесь две независимые части: права операционной системы для процесса Apache и вход пользователей в 1С.

Права процесса Apache

В Linux Apache работает от пользователя www-data (Debian/Ubuntu) или apache (RHEL). Для файловой базы ему нужны чтение и запись в каталог:

sudo chown -R www-data:www-data /srv/1c/buh
sudo chmod -R u+rwX /srv/1c/buh

В Windows служба Apache по умолчанию запущена от Локальная система. Она имеет доступ к локальным дискам, но не к сетевым папкам. Если файловая база лежит на другом компьютере, назначьте службе доменную учётную запись с правами на эту папку: services.msc → Apache2.4 → Свойства → Вход в систему.

Для клиент-серверной базы права на файлы не нужны — достаточно сетевой доступности сервера 1С.

Вход пользователей

  • 👤 Пароли 1С. Самый простой и надёжный вариант. У каждого пользователя в списке пользователей базы должен быть задан пароль. Публиковать в интернет базу, где у пользователей нет паролей, нельзя: войти сможет любой, кто знает адрес.
  • 🪪 Логин в строке подключения. В ib можно дописать Usr= и Pwd=, тогда вход будет без запроса. Годится только для закрытого сервиса интеграции, и то с ограничением по IP.
  • 🏢 Вход через Windows. Для веб-клиента требует настройки Kerberos на стороне Apache — это отдельная задача, во внутренних сетях её решают через IIS чаще, чем через Apache.

Ограничение по сети и HTTPS

Доступ можно сузить средствами самого Apache, заменив Require all granted в блоке публикации:

<RequireAny>
    Require ip 192.168.10.0/24
    Require ip 203.0.113.25
</RequireAny>

Для HTTPS в Linux включите mod_ssl и получите сертификат, например через certbot:

sudo a2enmod ssl
sudo certbot --apache -d 1c.example.ru

После этого направьте пользователей на https://1c.example.ru/buh/ и закройте порт 80 или настройте с него перенаправление на 443.

Производительность публикации: что реально ускоряет

Основную работу выполняет сервер 1С или файловая база, а не Apache. Поэтому чудес от тюнинга веб-сервера ждать не стоит. Но несколько настроек заметно влияют на отклик.

  • ⚡ Число потоков. В Windows Apache работает в режиме mpm_winnt, и одновременные соединения ограничены параметром ThreadsPerChild. При 40–50 активных пользователях веб-клиента значения по умолчанию может не хватить — увеличьте его и перезапустите службу.
  • 🗜️ Сжатие. Включите mod_deflate для текстовых ответов. Это сокращает трафик веб-клиента, особенно на медленных каналах.
  • 🔁 KeepAlive. Оставьте включённым: веб-клиент шлёт много коротких запросов, и повторное открытие соединения на каждом из них заметно добавляет задержку.
  • 📂 Файловая база через веб. Это допустимо для 3–5 пользователей. Дальше блокировки файла базы начинают тормозить всех, и правильнее перейти на клиент-серверный вариант.
  • 🌍 Расстояние до сервера 1С. Если Apache и сервер 1С в разных сетях, каждый вызов сервера идёт через этот канал. Ставьте веб-сервер рядом с сервером 1С, а не рядом с пользователями.

Не включайте на Apache кеширование ответов (mod_cache) для каталога публикации. Ответы 1С зависят от сеанса пользователя, и общий кеш способен отдать одному человеку данные другого.

Обновление платформы и несколько публикаций

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

Что делать после каждого обновления:

  1. Поправьте путь в LoadModule на новую версию или повторно запустите webinst -publish из каталога новой платформы.
  2. Проверьте, что строка LoadModule _1cws_module в конфиге осталась одна.
  3. Выполните apachectl configtest и перезапустите Apache.

Несколько баз публикуются просто: каждая получает свой блок Alias и <Directory> со своим default.vrd, а модуль подгружается один раз. Удалить публикацию можно тем же webinst с ключом -delete либо в Конфигураторе, кнопкой «Отключить» в окне публикации.

Ошибки при публикации на Apache и где искать причину

Смотрите сразу в три места:

  • 📜 Журнал Apache: /var/log/apache2/error.log в Linux или C:\Apache24\logs\error.log в Windows. Здесь видны проблемы загрузки модуля и прав.
  • 🗂️ Журнал регистрации базы: в Конфигураторе Администрирование → Журнал регистрации. Здесь — неудачные попытки входа и ошибки сеансов.
  • 🔬 Технологический журнал 1С: включается файлом logcfg.xml в каталоге conf платформы. Нужен, когда первые два журнала молчат.
Диагностика: выберите симптом

Если ошибка не воспроизводится в браузере, проверьте публикацию запросом с самого сервера: curl -I http://localhost/buh/. Ответ с кодом 200 или с перенаправлением на страницу входа означает, что Apache и модуль работают, и искать нужно на стороне сети или пользователя.

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

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