При организации веб-доступа к информационным базам 1С:Предприятия через веб-серверы Apache или IIS системные администраторы нередко сталкиваются с ситуацией, когда при переходе по ссылке или попытке входа через тонкий клиент открывается только окно заставки программы с анимацией точек. При этом форма авторизации с выбором пользователя и вводом пароля не появляется, ошибок в браузере не возникает, а сам процесс бесконечно висит без нагрузки на процессор и оперативную память. При этом при прямом запуске через толстый или тонкий клиент по протоколу TCP база работает в штатном режиме.
Разберем детально, почему возникает такое зависание, как правильно локализовать сбой и какие шаги необходимо предпринять для восстановления стабильной работы веб-публикации.
Проанализируем конфигурацию веб-сервера Apache. Одной из самых распространенных причин зависания является несовпадение разрядности установленного веб-сервера и подключаемого модуля 1С, либо указание неверного пути к библиотеке wsap24.dll (для Apache 2.4) или wsisapi.dll (для IIS).
Если на сервере установлена как 32-разрядная (x86), так и 64-разрядная (x64) платформа 1С, стандартный мастер публикации из графического конфигуратора может автоматически прописать в конфигурационный файл путь к 32-битной библиотеке из каталога Program Files (x86), тогда как сам веб-сервер запущен в 64-битном режиме.
Проверим и приведем файл httpd.conf к корректному виду, убедившись, что разрядности совпадают:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.8.2322/bin/wsap24.dll"
# 1c publication
Alias "/Main" "C:/Apache/htdocs/main/"
<Directory "C:/Apache/htdocs/main/">
AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor "C:/Apache/htdocs/main/default.vrd"
</Directory>
Чтобы исключить влияние графического конфигуратора, выполним публикацию через консольную утилиту webinst.exe нужной разрядности:
"C:\Program Files\1cv8\8.3.8.2322\bin\webinst.exe" -apache24 -wsdir Main -dir "C:\Apache\htdocs\main" -connstr "Srvr=localhost;Ref=Main;" -confpath "C:\Apache24\conf\httpd.conf"
Выясним причину долгого зависания на этапе инициализации. Когда модуль веб-расширения обрабатывает входящее подключение, он пытается получить клиентскую лицензию. Если на сервере не настроена прямая выдача лицензий или веб-сервер не может найти локальный ключ, система начинает сканировать локальную сеть широковещательными пакетами (Broadcast), ожидая ответа по таймауту. В этот момент пользователь наблюдает статичную заставку запуска.
Для устранения задержек поиска лицензий выполним следующие действия:
nethasp.ini, расположенный в каталоге conf платформы 1С, явно указав IP-адрес сервера лицензирования и отключив широковещательный поиск:
[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_USE_BROADCAST = Disabled
Рассмотрим структуру файла дескриптора публикации default.vrd. Зависание на заставке часто происходит из-за сетевых задержек при трансляции доменного имени сервера кластера в IP-адрес через протокол IPv6 или некорректно настроенный DNS.
Откроем файл 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="/Main"
ib="Srvr=127.0.0.1;Ref=Main;" />
Заменим сетевое имя сервера на локальный IP-адрес (например, 127.0.0.1, если веб-сервер и сервер 1С находятся на одной машине), либо добавим жесткую связку имени и IP-адреса в системный файл hosts операционной системы.
Проанализируем права учетной записи, от имени которой стартует служба веб-сервера (в Apache это обычно Local System, а в IIS — ApplicationPoolIdentity или Network Service). В процессе инициализации сеанса веб-расширение 1С обращается к системным временным каталогам профиля.
Разберем по шагам предоставление необходимых прав:
C:\Windows\System32\config\systemprofile\AppData\Local\Temp.C:\Program Files\1cv8\.Temp, а также кэш браузера перед повторным запуском.Веб-сервер при обработке запроса устанавливает TCP-соединения с процессами кластера 1С — ragent.exe, rmngr.exe и рабочими процессами rphost.exe (стандартный диапазон портов 1540, 1541, 1560–1591). Локальные экраны безопасности и антивирусное ПО могут блокировать внутренний трафик между службой веб-сервера (httpd.exe или w3wp.exe) и сервером 1С без вывода явных критических ошибок в журналы.
Добавим исполняемые файлы веб-сервера и платформы 1С в список исключений брандмауэра и антивируса, чтобы обеспечить беспрепятственный обмен данными по локальным сетевым сокетам.
Для быстрой проверки правильности настройки веб-канала подключимся к опубликованной базе с помощью тонкого клиента 1С:
http://localhost/Main.