В практике администрирования систем на платформе 1С:Предприятие часто возникает классическая инфраструктурная дилемма. Имеется производительный сервер, на котором развернуты СУБД, сервер приложений 1С и веб-сервер (IIS или Apache). База успешно опубликована, и пользователи без проблем заходят в нее через веб-клиент со своих рабочих мест. При этом на самом физическом или виртуальном сервере клиентские лицензии не установлены, поскольку они распределяются непосредственно на рабочих станциях пользователей. Это делает невозможным запуск Конфигуратора или толстого клиента локально на сервере.
Когда возникает необходимость внести изменения в конфигурацию, администратор пытается подключиться к Конфигуратору удаленно со своего рабочего компьютера, где лицензия присутствует. Но здесь его ожидает преграда в виде сетевых ошибок подключения к кластеру, особенно если в настройках кластера сервер зарегистрирован под именем localhost. В данной статье мы подробно разберем, как решить эту проблему, восстановить доступ к Конфигуратору и правильно управлять публикацией веб-сервера без локального запуска 1С.
Проанализируем ситуацию по шагам: от диагностики сетевой ошибки до ручного переименования хоста в конфигурационных файлах кластера и настройки публикации.
При попытке добавить базу в список на удаленном компьютере администратор указывает правильный внешний IP-адрес сервера (например, 192.168.1.40) и имя информационной базы. Однако при попытке войти в Конфигуратор система выдает критическую ошибку следующего вида:
Ошибка при выполнении операции с информационной базой server_addr=tcp://fff:1541 descr=192.168.0.40:1541 Попытка соединения была безуспешной...
Обратите внимание на явное несоответствие: мы подключаемся к серверу 192.168.1.40, а в описании ошибки (descr) фигурирует адрес совершенно другой подсети — 192.168.0.40. Давайте разберем механизм работы платформы 1С в клиент-серверном режиме, чтобы понять, почему так происходит:
rphost) и имя рабочего сервера, на котором они запущены. Это имя берется из внутренних настроек самого кластера.localhost или под старым/внутренним IP-адресом (например, со второй сетевой карты сервера 192.168.0.40), менеджер кластера передает именно этот некорректный адрес обратно клиенту.localhost или недоступный IP 192.168.0.40, наш Конфигуратор пытается подключиться напрямую к нему. Естественно, удаленный компьютер под именем localhost пытается найти службу на самом себе (на клиенте) или ломится в чужую подсеть, что приводит к таймауту соединения и ошибке.Для решения этой проблемы нам необходимо направить трафик по верному маршруту и скорректировать настройки кластера.
Если вам требуется срочно войти в Конфигуратор и нет возможности останавливать службу сервера 1С для редактирования конфигурационных файлов, мы можем применить быстрое решение на стороне клиентского компьютера.
Рассмотрим, как обмануть систему маршрутизации операционной системы. Нам нужно принудительно связать имя сервера, которое возвращает кластер, с его реальным, доступным для нас IP-адресом.
C:\Windows\System32\drivers\etc\.hosts.fff):
192.168.1.40 fff
Если менеджер кластера возвращает адрес в виде имени сервера, данная запись перенаправит все запросы к fff на рабочий IP-адрес 192.168.1.40. Сохраните файл и попробуйте снова запустить Конфигуратор.
Часто после исправления адресации возникает следующая проблема — блокировка портов брандмауэром (Firewall). Убедитесь, что на стороне сервера открыты все необходимые порты для полноценного взаимодействия с толстым клиентом Конфигуратора:
rphost). Конфигуратор общается с базой напрямую через один из этих портов, поэтому открытие только портов 1540 и 1541 не решит проблему.Использование localhost в качестве имени сервера в кластере является устаревшей практикой, приводящей к постоянным сетевым сбоям при удаленной работе. Нам необходимо заменить localhost на реальное сетевое имя сервера или его статический IP-адрес. Сделать это без запуска локального Конфигуратора на сервере можно следующими способами.
Если на вашем рабочем компьютере (администратора) установлена утилита «Администрирование серверов 1С:Предприятия», выполните следующие действия:
192.168.1.40), порт оставьте по умолчанию (1540).localhost, откройте его свойства и измените имя на актуальное сетевое имя сервера (например, fff) или его IP-адрес.Если консоль MMC недоступна или не удается подключиться удаленно, мы можем отредактировать файлы конфигурации кластера напрямую. Для этого потребуется подключиться к серверу по протоколу RDP (лицензии 1С для этого не требуются):
services.msc) и остановите службу «Агент сервера 1С:Предприятия 8.3». Важно: во время этой процедуры все пользователи будут отключены от баз данных.C:\Program Files\1cv8\srvinfo\ (или C:\Program Files (x86)\1cv8\srvinfo\ для 32-битной версии).srvinfo найдите файл 1cv8wsrv.lst."localhost" и замените их на реальное имя сервера, например "fff".reg_1541) и найдите там файлы 1CV8Clst.lst и 1CV8Clsto.lst."localhost" на реальное имя сервера "fff".После этих манипуляций кластер начнет корректно отдавать внешним клиентам имя хоста fff, и вы сможете беспрепятственно заходить в Конфигуратор с любого лицензированного компьютера в вашей сети.
После того как мы переименовали рабочий сервер в кластере с localhost на реальное сетевое имя fff, нам необходимо убедиться, что публикация базы на веб-сервере осталась работоспособной.
За публикацию информационной базы отвечает специальный файл конфигурации default.vrd, который находится в каталоге публикации веб-сервера (например, C:\inetpub\wwwroot\MyDatabase\default.vrd для IIS или соответствующей папке для Apache).
Выясним, нужно ли заново публиковать базу через Конфигуратор. Нет, повторная публикация не требуется. Достаточно вручную скорректировать этот файл:
default.vrd в текстовом редакторе. Это обычный XML-документ.
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/MyDatabase"
ib="Srvr="localhost";Ref="MyDatabase";">
Srvr с устаревшего localhost на ваше новое имя сервера fff (или IP-адрес):
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/MyDatabase"
ib="Srvr="fff";Ref="MyDatabase";">
Посмотрим, требуется ли перезапускать веб-сервер после правки файла default.vrd. Платформа 1С считывает параметры из этого файла «на лету» при инициализации новых сессий. Однако веб-серверы часто кэшируют процессы для оптимизации производительности. Чтобы изменения применились мгновенно для всех подключающихся пользователей:
DefaultAppPool), и нажмите кнопку «Перезапустить» (Recycle) в правой панели меню. Это безопаснее и быстрее полного перезапуска веб-сервера.Представим ситуацию: мы успешно зашли в Конфигуратор с удаленного компьютера, добавили новый реквизит в документ или изменили код в общем модуле, после чего обновили конфигурацию базы данных (нажатием клавиши F7). Нужно ли нам совершать дополнительные действия с веб-сервером?
Рассмотрим два сценария работы:
Если изменения затронули только стандартные объекты конфигурации (формы, документы, справочники, модули бизнес-логики), перезапускать веб-сервер не требуется. Платформа самостоятельно отслеживает изменение версии конфигурации.
При следующем действии пользователя в веб-клиенте система выдаст стандартное предупреждение: «Конфигурация базы данных изменилась. Перезапустить сеанс?». После того как пользователь согласится и перезапустит сеанс в браузере, он автоматически начнет работать в новой, обновленной конфигурации.
Если в процессе разработки вы добавили новый Web-сервис, изменили структуру пакетов XDTO, создали новый HTTP-сервис или изменили его шаблон URL-адреса, ситуация меняется. Веб-сервер строит карту маршрутизации внешних запросов на основе структуры сервисов в момент инициализации публикации.
В этом случае вам потребуется:
Если вам требуется опубликовать новую базу или полностью пересоздать существующую публикацию на сервере без использования графического интерфейса Конфигуратора (который мы не можем запустить на сервере из-за отсутствия лицензий), воспользуйтесь стандартной утилитой командной строки webinst.
Эта утилита поставляется вместе с платформой 1С и позволяет гибко управлять публикациями. Рассмотрим пример команды для публикации базы на веб-сервере IIS под управлением 64-разрядной версии Windows:
"C:\Program Files\1cv8\8.3.22.1709\bin\webinst.exe" -iis -wsdir MyDatabase -dir "C:\inetpub\wwwroot\MyDatabase" -conn "Srvr=fff;Ref=MyDatabase;"
Разберем параметры этой команды подробнее:
-iis — указывает утилите, что публикация выполняется на веб-сервер Microsoft IIS (для Apache используется параметр -apache24 с указанием пути к конфигурационному файлу).-wsdir MyDatabase — имя виртуального каталога, по которому база будет доступна в браузере (например, http://server_ip/MyDatabase).-dir "C:\inetpub\wwwroot\MyDatabase" — физический каталог на диске сервера, в котором будет создан файл default.vrd.-conn "Srvr=fff;Ref=MyDatabase;" — строка подключения к серверу 1С и базе данных, которая запишется в файл публикации. В качестве имени сервера мы указываем наше корректное имя fff.Использование утилиты webinst полностью избавляет администратора от необходимости запуска локального Конфигуратора 1С на сервере для выполнения операций публикации.
Мы полностью разобрали проблему удаленного администрирования баз данных 1С, опубликованных на веб-сервере. Своевременный отказ от использования имени localhost в настройках кластера, правильная конфигурация файла hosts на клиентской машине и умение вручную редактировать параметры публикации default.vrd позволяют гибко настраивать и обновлять системы любой сложности без лишних затрат на покупку локальных клиентских лицензий для серверов.