Веб-доступ к базе 1С через IIS или Apache: установка, публикация, защита
Содержание
Чтобы развернуть веб-сервер для 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
- Запустите
setup.exeиз дистрибутива платформы (технологической или полной). - В списке компонентов отметьте «Модули расширения веб-сервера».
- Если на этой же машине будут запускать Конфигуратор для публикации — оставьте и «1С:Предприятие».
- Завершите установку. Библиотеки появятся в каталоге
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
Права и пул приложений
- Откройте свойства каталога
C:\Program Files\1cv8\<версия>\bin\, вкладка «Безопасность». - Дайте группе
IIS_IUSRSправа «Чтение и выполнение». - Если публикуете файловую базу — дайте той же группе «Изменение» на каталог базы.
- В «Диспетчере служб 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С от имени администратора (правой кнопкой по ярлыку). Без этого Конфигуратор не сможет записать в каталог веб-сервера и в его конфиг.
- Откройте базу в Конфигураторе.
- Выберите
Администрирование → Публикация на веб-сервере. - Задайте имя публикации латиницей, например
base— это часть адреса. - Выберите веб-сервер из списка и каталог публикации.
- Отметьте, что публиковать: тонкий клиент и веб-клиент, стандартный интерфейс OData, веб-сервисы, HTTP-сервисы. Лишнее не включайте.
- Для Apache укажите путь к конфигу, если Конфигуратор не нашёл его сам.
- Нажмите «Опубликовать» и согласитесь на перезапуск веб-сервера.
Через 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="srv1c";Ref="base";">
</point>
Кавычки внутри атрибута ib записываются как ". После правки файла веб-сервер перезапускать не нужно: модуль перечитывает описание при новых соединениях. Если изменения не подхватились — перезапустите веб-сервер, предупредив пользователей.
Проверка
Откройте в браузере http://<сервер>/base. Должно появиться окно входа 1С. Для тонкого клиента добавьте базу в список с типом расположения «На веб-сервере» и тем же адресом.
Диагностика: почему публикация не открывается
Первым делом смотрите журнал веб-сервера. На 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: при большом числе веб-пользователей задайте пулу плановую переработку на ночное время, когда в базе никого нет.
- 📶 Удалённым сотрудникам предлагайте тонкий клиент, подключённый к той же публикации: он работает быстрее браузера и не зависит от его обновлений.