Веб-сервер для 1С: публикация базы через Apache и IIS

· 9 мин

Содержание

Директор просит открыть базу с телефона, а вы сидите в офисе за клиентским приложением. Решение одно: опубликовать базу на веб-сервере. Тогда она открывается в браузере, работает через тонкий клиент по HTTP и умеет отдавать веб-сервисы для обмена с сайтом или внешней программой.

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

Какой веб-сервер выбрать: Apache, IIS или Nginx

Выбор почти всегда диктует операционная система сервера и привычки администратора. По возможностям разница небольшая.

ВариантГде работаетПлюсыМинусы
IISWindows ServerВходит в систему, удобная графическая консоль, встроенная проверка подлинности WindowsНужно включить нужные компоненты, лицензия Windows
Apache 2.4Windows и LinuxБесплатный, один подход на обеих системах, простой текстовый конфигКонфиг правят вручную, нужен подходящий по разрядности дистрибутив
Nginx + ApacheЧаще LinuxБыстрая раздача статики, удобный HTTPS и ограничение запросовДве программы вместо одной, больше настройки

Ориентир такой:

  • 🪟 сервер на Windows и опыта с Linux нет, берите IIS;
  • 🐧 сервер на Linux, берите Apache, а Nginx добавляйте, если нужен фронт для нескольких сайтов;
  • 🔌 нужен внешний доступ из интернета, ставьте перед 1С прокси с HTTPS, а не открывайте Apache напрямую.

Платформа 1С отдаёт модули для IIS и для Apache 2.4. Для Nginx готового модуля нет, и это не упущение: он просто проксирует запросы дальше.

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

Сначала проверьте четыре вещи. Это сэкономит час поиска причин, почему «всё поставили, а не открывается».

  1. Платформа 1С на сервере. Модули веб-расширения устанавливаются вместе с платформой. При установке отметьте компонент «Модули расширения веб-серверов». Если платформу уже поставили без него, запустите установку повторно и добавьте компонент.
  2. Разрядность. Модуль и веб-сервер должны быть одной разрядности. Для Apache это значит: 64-битный дистрибутив подходит к 64-битным модулям. В IIS пул приложений настраивают так же.
  3. Способ доступа к базе. Файловая база лежит в каталоге, клиент-серверная живёт на кластере серверов 1С. Веб-сервер должен видеть и то и другое: с файловой базой ему нужны права на каталог, с кластером нужна сетевая связность с сервером приложений.
  4. Лицензии. Веб-клиент и тонкий клиент через HTTP занимают клиентские лицензии, как и обычное подключение. Для сервера приложений проверьте, что их хватает на планируемое число пользователей.

Публиковать базу на сервере, который смотрит в интернет, без HTTPS и без ограничения доступа нельзя. Логины и пароли пойдут открытым текстом.

Установка и настройка веб-сервера под 1С

Apache на Windows

  1. Скачайте сборку Apache 2.4 нужной разрядности и распакуйте в каталог без пробелов в пути, например C:\Apache24.
  2. Установите службу командой httpd.exe -k install из каталога bin. Запускайте от имени администратора.
  3. Откройте http://localhost. Если видите страницу приветствия, сервер работает.

Модуль 1С для Apache лежит в каталоге bin установленной платформы, рядом с 1cv8.exe. Его подключает сам механизм публикации, вручную править конфиг, как правило, не придётся.

Apache на Linux

На Debian и Ubuntu пакет называется apache2, на семействе Red Hat httpd:

sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2

Права важны не меньше установки. Пользователь, от имени которого работает Apache (на Debian это www-data), должен читать каталог с бинарниками платформы и каталог публикации. Если база файловая, ему нужен доступ и к каталогу базы на запись.

IIS на Windows Server

В «Диспетчере сервера» откройте «Добавить роли и компоненты» и включите роль «Веб-сервер (IIS)». Из подкомпонентов отметьте:

  • 📌 расширения ISAPI и фильтры ISAPI;
  • 📌 статическое содержимое;
  • 📌 проверку подлинности Windows, если нужна сквозная авторизация доменных пользователей;
  • 📌 консоль управления IIS.

Если планируете публиковать HTTP-сервисы или OData, дополнительно проверьте, что включена анонимная проверка подлинности: сами пользователи авторизуются уже в 1С.

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

Публикацию делают из Конфигуратора или из командной строки. Первый способ нагляднее, второй проще автоматизировать.

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

  1. Откройте нужную базу в Конфигураторе. Запускайте его от имени администратора, иначе не получится записать файлы в каталог веб-сервера.
  2. Выберите Администрирование → Публикация на веб-сервере.
  3. Укажите имя публикации. Оно станет частью адреса: для имени buh база откроется по http://сервер/buh.
  4. Выберите веб-сервер из списка и каталог, куда сохранить файлы. Удобно держать их вне корня сайта, например в C:\inetpub\wwwroot\buh для IIS.
  5. Отметьте нужное: публикацию веб-сервисов, стандартный интерфейс OData, доступ для тонкого и веб-клиента.
  6. Нажмите «Опубликовать».

Конфигуратор создаст каталог с default.vrd и допишет настройки в конфигурацию Apache или в IIS. Дальше перезапустите веб-сервер, если публикация этого не сделала сама.

Перезапуск Apache или IIS оборвёт все активные веб-сеансы. Делайте это вне рабочего времени или предупредите пользователей заранее.

Через командную строку

Утилита webinst лежит в каталоге bin платформы. Пример для Apache 2.4 на Windows:

webinst -publish -apache24 -wsdir buh -dir "C:\inetpub\wwwroot\buh" ^
  -connstr "Srvr=app01;Ref=buh;" ^
  -confpath "C:\Apache24\conf\httpd.conf"

Для IIS вместо -apache24 указывают -iis. Параметр -connstr содержит строку соединения: для клиент-серверной базы это Srvr= и Ref=, для файловой File=. Полный список ключей смотрите в справке webinst — не запоминайте их по чужим скриптам, версии платформы различаются.

На Linux логика та же, только пути другие, а конфиг называется apache2.conf или httpd.conf.

Что внутри default.vrd

Файл default.vrd описывает, что именно опубликовано. Его можно править руками, если нужно закрыть лишнее. Типичные случаи:

ЗадачаГде менять
Отключить веб-клиент, оставить только тонкийатрибуты публикации в default.vrd
Выложить HTTP-сервисэлемент с описанием сервиса и его корневым URL
Включить стандартный ODataэлемент standardOdata
Ограничить публикацию по пользователямнастройки проверки подлинности веб-сервера

После любой правки default.vrd перезапуск веб-сервера не обязателен, но кэш сеансов лучше очистить, иначе изменения подхватятся не сразу.

Как настроить HTTPS для опубликованной базы

Выделенный сертификат нужен, как только база покидает локальную сеть. Подходит сертификат от доверенного центра или бесплатный от Let’s Encrypt.

IIS

  1. Импортируйте сертификат в хранилище «Личное» для компьютера.
  2. В консоли IIS выберите сайт, откройте «Привязки» и добавьте привязку https на порт 443.
  3. Укажите импортированный сертификат и имя узла.
  4. Проверьте, что адрес из сертификата совпадает с тем, по которому заходят пользователи.

Apache и Nginx

В Apache включите модуль mod_ssl и пропишите пути к файлам сертификата и ключа в виртуальном хосте на порту 443. Если перед ним стоит Nginx, то HTTPS заканчивается на Nginx, а к Apache идёт внутренний HTTP:

server {
    listen 443 ssl;
    server_name 1c.example.ru;

    ssl_certificate     /etc/ssl/1c/fullchain.pem;
    ssl_certificate_key /etc/ssl/1c/privkey.pem;

    client_max_body_size 100m;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_read_timeout 300s;
    }
}

Два параметра здесь не мелочь. client_max_body_size ограничивает размер загружаемого файла: по умолчанию Nginx отрезает всё больше одного мегабайта, и вложения в базе перестанут прикрепляться. proxy_read_timeout защищает длинные отчёты от обрыва.

Сертификат Let’s Encrypt живёт недолго, поэтому настройте автоматическое продление. Иначе однажды утром браузер покажет пользователям страшное предупреждение.

Проверка работы и разбор ошибок

Откройте в браузере адрес публикации, например https://1c.example.ru/buh. Должно появиться окно входа в веб-клиент. Затем запустите тонкий клиент и подключитесь к базе через адрес сервера, выбрав режим HTTP/HTTPS.

Если вы публиковали HTTP-сервис, проверьте его отдельным запросом из браузера или curl: URL составляется из имени публикации, корня сервиса и имени шаблона.

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

Если ни один из симптомов не подходит, смотрите журнал: error.log у Apache и журнал событий Windows или журналы IIS у второго варианта. Там почти всегда есть конкретная строка о том, какой файл не найден или к чему отказано в доступе.

Если публикация не заработала: запасные варианты

Бывает, что веб-сервер упорно не ладит с модулем: чужая сборка Apache, нестандартные права, закрытая сеть. Что можно сделать:

  • 🔁 попробовать другой веб-сервер: если не получился Apache, проверьте тот же набор шагов на IIS и наоборот;
  • 🔁 взять сборку Apache, на которую ориентируется документация платформы, а не произвольный пакет;
  • 🔁 временно открыть публикацию без прокси и HTTPS внутри закрытой сети, чтобы отделить проблему модуля от проблемы прокси;
  • 🔁 обратиться к поддержке с логами веб-сервера и содержимым default.vrd.

Основное правило диагностики: двигайтесь слоями. Сначала веб-сервер сам по себе, потом модуль, потом публикация, потом прокси и HTTPS. Тогда причина находится за несколько проверок, а не за полдня.

Как ускорить работу опубликованной базы

Скорость определяется не только веб-сервером. Но несколько настроек на его стороне дают заметный эффект:

  • ⚡ включите сжатие ответов (mod_deflate для Apache, динамическое сжатие в IIS);
  • ⚡ отдайте статику напрямую с Nginx и задайте ей кэш на стороне браузера;
  • ⚡ следите за числом рабочих процессов или потоков: при десятках одновременных пользователей настройки по умолчанию становятся тесными;
  • ⚡ держите веб-сервер и сервер приложений 1С в одной быстрой сети, а лучше на одной площадке.

Если вы поднимаете лимит рабочих процессов, следите за памятью. Лишние процессы без запаса оперативной памяти приведут к подкачке, и база станет работать медленнее, чем до «оптимизации».

Тяжёлые отчёты нагружают прежде всего кластер 1С, а не веб-сервер. Если тормозит только один отчёт, веб-сервер можно не трогать.

Обновления, мониторинг и автоматизация

После обновления платформы публикацию нужно сделать заново. В публикации записан путь к модулю конкретной версии, поэтому старый путь перестаёт быть актуальным, и база может не открыться. Это самый частый сюрприз после «обычного» обновления.

Чтобы не забывать, оформите шаги в скрипт: останов веб-сервера, перепубликация через webinst, запуск, проверка кода ответа.

После обновления платформы на сервере
Выполнено: 0 / 6

Для мониторинга хватит простой проверки: раз в минуту запрашивать страницу входа и оповещать, если код ответа не 200. Дополнительно следите за сроком действия сертификата и свободным местом на диске с журналами веб-сервера.

Копию файла default.vrd и конфигурации веб-сервера храните вместе с резервными копиями: восстановить публикацию по ним быстрее, чем собирать заново.

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

Можно ли обойтись без веб-сервера, если нужен доступ к базе из другого города?
Для тонкого клиента по обычному протоколу достаточно открыть доступ к серверу 1С, но это небезопасно без VPN. Веб-сервер с HTTPS удобнее и безопаснее для внешнего доступа.
Nginx заменит Apache или IIS?
Нет. Модуля 1С для Nginx не существует, поэтому он работает только как прокси перед Apache или IIS.
Нужен ли отдельный сервер под веб-сервер?
Не обязательно. В небольших организациях веб-сервер живёт на одной машине с сервером 1С. С ростом числа пользователей его разумнее вынести отдельно.
Сколько баз можно опубликовать на одном веб-сервере?
Ограничений на число публикаций нет, у каждой базы своё имя и свой default.vrd. Предел задают ресурсы машины.
Надо ли заново публиковать базу после обновления конфигурации?
Нет. Перепубликация нужна после смены версии платформы или переезда базы на другой сервер, а обновление конфигурации на неё не влияет.