Публикация 1С не открывается: диагностика IIS, Apache и связи с кластером
Содержание
Чтобы проверить публикацию базы 1С на веб-сервере, откройте в браузере адрес http://<сервер>/<имя_публикации>/ru_RU/. Если появилось окно входа или рабочий стол 1С, публикация работает. Если вместо этого пришла ошибка HTTP, по её коду сразу понятно, где искать: 404 — не настроен обработчик или неверный алиас, 403 — права, 500 — модуль расширения веб-сервера или связь с кластером.
Дальше проверка идёт по цепочке: веб-сервер → модуль 1С → файл default.vrd → база (файловая или в кластере). Сбой почти всегда сидит в одном звене. Проходите их по порядку, и причина найдётся за 10–15 минут.
Первая проверка публикации в браузере и тонком клиенте
Начните с самого простого: убедитесь, что веб-сервер вообще отвечает. Откройте http://<сервер>/ — должна появиться стартовая страница IIS или Apache. Нет ответа — проблема ещё до 1С: служба остановлена, порт закрыт брандмауэром, неверное имя сервера.
Затем откройте саму публикацию:
http://<сервер>/<имя_публикации>/— должен открыться веб-клиент или перенаправление на него.http://<сервер>/<имя_публикации>/ru_RU/— то же с явным выбором языка интерфейса.- Если публиковали OData —
http://<сервер>/<имя_публикации>/odata/standard.odata/. Ответ с запросом логина и пароля или XML-список объектов означает, что интерфейс включён. - Для 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="srv1c";Ref="base";">
</point>
Что проверить:
- 🔹
baseсовпадает с именем виртуального каталога; - 🔹 для серверной базы
Srvr— имя сервера 1С (при нестандартном порту агента —srv1c:2541),Ref— имя базы в кластере, а не её представление в списке; - 🔹 для файловой —
File="D:\Bases\Buh";, путь к каталогу, где лежит1Cv8.1CD; - 🔹 кавычки внутри атрибута записаны как
", файл сохранён в UTF-8.
IIS
В диспетчере IIS откройте сайт и приложение публикации:
Сопоставления обработчиков— должен быть обработчик на*с модулемIsapiModuleи исполняемым файломwsisapi.dllиз каталогаbinнужной версии платформы.Ограничения ISAPI и CGIна уровне сервера —wsisapi.dllдолжна быть разрешена.- Пул приложений: разрядность. Разрядность модуля и пула должна совпадать. Если путь ведёт в
C:\Program Files (x86)\1cv8\..., в дополнительных параметрах пула должно стоятьРазрешены 32-разрядные приложения = True. Для 64-битного модуля —False. - Каталог публикации должен быть приложением или виртуальным каталогом, а не просто папкой.
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.vrd | IIS: 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-сервисы или задавали параметры, сохраните копию файла заранее.
Частые вопросы
Нужна ли отдельная лицензия для веб-клиента?
Можно ли опубликовать одну базу под двумя именами?
default.vrd, в которых указана одна и та же база. Так часто разделяют веб-клиент для пользователей и OData для внешней системы.Почему публикация работает по http, но не по https?
Где посмотреть, какие базы уже опубликованы на сервере?
ManagedApplicationDescriptor в httpd.conf и подключаемых файлах. Каждая указывает на свой default.vrd.