Публикация информационной базы 1С через IIS и Apache: от установки модулей до HTTPS
Содержание
Чтобы добавить базу 1С на веб-сервер, нужны три вещи: установленные «Модули расширения веб-сервера» той же разрядности, что и сам веб-сервер, запущенный от имени администратора Конфигуратор и команда Администрирование → Публикация на веб-сервере. После публикации база открывается в браузере по адресу вида http://server/base и подключается в тонком клиенте как база «На веб-сервере».
Порядок одинаков для файловых и клиент-серверных баз и для платформы 8.3 в целом, конфигурация значения не имеет. Различается только настройка веб-сервера
: IIS на Windows или Apache 2.4 на Windows и Linux. Ниже оба варианта, плюс публикация из командной строки, разбор default.vrd и ошибок.
Что подготовить на сервере до публикации базы
Публикация — это не копирование базы
. Веб-сервер получает модуль 1С и файл-описание default.vrd, а сама база остаётся на месте: в каталоге файловой базы или в кластере серверов 1С.
Компоненты платформы
При установке платформы 1С на машину с веб-сервером отметьте компоненты:
- 🧩 Модули расширения веб-сервера — обязательно, без них публиковать нечего;
- 🖥️ 1С:Предприятие (тонкий клиент или полный) — нужен, чтобы открыть Конфигуратор и опубликовать базу из него;
- 🔌 Сервер 1С:Предприятия на эту машину ставить не обязательно: для клиент-серверной базы модуль сам ходит на сервер 1С по сети.
Если платформа уже стоит без модулей, запустите установщик той же версии повторно, выберите изменение установленных компонентов и добавьте модули.
Разрядность модуля должна совпадать с разрядностью веб-сервера. 64-битный Apache или IIS загружает только 64-битный модуль из 64-битной платформы. Это самая частая причина того, что после публикации ничего не работает.
Роли IIS (Windows Server 2016 и новее)
В «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)» и отметьте службы ролей:
- Стандартные функции HTTP: статическое содержимое, документ по умолчанию, ошибки HTTP.
- Разработка приложений: Расширения ISAPI и Фильтры ISAPI.
- Средства управления: консоль управления IIS.
- Совместимость управления IIS 6 (метабаза) — без неё публикация из Конфигуратора в IIS часто не проходит.
Apache
Подойдёт Apache 2.4 (на Windows — сборка той же разрядности, что и платформа; на Linux — пакет из репозитория дистрибутива). Запомните путь к httpd.conf: Конфигуратор будет дописывать в него строки. Версия 2.2 устарела, новые установки делайте на 2.4.
Публикация на веб-сервере из Конфигуратора: пошагово
Главный приём, который экономит полчаса поиска причин: запускайте Конфигуратор от имени администратора (правая кнопка по ярлыку → «Запуск от имени администратора»). Иначе он не сможет записать httpd.conf или настройки IIS, а сообщение об ошибке будет невнятным.
- Откройте базу в режиме Конфигуратор на машине с веб-сервером.
- Выберите
Администрирование → Публикация на веб-сервере. - Заполните поле Имя — латиницей, без пробелов, например
buh. Это часть адреса:http://server/buh. - В поле Веб-сервер выберите
Internet Information ServicesилиApache 2.4. - Каталог — папка публикации, куда ляжет
default.vrd. Для IIS обычноC:\inetpub\wwwroot\buh, для Apache — любая папка, напримерC:\Apache24\htdocs\buh. - Отметьте флажок публикации тонкого и веб-клиента.
- Веб-сервисы, HTTP-сервисы и стандартный интерфейс OData включайте только если ими реально пользуются (обмены, мобильное приложение, интеграции).
- Нажмите Опубликовать. Для Apache Конфигуратор предложит перезапустить веб-сервер — соглашайтесь, если в этот момент через него никто не работает .
Перезапуск Apache или IIS обрывает все веб-сеансы, открытые через этот сервер. На рабочем сервере публикуйте новую базу вне рабочего времени или предупредите пользователей.
Публикация из командной строки: webinst
Для повторяемой настройки, скриптов и Linux без графики есть утилита webinst в каталоге bin платформы. Пример для Apache 2.4 и клиент-серверной базы:
cd "C:\Program Files\1cv8\8.3.25.1374\bin"
webinst -publish -apache24 -wsdir buh -dir "C:\Apache24\htdocs\buh" -connstr "Srvr=srv1c;Ref=buh;" -confpath "C:\Apache24\conf\httpd.conf"
Для IIS ключ -apache24 меняется на -iis, а -confpath не нужен. Для файловой базы строка соединения выглядит так: -connstr "File=""D:\Bases\buh"";". Номер версии в пути подставьте свой. Полный список ключей выводит сама утилита, если запустить её без параметров.
Как подключиться к опубликованной базе
- 🌐 Веб-клиент: откройте в браузере
http://server/buh. - 🖥️ Тонкий клиент: в окне запуска нажмите «Добавить», выберите «Добавление в список существующей информационной базы», тип расположения — «На веб-сервере», адрес
http://server/buh. - 📱 Мобильный клиент и интеграции используют тот же адрес публикации.
Модуль веб-расширения и права доступа
Если публиковали из Конфигуратора, основную настройку он сделал сам. Но знать, что именно он сделал, нужно: при сбоях и после обновления платформы правите руками.
Что появляется в httpd.conf
В конец файла Конфигуратор дописывает примерно такой блок:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/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>
На Linux модуль называется wsap24.so и лежит в каталоге платформы, обычно /opt/1cv8/x86_64/<версия>/.
В пути LoadModule зашит номер версии платформы. После обновления платформы и удаления старой версии Apache не стартует или отдаёт ошибку. Исправьте путь на новую версию или переопубликуйте базу. Строка LoadModule должна быть в файле одна, даже если опубликовано десять баз.
Что настраивается в IIS
В IIS публикация создаёт приложение в «Default Web Site» и сопоставление обработчика на модуль wsisapi.dll. Если платформа 32-битная, а IIS 64-битный, в дополнительных параметрах пула приложений включите «Разрешить 32-разрядные приложения». Лучше же поставить 64-битную платформу и не смешивать.
Права на каталоги
Веб-сервер работает от служебной учётной записи, и ей нужен доступ:
| Каталог | Кому | Права |
|---|---|---|
Каталог публикации (...\buh) | IIS: группа IIS_IUSRS; Apache: учётная запись службы | Чтение |
Каталог bin платформы | та же учётная запись | Чтение и выполнение |
| Каталог файловой базы | та же учётная запись | Полный доступ (изменение) |
Для клиент-серверной базы права на каталог базы не нужны: данные лежат на сервере СУБД, модуль обращается к агенту кластера 1С по сети (порт 1540 по умолчанию). Этот порт должен быть открыт с веб-сервера до сервера 1С.
Файл default.vrd: что в нём и что можно править
default.vrd — XML-описание публикации. Модуль читает его при каждом обращении к базе, поэтому правки применяются без перезапуска веб-сервера, достаточно переподключиться клиентом. Минимальный файл для клиент-серверной базы:
<?xml version="1.0" encoding="UTF-8"?>
<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="srv1c";Ref="buh";">
<ws pointEnableCommon="true"/>
<httpServices publishByDefault="true"/>
</point>
Ключевые атрибуты:
base— виртуальный путь, должен совпадать с именем публикации в адресе;ib— строка соединения с базой. Кавычки внутри экранированы как". Для файловой базы:ib="File="D:\Bases\buh";";enable="false"в тегеpointвременно закрывает публикацию, не удаляя её;<ws>и<httpServices>управляют веб-сервисами и HTTP-сервисами;<standardOdata enable="true"/>включает стандартный интерфейс OData.
Строку соединения можно дополнить параметрами Usr и Pwd, и тогда все будут входить в базу под одним пользователем без пароля.
Не прописывайте логин и пароль в ib для публикации, доступной из интернета. Любой, кто узнает адрес, попадёт в базу под этим пользователем. Если автоматический вход нужен для интеграции, создайте отдельного пользователя 1С с минимальными правами и закройте адрес по IP.
Перед ручной правкой сохраните копию файла: ошибка в XML ломает публикацию целиком.
Защита опубликованной базы и переход на HTTPS
Публикация открывает базу по HTTP. Внутри офисной сети этого может хватить, но при доступе из интернета пароли пользователей 1С уходят открытым текстом. Минимальный набор мер:
- 🔒 Только HTTPS. Получите сертификат (купленный, корпоративного центра сертификации или Let’s Encrypt) и повесьте его на веб-сервер.
- 🔑 Пароли у всех пользователей 1С. Пользователь без пароля в опубликованной базе — открытая дверь.
- 🚪 Нестандартный адрес и ограничение по IP, если базой пользуются только из известных мест.
- 🧱 Не выставляйте наружу сервер 1С и СУБД. В интернет смотрит только порт 443 веб-сервера; порты 1540–1541 и диапазон рабочих процессов остаются во внутренней сети.
HTTPS в IIS
В консоли IIS импортируйте сертификат (раздел «Сертификаты сервера»), затем в «Привязках» сайта добавьте тип https, порт 443 и выберите сертификат. В параметрах SSL приложения публикации отметьте «Требовать SSL», чтобы HTTP-запросы не проходили.
HTTPS в Apache
Включите mod_ssl и виртуальный хост на порту 443:
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
ServerName 1c.example.ru
SSLEngine on
SSLCertificateFile "C:/Apache24/conf/ssl/cert.pem"
SSLCertificateKeyFile "C:/Apache24/conf/ssl/key.pem"
</VirtualHost>
Блок публикации (Alias и <Directory>) можно оставить как есть: он сработает и для HTTPS. Адрес в клиентах поменяйте на https://1c.example.ru/buh.
Если сертификат самоподписанный, тонкий клиент выдаст ошибку проверки сертификата. Для рабочей базы используйте сертификат, которому доверяют компьютеры пользователей, а не отключайте проверку.
Лицензии при работе через веб-сервер
Веб-публикация не отменяет клиентских лицензий: каждый сеанс через браузер или тонкий клиент занимает лицензию так же, как обычный.
- Для клиент-серверной базы лицензии выдаёт сервер 1С, ставить их на веб-сервер не нужно.
- Для файловой базы лицензию получает модуль на машине с веб-сервером. Значит, клиентские лицензии должны быть доступны именно там, а не на компьютерах пользователей.
Если после публикации файловой базы пользователи получают ошибку об отсутствии лицензии, проверьте, видит ли лицензии машина веб-сервера и хватает ли их на всех одновременно работающих.
Почему опубликованная база не открывается
Большая часть сбоев сводится к пяти причинам: разрядность, права, старая версия в пути модуля, неверная строка соединения и закрытые порты. Выберите симптом:
logs\error.log. Если там ошибка загрузки wsap24.dll, проверьте путь в строке LoadModule: указан ли каталог существующей версии и совпадает ли разрядность модуля и Apache. Строка LoadModule _1cws_module должна быть одна.wsisapi.dll из-за разрядности. Проверьте службы роли IIS и параметр пула «Разрешить 32-разрядные приложения».base в default.vrd. В IIS проверьте, что приложение создано, в Apache — что блок Alias есть в httpd.conf и Apache перезапущен после публикации.IIS_IUSRS (для IIS) или учётной записи службы Apache права на изменение в каталоге базы.ib, доступность сервера 1С с машины веб-сервера по имени и открытый порт 1540. Веб-сервер должен разрешать имя сервера 1С так же, как рабочие станции.Перед тем как перезапускать службу IIS или Apache в рабочее время, проверьте, кто работает через публикацию: перезапуск оборвёт их сеансы, и несохранённые документы пропадут.
Частые вопросы
Можно ли опубликовать несколько баз на одном веб-сервере?
http://server/buh, http://server/zup. Модуль 1С при этом загружается один раз.Нужен ли сервер 1С, чтобы опубликовать файловую базу?
Как снять базу с публикации?
Администрирование → Публикация на веб-сервере нажмите «Отключить». Для командной строки у webinst есть ключ -delete. Сама база при этом не удаляется.Работает ли публикация на Linux?
wsap24.so. Публиковать удобнее утилитой webinst с ключом -apache24, указав путь к конфигурации Apache.Что делать с публикацией после обновления платформы?
httpd.conf или переопубликуйте базу из Конфигуратора новой версии. Для IIS проверьте путь к wsisapi.dll в сопоставлении обработчиков.