Веб-доступ к базе 1С через IIS или Apache: установка, публикация, защита

· 9 мин

Содержание

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

Выбор веб-сервера обычно решает операционная система. На Windows Server проще IIS: он ставится как роль, и Конфигуратор публикует в него без ручной правки конфигов. Apache берут на Linux и там, где нужен один конфиг-файл под контролем администратора. После публикации база открывается в браузере по адресу вида http://server/base и в тонком клиенте через тот же адрес.

Подготовка: какой веб-сервер выбрать и что поставить заранее

Сначала определитесь со схемой. Веб-сервер — посредник: он принимает HTTP-запросы и передаёт их модулю расширения 1С, а модуль работает с базой как обычный клиент.

ВариантКогда выбираютНа что смотреть
IIS на Windows ServerСервер на Windows, публикация из Конфигуратора «в один клик»Разрядность пула приложений и модуля 1С, права IIS_IUSRS
Apache 2.4 на WindowsНужен тот же конфиг, что и на Linux, или IIS запрещён политикойСборка Apache той же разрядности, что и платформа
Apache 2.4 на LinuxСервер 1С на Linux, публикация для удалённых сотрудниковПользователь www-data или apache, права на каталог публикации

Что подготовить до установки:

  • 🖥️ Версия платформы. На машине веб-сервера ставится та же версия 1С, что и на сервере кластера, номер в номер. Разные сборки — частая причина отказа соединения.
  • 🧩 Разрядность. 64-битный модуль работает только с 64-битным веб-сервером и пулом. Смешивать нельзя.
  • 🔌 Порты. Снаружи открыт 80 или 443. Если база клиент-серверная, веб-сервер сам ходит к агенту кластера на 1540, к менеджеру на 1541 и к рабочим процессам по диапазону портов, заданному в свойствах рабочего сервера.
  • 🔑 Лицензии. Пользователь веб-клиента занимает клиентскую лицензию так же, как пользователь тонкого клиента . Отдельной «веб-лицензии» нет.
  • 📁 Тип базы. Файловую базу тоже можно опубликовать, но тогда учётная запись веб-сервера должна иметь полные права на каталог базы.

Если веб-сервер и сервер 1С на одной машине, проверка версий упрощается: модули расширения ставятся из того же дистрибутива.

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

Модуль — это библиотека, которую веб-сервер загружает при обращении к публикации. На Windows это wsisapi.dll для IIS и wsap24.dll для Apache 2.4. На Linux — wsap24.so.

Windows

  1. Запустите setup.exe из дистрибутива платформы (технологической или полной).
  2. В списке компонентов отметьте «Модули расширения веб-сервера».
  3. Если на этой же машине будут запускать Конфигуратор для публикации — оставьте и «1С:Предприятие».
  4. Завершите установку. Библиотеки появятся в каталоге C:\Program Files\1cv8\<версия>\bin\.

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

Linux

На Debian и Ubuntu платформа в последних версиях ставится единым установщиком, в котором нужно отметить компонент модулей расширения веб-сервера. После установки найдите библиотеку:

find /opt/1cv8 -name "wsap24.so"

Типовой путь: /opt/1cv8/x86_64/<версия>/wsap24.so. Он понадобится для webinst и конфига Apache.

Настройка IIS для работы с 1С

IIS ставится как роль Windows Server. Для 1С нужны компоненты «Расширения ISAPI» и «Фильтры ISAPI», остальное — по желанию.

Установка роли

Через «Диспетчер серверов → Добавить роли и компоненты» выберите роль «Веб-сервер (IIS)», затем в разделе «Разработка приложений» отметьте расширения и фильтры ISAPI. То же самое одной командой PowerShell от администратора:

Install-WindowsFeature Web-Server, Web-ISAPI-Ext, Web-ISAPI-Filter -IncludeManagementTools

Права и пул приложений

  1. Откройте свойства каталога C:\Program Files\1cv8\<версия>\bin\, вкладка «Безопасность».
  2. Дайте группе IIS_IUSRS права «Чтение и выполнение».
  3. Если публикуете файловую базу — дайте той же группе «Изменение» на каталог базы.
  4. В «Диспетчере служб IIS» проверьте пул приложений сайта: в дополнительных параметрах опция «Разрешены 32-разрядные приложения» должна совпадать с разрядностью модуля. Для 64-битной платформы — False.

После изменения пула IIS перезапускает его рабочий процесс. Пользователи, которые сейчас работают через веб, потеряют сеанс. Меняйте настройки вне рабочего времени.

Настройка Apache на Linux и Windows

Apache ничего не знает о 1С, пока в его конфиг не добавлены три вещи: загрузка модуля, псевдоним каталога и обработчик для этого каталога.

Linux (Ubuntu, Debian)

sudo apt install apache2
sudo systemctl enable --now apache2

Конфиг — /etc/apache2/apache2.conf, пользователь процесса — www-data. На RHEL-подобных системах пакет называется httpd, конфиг лежит в /etc/httpd/conf/httpd.conf, пользователь — apache.

Windows

Возьмите сборку Apache 2.4 нужной разрядности (обычно Apache Lounge), распакуйте в C:\Apache24 и зарегистрируйте службой:

cd C:\Apache24\bin
httpd.exe -k install
httpd.exe -k start

Что пишет публикация в конфиг

После публикации (через Конфигуратор или webinst) в конфиге Apache появляется блок примерно такого вида:

LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.25.1286/wsap24.so"

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

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

Публикация базы на веб-сервере

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

  1. Запустите 1С от имени администратора (правой кнопкой по ярлыку). Без этого Конфигуратор не сможет записать в каталог веб-сервера и в его конфиг.
  2. Откройте базу в Конфигураторе.
  3. Выберите Администрирование → Публикация на веб-сервере.
  4. Задайте имя публикации латиницей, например base — это часть адреса.
  5. Выберите веб-сервер из списка и каталог публикации.
  6. Отметьте, что публиковать: тонкий клиент и веб-клиент, стандартный интерфейс OData, веб-сервисы, HTTP-сервисы. Лишнее не включайте.
  7. Для Apache укажите путь к конфигу, если Конфигуратор не нашёл его сам.
  8. Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.

Через webinst

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

Клиент-серверная база , Apache на Linux:

sudo /opt/1cv8/x86_64/8.3.25.1286/webinst -publish -apache24 \
  -wsdir base -dir /var/www/base \
  -connstr "Srvr=srv1c;Ref=base;" \
  -confpath /etc/apache2/apache2.conf
sudo chown -R www-data:www-data /var/www/base
sudo systemctl restart apache2

Файловая база, IIS на Windows:

"C:\Program Files\1cv8\8.3.25.1286\bin\webinst.exe" -publish -iis -wsdir base -dir "C:\inetpub\wwwroot\base" -connstr "File=""D:\Bases\Buh"";"

Параметр -connstr — строка соединения: Srvr — имя сервера 1С, Ref — имя базы в кластере, File — путь к файловой базе. Полный список ключей выдаёт сама утилита при запуске без параметров.

Файл default.vrd

В каталоге публикации появится default.vrd — описание точки доступа. Его можно править вручную, например чтобы сменить строку соединения после переезда базы:

<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="/base"
       ib="Srvr=&quot;srv1c&quot;;Ref=&quot;base&quot;;">
</point>

Кавычки внутри атрибута ib записываются как &quot;. После правки файла веб-сервер перезапускать не нужно: модуль перечитывает описание при новых соединениях. Если изменения не подхватились — перезапустите веб-сервер, предупредив пользователей.

Проверка

Откройте в браузере http://<сервер>/base. Должно появиться окно входа 1С. Для тонкого клиента добавьте базу в список с типом расположения «На веб-сервере» и тем же адресом.

Перед тем как дать адрес пользователям
Выполнено: 0 / 6

Диагностика: почему публикация не открывается

Первым делом смотрите журнал веб-сервера. На Linux это /var/log/apache2/error.log, на Windows с Apache — C:\Apache24\logs\error.log, у IIS — журнал событий Windows и подробная страница ошибки (откройте адрес в браузере прямо на сервере, там IIS показывает расширенный текст).

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

Перезапуск Apache или IIS обрывает все веб-сеансы. Несохранённые документы у пользователей пропадут. Перезапускайте после предупреждения или в нерабочее время.

Безопасность и производительность веб-публикации

Публикация 1С в интернет без защиты — прямой путь к подбору паролей. Минимальный набор мер:

  • 🔒 HTTPS. Получите сертификат (Let’s Encrypt или корпоративный) и включите TLS на веб-сервере. Пароли 1С по HTTP идут открытым текстом.
  • 👤 Пароли у всех. Пользователь без пароля в опубликованной базе — открытая дверь. Проверьте список в Администрирование → Настройки пользователей и прав → Пользователи.
  • 🚪 Только нужное. Не публикуйте OData, веб-сервисы и HTTP-сервисы, если ими никто не пользуется. Каждый лишний сервис — ещё одна точка входа.
  • 🌐 Ограничение по адресам. Если доступ нужен только из офиса и с VPN, закройте публикацию правилами брандмауэра или директивой Require ip в Apache.
  • 🧱 Сервер 1С не наружу. Наружу смотрит только веб-сервер на 443. Порты кластера 1540, 1541 и диапазон рабочих процессов доступны лишь из внутренней сети.
  • 🔄 Обновления. Держите веб-сервер и ОС обновлёнными, отключите листинг каталогов.

Пример переадресации с HTTP на HTTPS для Apache:

<VirtualHost *:80>
    ServerName 1c.example.ru
    Redirect permanent / https://1c.example.ru/
</VirtualHost>

Производительность

  • ⚡ Веб-клиент тяжелее для сервера, чем тонкий клиент по TCP. Если пользователи сидят в той же сети, давайте им прямое подключение, а веб оставьте удалённым.
  • 🗜️ Включите сжатие ответов на веб-сервере (mod_deflate в Apache, динамическое сжатие в IIS) — это заметно ускоряет работу на медленных каналах.
  • 🧮 Следите за памятью рабочих процессов IIS: при большом числе веб-пользователей задайте пулу плановую переработку на ночное время, когда в базе никого нет.
  • 📶 Удалённым сотрудникам предлагайте тонкий клиент, подключённый к той же публикации: он работает быстрее браузера и не зависит от его обновлений.

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

Можно ли опубликовать одну базу на нескольких веб-серверах?
Да. Каждый веб-сервер получает свою публикацию с той же строкой соединения. Так делают для балансировки или раздельного доступа из офиса и из интернета.
Нужен ли сервер 1С, чтобы работать через веб?
Нет. Опубликовать можно и файловую базу. Но при одновременной работе нескольких пользователей файловая база через веб тормозит сильнее, чем клиент-серверная.
Сколько лицензий занимает веб-клиент?
Один сеанс веб-клиента занимает одну клиентскую лицензию, как и тонкий клиент. Сама публикация лицензий не требует.
Что делать с публикацией после обновления платформы?
Установите модули расширения новой версии и переопубликуйте базу из Конфигуратора новой версии или через webinst нужной сборки. Старую строку LoadModule в конфиге Apache замените новой.
Как убрать публикацию?
В Конфигураторе в окне публикации есть кнопка отключения. В командной строке — ключ -delete утилиты webinst с тем же именем публикации и веб-сервером.