Как вывести базу 1С 8.3 в браузер: модуль веб-сервера, публикация и защита
Содержание
«1С Публикатор» не нужно скачивать и устанавливать отдельной программой — такого продукта нет. Так обычно называют механизм веб-публикации платформы: диалог Администрирование → Публикация на веб-сервере в Конфигураторе, утилиту webinst и модуль расширения веб-сервера, который ставится вместе с платформой. Настройка сводится к трём шагам: поставить компонент «Модули расширения веб-сервера», подготовить IIS или Apache и опубликовать базу.
После публикации база открывается по адресу вида http://server/buh в браузере (веб-клиент) или в тонком клиенте через веб-сервер. Тот же механизм публикует веб-сервисы, HTTP-сервисы и интерфейс OData для интеграций. Порядок одинаков для файловой и клиент-серверной базы, различаются только права доступа и строка подключения.
Как устроена веб-публикация 1С и что она даёт
Публикация — это связка из трёх частей:
- 🌐 веб-сервер (IIS на Windows или Apache 2.4 на Windows и Linux) принимает запросы браузера;
- 🧩 модуль расширения 1С (
wsisapi.dllдля IIS,wsap24.dllилиwsap24.soдля Apache 2.4) передаёт запросы платформе; - 📄 файл
default.vrdв каталоге публикации хранит строку подключения к базе и список опубликованных сервисов.
Сам веб-сервер базу не хранит и не обрабатывает. В файловом варианте модуль работает с файлами базы напрямую, в клиент-серверном — подключается к кластеру серверов 1С.
Что получают после публикации:
- работу через браузер без установки клиента;
- подключение удалённых пользователей тонким клиентом по HTTP или HTTPS вместо проброса портов кластера;
- точку входа для обменов: SOAP-веб-сервисы, HTTP-сервисы, OData;
- работу мобильных приложений и сайтов с базой.
Для одного-двух пользователей в локальной сети публикация не нужна: проще подключиться к базе обычным способом. Она оправдана, когда нужен доступ извне, браузер или интеграция по HTTP.
Что подготовить до публикации базы
Проверьте четыре вещи до того, как открывать Конфигуратор.
| Что | Требование |
|---|---|
| Разрядность | Модуль 1С и веб-сервер одной разрядности: 64-битный Apache — 64-битная платформа |
| Версия платформы | Модуль той же версии, что и платформа, с которой работает база или кластер |
| Права | Конфигуратор для публикации запускают от имени администратора Windows |
| Порты | На веб-сервере открыты 80 и 443, порты кластера 1540, 1541, 1560–1591 наружу не нужны |
Для клиент-серверной базы веб-сервер может стоять на отдельной машине. Тогда на нём ставят только платформу с модулями веб-сервера, а базу указывают строкой Srvr=имя_сервера;Ref=имя_базы;. Между веб-сервером и кластером должны быть открыты порты кластера.
Для файловой базы каталог с файлом 1Cv8.1CD должен быть доступен учётной записи, от имени которой работает веб-сервер. Сетевую папку на другом компьютере использовать можно, но это медленно и капризно с правами — лучше держать базу на той же машине.
Установка модуля веб-сервера и подготовка IIS или Apache
Шаг 1. Компонент в установщике платформы
- Запустите
setup.exeнужной версии платформы. - В списке компонентов отметьте «Модули расширения веб-сервера».
- Если платформа уже стоит, запустите установщик ещё раз и выберите изменение состава компонентов.
На Linux модуль входит в пакет сервера 1С, файл wsap24.so лежит в каталоге платформы, например /opt/1cv8/x86_64/8.3.25.1374/.
Шаг 2а. Подготовка IIS
В «Диспетчере серверов» добавьте роль «Веб-сервер (IIS)». В составе служб роли отметьте в группе «Разработка приложений» пункты «Расширения ISAPI» и «Фильтры ISAPI». Без них публикация пройдёт, но браузер получит ошибку 404 или 500.
Дальше настройте пул приложений:
- для 64-битной платформы параметр «Разрешены 32-разрядные приложения» оставьте
False; - для 32-битной платформы — включите
True.
Шаг 2б. Подготовка Apache 2.4
На Windows используют сборку Apache с сайта Apache Lounge нужной разрядности. Установите службу командой из каталога bin:
cd C:\Apache24\bin
httpd.exe -k install
На Ubuntu и Debian хватит пакета из репозитория:
sudo apt install apache2
sudo systemctl enable --now apache2
Публикация базы 1С: Конфигуратор и webinst
Через Конфигуратор (Windows)
- Откройте базу в Конфигураторе от имени администратора: правая кнопка по ярлыку → «Запуск от имени администратора».
- Выберите
Администрирование → Публикация на веб-сервере. - Заполните поля:
- Имя — латиницей, без пробелов:
buh. Это часть адресаhttp://server/buh; - Веб-сервер — Internet Information Services или Apache 2.4;
- Каталог — папка публикации, например
C:\inetpub\wwwroot\buh.
- Имя — латиницей, без пробелов:
- Оставьте флажок публикации тонкого клиента и веб-клиента.
- На вкладках веб-сервисов и HTTP-сервисов отметьте только те сервисы, которые реально нужны интеграциям.
- Нажмите «Опубликовать». Для Apache программа предложит перезапустить веб-сервер — согласитесь.
Перезапуск веб-сервера обрывает сеансы всех пользователей, которые работают через браузер. На рабочем сервере публикуйте вне рабочего времени.
Через webinst (Linux и пакетные скрипты)
На Linux Конфигуратор для публикации обычно не используют. Утилита webinst лежит в каталоге платформы:
cd /opt/1cv8/x86_64/8.3.25.1374
sudo ./webinst -publish -apache24 -wsdir buh -dir /var/www/buh \
-connstr "Srvr=srv1c;Ref=buh;" -confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2
Для удаления публикации используют ключ -delete с теми же -wsdir и -confpath. Список всех параметров выводит запуск утилиты без ключей.
Публикация веб-сервисов, HTTP-сервисов и OData
Для обменов публикуют не интерфейс, а сервисы. В том же диалоге:
- веб-сервисы (SOAP) — отметьте нужные на вкладке веб-сервисов, описание WSDL будет доступно по адресу
http://server/buh/ws/имя_сервиса?wsdl; - HTTP-сервисы — отметьте на своей вкладке, адрес вида
http://server/buh/hs/корневой_URL/...; - OData — флажок публикации стандартного интерфейса OData, адрес
http://server/buh/odata/standard.odata/.
Для OData мало флажка: состав доступных объектов задают в самой базе, без этого внешняя система получит пустой список. Пользователю, под которым ходит интеграция, дайте только права на нужные объекты.
После обновления платформы
Модуль веб-сервера жёстко привязан к версии платформы. После перехода на новую версию:
- Установите новую платформу с компонентом «Модули расширения веб-сервера».
- Переопубликуйте базу из Конфигуратора новой версии или исправьте путь в
LoadModuleвручную. - Перезапустите веб-сервер и откройте базу в браузере.
- Удаляйте старую версию платформы только после проверки.
Если пропустить второй шаг и удалить старую платформу, Apache просто не запустится.
Что появится в конфигурации Apache
После публикации в httpd.conf или apache2.conf добавятся строки такого вида:
LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.25.1374/wsap24.so"
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>
А в каталоге публикации — файл default.vrd:
<?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";">
</point>
Проверьте результат: откройте в браузере http://имя_сервера/buh. Должно появиться окно входа в базу.
Строку LoadModule пишут один раз на весь Apache, даже если опубликовано десять баз. Каждой базе нужны только свои Alias и <Directory>.
Защита публикации: HTTPS, пароли и фаервол
Опубликованная база открыта всем, кто знает адрес. Если сервер смотрит в интернет, без защиты её не оставляют.
Пароли в базе. У каждого пользователя 1С должен быть пароль. Пользователь без пароля в опубликованной базе — это вход для любого, кто подберёт имя из списка.
HTTPS. Сертификат ставят на веб-сервер, сама 1С в этом не участвует. Для Apache на Linux бесплатный сертификат Let’s Encrypt выпускает certbot:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d 1c.example.ru
В IIS сертификат привязывают к сайту в разделе «Привязки» на порт 443. После этого в тонком клиенте адрес базы указывают с https://.
Фаервол. Наружу открывайте только 443 (и 80 для перенаправления на HTTPS). Порты кластера и RDP в интернет не выставляют. На Ubuntu:
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw enable
Перед ufw enable на удалённом сервере разрешите SSH (sudo ufw allow OpenSSH), иначе потеряете доступ к машине.
Дополнительно:
- 🔒 отдельная публикация для сервисов обмена с отдельным пользователем 1С, у которого только нужные права;
- 🔒 базовая HTTP-аутентификация или ограничение по IP на уровне веб-сервера для служебных публикаций;
- 🔒 для файловой базы — права учётной записи веб-сервера только на каталог этой базы, а не на весь диск.
Ускорение работы через веб-сервер
Большую часть времени запрос тратит не на веб-сервер, а на сервер 1С и СУБД. Поэтому сначала проверяют их, а уже потом настройки Apache или IIS.
Что реально помогает:
- Веб-сервер рядом с кластером. Каждый вызов из браузера — это обращение к серверу 1С. Сеть между ними с задержкой в десятки миллисекунд делает интерфейс вязким.
- Сжатие ответов. Включите
mod_deflateв Apache или динамическое сжатие в IIS — по медленным каналам формы открываются заметно быстрее. - Тонкий клиент вместо браузера. Для постоянной работы тонкий клиент через HTTP быстрее веб-клиента: часть интерфейса он рисует сам.
- Лимиты потоков Apache. На Windows Apache работает в режиме
mpm_winnt, число потоков задаётThreadsPerChild. При сотне пользователей значение по умолчанию стоит увеличить. - Файловая база — только для небольших команд. При пяти-десяти одновременных пользователях через веб начинаются ожидания блокировок. Дальше нужен клиент-серверный вариант.
Если тормозит только один отчёт или обработка, веб-публикация ни при чём — проблема в запросе или данных, а ускорять нужно их.
Nginx перед Apache: обратный прокси для публикации
Частая схема для доступа из интернета: nginx принимает HTTPS на 443 и передаёт запросы Apache, который слушает только локальный порт. Плюсы — сертификаты и защита в одном месте, Apache не торчит наружу.
Сначала переведите Apache на локальный порт: в ports.conf укажите Listen 127.0.0.1:8080. Затем в nginx:
server {
listen 443 ssl http2;
server_name 1c.example.ru;
ssl_certificate /etc/letsencrypt/live/1c.example.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/1c.example.ru/privkey.pem;
client_max_body_size 100m;
location /buh/ {
proxy_pass http://127.0.0.1:8080/buh/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
Три параметра здесь не случайны:
client_max_body_size— без него nginx отрежет загрузку файлов больше 1 МБ, а присоединённые файлы и обмены упадут с ошибкой 413;proxy_read_timeout— длительные операции (закрытие месяца , тяжёлый отчёт) идут дольше стандартных 60 секунд, и пользователь получит 504;- путь
/buh/вlocationиproxy_passсовпадает с именем публикации — иначе 1С не найдёт свой ресурс.
После правок проверьте конфигурацию и перечитайте её без остановки сервиса:
sudo nginx -t && sudo systemctl reload nginx
Ошибки публикации и как их снять
wsap24.dll или наоборот. Поставьте Apache той же разрядности, что и платформа.httpd.conf или настройки IIS. Закройте его и запустите от имени администратора.www-data на Linux) не имеет прав на каталог базы. Дайте ей права на чтение и запись этого каталога.Перезапуск Apache или пула IIS ради исправления обрывает сеансы всех веб-пользователей. Предупредите их или выберите время вне смены.
Частые вопросы
Нужна ли отдельная лицензия для веб-публикации?
Можно ли опубликовать несколько баз на одном веб-сервере?
/buh, /zup, /ut. Модуль LoadModule в Apache подключается один раз.Как подключить тонкий клиент к опубликованной базе?
https://1c.example.ru/buh.Работает ли публикация на Linux с базой на Windows-сервере?
Srvr=имя_сервера;Ref=имя_базы;.Как снять публикацию?
webinst с ключом -delete. Сама база при этом не меняется.