Публикация 1С не открывается: диагностика IIS, Apache и связи с кластером

· 9 мин

Содержание

Чтобы проверить публикацию базы 1С на веб-сервере, откройте в браузере адрес http://<сервер>/<имя_публикации>/ru_RU/. Если появилось окно входа или рабочий стол 1С, публикация работает. Если вместо этого пришла ошибка HTTP, по её коду сразу понятно, где искать: 404 — не настроен обработчик или неверный алиас, 403 — права, 500 — модуль расширения веб-сервера или связь с кластером.

Дальше проверка идёт по цепочке: веб-сервер → модуль 1С → файл default.vrd → база (файловая или в кластере). Сбой почти всегда сидит в одном звене. Проходите их по порядку, и причина найдётся за 10–15 минут.

Первая проверка публикации в браузере и тонком клиенте

Начните с самого простого: убедитесь, что веб-сервер вообще отвечает. Откройте http://<сервер>/ — должна появиться стартовая страница IIS или Apache. Нет ответа — проблема ещё до 1С: служба остановлена, порт закрыт брандмауэром, неверное имя сервера.

Затем откройте саму публикацию:

  1. http://<сервер>/<имя_публикации>/ — должен открыться веб-клиент или перенаправление на него.
  2. http://<сервер>/<имя_публикации>/ru_RU/ — то же с явным выбором языка интерфейса.
  3. Если публиковали OData — http://<сервер>/<имя_публикации>/odata/standard.odata/. Ответ с запросом логина и пароля или XML-список объектов означает, что интерфейс включён.
  4. Для HTTP-сервисов — http://<сервер>/<имя_публикации>/hs/<корневой_URL_сервиса>/..., для веб-сервисов — http://<сервер>/<имя_публикации>/ws/<имя>?wsdl.

Имя публикации чувствительно к регистру на Apache под Linux. Base и base там — разные адреса.

Проверка через тонкий клиент

Браузер проверяет только веб-клиент. Тонкий клиент через HTTP идёт тем же путём, но ведёт себя чуть иначе. Добавьте базу в список: Добавить → Добавление в список существующей информационной базы → На веб-сервере и укажите адрес публикации. Либо запустите из командной строки:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /WS"http://srv-web/base"

Открывается в браузере, но не в тонком клиенте? Сравните версию тонкого клиента и платформы на сервере. Тонкий клиент другой версии предложит скачать нужную, а если на веб-сервере это запрещено, подключение оборвётся.

Настройки веб-сервера: IIS и Apache

Публикация — это три вещи: модуль расширения 1С, подключённый к веб-серверу, виртуальный каталог (алиас) и файл default.vrd в каталоге публикации. Проверяйте все три.

Файл default.vrd

Лежит в каталоге публикации, например C:\inetpub\wwwroot\base\default.vrd. Главное в нём — атрибут ib со строкой соединения с базой:

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

Что проверить:

  • 🔹 base совпадает с именем виртуального каталога;
  • 🔹 для серверной базы Srvr — имя сервера 1С (при нестандартном порту агента — srv1c:2541), Ref — имя базы в кластере, а не её представление в списке;
  • 🔹 для файловой — File=&quot;D:\Bases\Buh&quot;;, путь к каталогу, где лежит 1Cv8.1CD;
  • 🔹 кавычки внутри атрибута записаны как &quot;, файл сохранён в UTF-8.

IIS

В диспетчере IIS откройте сайт и приложение публикации:

  1. Сопоставления обработчиков — должен быть обработчик на * с модулем IsapiModule и исполняемым файлом wsisapi.dll из каталога bin нужной версии платформы.
  2. Ограничения ISAPI и CGI на уровне сервера — wsisapi.dll должна быть разрешена.
  3. Пул приложений: разрядность. Разрядность модуля и пула должна совпадать. Если путь ведёт в C:\Program Files (x86)\1cv8\..., в дополнительных параметрах пула должно стоять Разрешены 32-разрядные приложения = True. Для 64-битного модуля — False.
  4. Каталог публикации должен быть приложением или виртуальным каталогом, а не просто папкой.

Apache

Для Apache 2.4 в httpd.conf (или в отдельном подключаемом файле) должны быть строки вида:

LoadModule _1cws_module "C:/Program Files/1cv8/8.3.24.1342/bin/wsap24.dll"

Alias "/base" "C:/inetpub/wwwroot/base/"
<Directory "C:/inetpub/wwwroot/base/">
    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/inetpub/wwwroot/base/default.vrd"
</Directory>

Под Linux модуль называется wsap24.so и лежит в каталоге платформы, обычно /opt/1cv8/x86_64/<версия>/. Модуль подключается один раз на весь сервер. Две строки LoadModule с разными версиями платформы — частая причина того, что Apache не стартует.

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

Права на каталоги публикации и файлы базы

Веб-сервер работает от служебной учётной записи, и именно ей нужны права.

ЧтоКому дать праваКакие
Каталог публикации с default.vrdIIS: IIS_IUSRS и IUSR; Apache: пользователь службыЧтение
Каталог bin платформыТа же учётная записьЧтение и выполнение
Каталог файловой базыУчётная запись пула IIS или службы ApacheИзменение (чтение и запись)
Каталог временных файлов учётной записиТа же учётная записьИзменение

Для файловой базы права на запись обязательны: при подключении создаются служебные файлы блокировки. Если база лежит на другом компьютере в сетевой папке, локальная учётная запись вроде IUSR туда не пройдёт. Запустите пул IIS или службу Apache от доменной учётной записи и дайте права ей.

Для серверной базы права на её файлы не нужны: веб-сервер подключается к кластеру как обычный клиент. Нужны только права на каталоги публикации и платформы.

На Linux проверьте владельца и права командой ls -l на каталог публикации и default.vrd. Пользователь Apache (обычно www-data или apache) должен их читать.

Связь веб-сервера с кластером серверов 1С

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

Версия платформы. На веб-сервере должна стоять платформа той же версии, что и на сервере 1С, вплоть до последней цифры. Модуль wsisapi.dll или wsap24.dll берите из каталога bin именно этой версии. После обновления сервера 1С публикацию нужно перенастроить на новую версию — иначе получите ошибку несоответствия версий клиента и сервера.

Сеть. С веб-сервера должны быть доступны:

  • 🔌 порт агента сервера, по умолчанию 1540;
  • 🔌 порт менеджера кластера, по умолчанию 1541;
  • 🔌 диапазон портов рабочих процессов, по умолчанию 1560–1591 (задаётся в свойствах рабочего сервера).

Проверить открытые порты с Windows-машины можно PowerShell:

Test-NetConnection srv1c -Port 1540
Test-NetConnection srv1c -Port 1541
Test-NetConnection srv1c -Port 1560

Имя сервера. Имя из Srvr должно разрешаться в адрес с веб-сервера. Проверьте ping srv1c. Кластер возвращает клиенту имена рабочих серверов так, как они записаны в его настройках. Если там короткое имя, а DNS его не знает, подключение к агенту пройдёт, а к рабочему процессу — нет. Помогает запись в hosts на веб-сервере.

Имя базы. Значение Ref должно совпадать с именем базы в кластере. Сверьте его в консоли кластера или командой rac (см. ниже).

Если в настройках базы в кластере стоит запрет на начало сеансов, публикация откроется, но вход не пройдёт. Это не сбой публикации, это блокировка базы. Сообщение об ошибке подскажет.

Журналы и логи: где искать причину

Код ответа говорит, в каком звене поломка. Журналы говорят — почему.

  • 📄 IIS — журналы запросов в C:\inetpub\logs\LogFiles\W3SVC<номер_сайта>\. В каждой строке есть код ответа и подкод: 500 0, 404 3, 403 14. Подкод сильно сужает поиск.
  • 📄 Подробные ошибки IIS — откройте публикацию в браузере прямо на сервере. Локально IIS показывает развёрнутую страницу ошибки с модулем, обработчиком и кодом. Удалённым клиентам по умолчанию уходит только краткая.
  • 📄 Apache — error.log в каталоге logs установки Apache, на Linux обычно /var/log/apache2/error.log или /var/log/httpd/error_log.
  • 📄 Журнал Windows — Просмотр событий → Журналы Windows → Приложение. Туда попадают сбои пула приложений и падения процесса w3wp.exe или httpd.exe.
  • 📄 Технологический журнал 1С — включается файлом logcfg.xml на веб-сервере. Он фиксирует исключения модуля расширения и ошибки соединения с кластером. Включайте временно: журнал быстро растёт.

Если веб-клиент показал окно с текстом ошибки 1С, а не код HTTP, значит, веб-сервер и модуль отработали. Проблема глубже — в подключении к базе, лицензии или правах пользователя 1С.

Проверка публикации из командной строки

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

curl — посмотреть код ответа без браузера:

curl -I http://srv-web/base/ru_RU/
curl -I -u "Администратор:" http://srv-web/base/odata/standard.odata/

Код 200 или 401 (запрос авторизации) — публикация жива. 404, 403, 500 — разбирайтесь по таблице ниже. В Windows 10 и Windows Server 2019 и новее curl уже встроен.

Проверка конфигурации Apache — перед перезапуском:

httpd -t
httpd -M

Первая команда проверяет синтаксис конфигурации, вторая выводит загруженные модули. В списке должен быть _1cws_module. На Linux используйте apachectl -t и apachectl -M.

webinst — утилита публикации из каталога bin платформы. Ею удобно переопубликовать базу одной командой, не трогая конфигурацию руками:

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

Для IIS вместо -apache24 и -confpath укажите -iis. Запускайте утилиту от администратора.

rac — сверить кластер и имя базы. Нужен запущенный сервер администрирования ras:

rac cluster list
rac infobase summary list --cluster=<uuid_кластера>

В выводе второй команды поле name — то самое значение для Ref в default.vrd. Остальные параметры смотрите в rac help.

Типичные ошибки публикации и что с ними делать

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

Переопубликация через конфигуратор или webinst перезаписывает default.vrd. Если вы вручную включали в нём OData, HTTP-сервисы или задавали параметры, сохраните копию файла заранее.

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

Нужна ли отдельная лицензия для веб-клиента?
Отдельной лицензии на веб-сервер нет. Каждый сеанс веб-клиента или тонкого клиента через HTTP занимает обычную клиентскую лицензию, как и подключение в локальной сети.
Можно ли опубликовать одну базу под двумя именами?
Да. Создайте два каталога публикации с разными алиасами и своими default.vrd, в которых указана одна и та же база. Так часто разделяют веб-клиент для пользователей и OData для внешней системы.
Почему публикация работает по http, но не по https?
Модуль 1С тут ни при чём: сертификат и привязку порта 443 настраивают на сайте IIS или в конфигурации Apache. Проверьте привязку сайта и срок действия сертификата.
Где посмотреть, какие базы уже опубликованы на сервере?
В IIS — список приложений сайта в диспетчере. В Apache — строки ManagedApplicationDescriptor в httpd.conf и подключаемых файлах. Каждая указывает на свой default.vrd.
Обязательно ли ставить на веб-сервер весь сервер 1С?
Нет. Достаточно установить компонент модулей расширения веб-сервера той же версии платформы. Сам сервер 1С на этой машине не нужен.