Обновление платформы 1С на веб-сервере IIS и перепубликация баз

· 9 мин

Содержание

Сама IIS не обновляется вместе с 1С, и обратное тоже верно. Обновляется платформа на сервере, а публикация на IIS продолжает ссылаться на файлы старой версии. Поэтому после установки новой платформы базу нужно перепубликовать: расширение веб-сервера wsisapi.dll берётся из каталога bin конкретной версии платформы.

Если менялась только конфигурация (обновление типовой «Бухгалтерии», «ЗУП», «УТ»), публикацию трогать не нужно. Перепубликация требуется в трёх случаях: сменилась версия платформы, изменился список опубликованных веб-сервисов, поменялись параметры в файле default.vrd.

Подготовка: что проверить до обновления платформы

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

  1. Версия платформы. Номер виден в окне «О программе» в 1С и в имени каталога установки, например C:\Program Files\1cv8\8.3.25.1445\bin.
  2. Разрядность. 64-разрядный сервер приложений и 64-разрядный пул — норма для современных серверов. 32-разрядная платформа требует включённого параметра «Разрешить 32-разрядные приложения» в пуле.
  3. Где лежат опубликованные базы. Обычно это подкаталоги C:\inetpub\wwwroot\<имя базы> с файлом default.vrd. Список видно в диспетчере IIS в дереве «Сайты → Default Web Site».
  4. Версия Windows Server. Для платформы 8.3.2x ориентируйтесь на Windows Server 2016 и новее.

Скопируйте каталоги публикаций и файл C:\Windows\System32\inetsrv\config\applicationHost.config в безопасное место. Это пять минут, зато откат будет простым.

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

Компоненты IIS, без которых 1С не заработает

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

  • 🔹 «Расширения ISAPI» и «Фильтры ISAPI»;
  • 🔹 «Статическое содержимое»;
  • 🔹 «Консоль управления IIS»;
  • 🔹 «Windows-проверка подлинности» — только если нужна доменная авторизация без ввода пароля.

Отдельно при установке платформы должен быть отмечен компонент «Модули расширения веб-серверов». Если его не выбрали, файла wsisapi.dll в каталоге bin не будет. Запустите установщик платформы повторно в режиме изменения и добавьте компонент.

Установка новой платформы и регистрация расширения веб-сервера

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

После установки расширение появится в ...\1cv8\<новая версия>\bin\wsisapi.dll. Но IIS об этом файле ничего не знает, пока вы не опубликуете базу заново.

Способ 1. Через Конфигуратор

Подходит для одной-двух баз.

  1. Запустите Конфигуратор новой версии платформы с правами администратора Windows. Это важно: без прав запись в каталог IIS не пройдёт.
  2. Откройте нужную базу и выберите Администрирование → Публикация на веб-сервере.
  3. Укажите имя публикации, выберите веб-сервер Internet Information Services и каталог. Каталог лучше оставить прежним.
  4. Отметьте, что нужно публиковать: тонкий клиент, веб-клиент, стандартный интерфейс OData, веб-сервисы.
  5. Нажмите «Опубликовать».

Конфигуратор перезапишет обработчик в каталоге публикации и пропишет путь к wsisapi.dll новой версии.

Способ 2. Через командную строку

Когда баз много, быстрее утилита webinst из того же каталога bin. Пример для публикации на IIS:

"C:\Program Files\1cv8\8.3.25.1445\bin\webinst.exe" -publish -iis ^
  -wsdir buh ^
  -dir "C:\inetpub\wwwroot\buh" ^
  -connstr "Srvr=srv1c;Ref=buh;" ^
  -confpath "C:\Windows\System32\inetsrv\config\applicationHost.config"

Здесь -wsdir — имя виртуального каталога, -dir — физическая папка, -connstr — строка соединения с базой на сервере. Запускайте консоль от имени администратора.

Старую публикацию можно снять ключом -delete с теми же -wsdir и -confpath. Но обычно достаточно опубликовать поверх: файл default.vrd сохраняется.

💡 Номера версий в примере подставьте свои. Точные ключи для вашего релиза покажет запуск webinst.exe без параметров.

Что сохранить в default.vrd

Файл default.vrd лежит в каталоге публикации и описывает, что именно открыто наружу: тонкий клиент, веб-клиент, веб-сервисы, HTTP-сервисы.

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

Настройка пула приложений: .NET не нужен

Для 1С отдельный пул приложений лучше, чем общий DefaultAppPool: проще перезапускать и отлаживать. Откройте диспетчер IIS, раздел «Пулы приложений».

ПараметрЗначение для 1С
Версия среды .NET CLR«Без управляемого кода»
Режим конвейераВстроенный (Integrated)
32-разрядные приложенияВыключено для 64-разрядной платформы, включено для 32-разрядной
УдостоверениеApplicationPoolIdentity или выделенная учётная запись

Многие по привычке выставляют версию .NET CLR v4.0. Для работы расширения wsisapi.dll она не нужна: это нативная библиотека, управляемый код она не использует. Режим «Без управляемого кода» не мешает и снимает лишнюю нагрузку.

Затем привяжите публикацию к пулу: правый щелчок по приложению → «Управление приложением» → «Дополнительные параметры» → поле «Пул приложений».

Права на каталоги

Учётная запись пула должна иметь доступ:

  • на чтение и выполнение — к каталогу bin новой платформы и к папке публикации;
  • на запись — к временной папке, если веб-сервисы выгружают файлы.

Сразу после смены версии частая причина сбоя — права выданы только на каталог старой платформы. Группа IIS_IUSRS должна быть в списке разрешений новой папки.

Ограничения ISAPI и обработчик: без них 404 и 500

Это самый частый источник проблем после обновления. В диспетчере IIS выберите сервер (верхний уровень дерева), откройте «Ограничения ISAPI и CGI».

  1. Найдите запись для wsisapi.dll старой версии. Её можно удалить, если все базы переведены на новую.
  2. Добавьте путь к wsisapi.dll новой версии и отметьте «Разрешить выполнение пути расширения».

Затем откройте «Сопоставления обработчиков» у вашей публикации. Среди записей найдите обработчик 1С: он указывает на файл wsisapi.dll, и путь должен вести в каталог новой версии платформы. Если там остался старый путь, пользователи получат ошибку или сайт продолжит работать на прежней платформе.

После правок перезапустите пул приложений кнопкой «Перезапустить» в правой панели. Полный iisreset нужен редко: он затронет все сайты на сервере.

Ошибки HTTP 500 и 404 после перепубликации

Сначала откройте страницу в браузере самого сервера по адресу http://localhost/<имя публикации> — так проще отделить сбои IIS от сетевых проблем.

Таблица частых случаев

Что видитеВероятная причинаЧто проверить
404.2Расширение не разрешено«Ограничения ISAPI и CGI»
404.0Нет каталога публикации или default.vrdФизическую папку и файл
500.0Не загрузился модуль, не хватает правПрава на bin, разрядность пула
500.19Повреждён web.configФайл в каталоге публикации
500, но сообщение 1ССервер 1С недоступенСлужбу агента, имя сервера в -connstr
403.xНе хватает прав или отключена анонимная проверкаРаздел «Проверка подлинности»

Как найти точную причину

Включите подробные ошибки: в диспетчере IIS откройте «Страницы ошибок» → «Изменить параметры функции» → «Подробные ошибки». Без этого браузер покажет общую заглушку, а в подробной странице есть код вида 0x8007007e и имя модуля.

Код 0x8007007e («не найден указанный модуль») почти всегда означает разрядность: пул 32-разрядный, а платформа 64-разрядная, или наоборот. Включите или выключите параметр «Разрешить 32-разрядные приложения» и перезапустите пул.

Дополнительно загляните в журнал событий Windows, раздел «Приложение», и в журнал C:\inetpub\logs\LogFiles.

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

Расширения файлов и MIME-типы

В 1С нет собственных типов файлов, которые IIS должна отдавать клиенту как статику. Но в двух ситуациях настройка MIME всё же понадобится.

  • Вы публикуете рядом со страницей 1С собственные статические файлы (инструкции, дистрибутивы, .cf, .cfu, .dt) и IIS отвечает 404.3 («тип MIME не настроен»). Добавьте тип в разделе «Типы MIME» сайта: расширение и значение application/octet-stream.
  • Вы раздаёте обновления конфигураций с собственного сервера. Здесь так же нужна запись для .cfu.

Следите за размером: IIS по умолчанию ограничивает загрузку на сервер примерно 30 МБ, а при обмене большими файлами через веб-сервисы упирается в этот лимит. Лимит меняется в разделе «Фильтрация запросов» → «Изменить параметры функции» → «Максимально допустимый размер содержимого (в байтах)».

Не добавляйте MIME-типы для исполняемых расширений и не открывайте анонимный доступ к каталогам с выгрузками базы.

Проверка после обновления

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

Что проверить после перепубликации
Выполнено: 0 / 6

Как убедиться, что работает именно новая платформа

Откройте базу в веб-клиенте и вызовите «О программе»: версия платформы должна совпасть с установленной. Если показана старая, обработчик всё ещё ссылается на прежний wsisapi.dll. Проверьте сопоставления обработчиков и перезапустите пул.

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

Откат, если не получилось

Верните прежнюю публикацию: перепубликуйте базу из Конфигуратора старой версии платформы. Она ещё установлена рядом, поэтому каталог bin на месте. Затем верните из копии applicationHost.config, если вручную правили ограничения ISAPI, и перезапустите пул.

Порядок работ одним списком

Для сервера, где опубликовано несколько баз, рабочая последовательность такая:

  1. Предупредить пользователей и выбрать окно с минимальной нагрузкой.
  2. Скопировать каталоги публикаций и applicationHost.config.
  3. Установить новую платформу рядом со старой, включив модули расширения веб-серверов.
  4. Перепубликовать базы утилитой webinst или из Конфигуратора новой версии.
  5. Разрешить новый wsisapi.dll в ограничениях ISAPI и CGI.
  6. Проверить пул: разрядность, режим «Без управляемого кода», права на каталоги.
  7. Перезапустить пул и открыть каждую базу, сверив версию в «О программе».
  8. Через несколько дней, когда всё стабильно, удалить старую платформу и старую запись ISAPI.

Так вы меняете один параметр за раз, и при сбое понятно, какой шаг его вызвал.

Как не получить сюрприз при следующем обновлении

  • 🔹 Один пул приложений на группу баз, а не DefaultAppPool для всего подряд.
  • 🔹 Скрипт перепубликации на webinst: сохраните команды для каждой базы в .bat, и следующее обновление займёт минуты.
  • 🔹 Старые версии платформы удаляйте только после проверки, что ни один обработчик на них не ссылается.
  • 🔹 Тестовую публикацию делайте раньше боевой: та же база-копия, другое имя виртуального каталога.

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

Нужно ли перепубликовать базу после обновления типовой конфигурации?
Нет. Публикация зависит от версии платформы и файла default.vrd, а не от версии конфигурации. Исключение: добавились веб-сервисы, которые нужно открыть наружу.
Можно ли держать две версии платформы на одном сервере IIS?
Да. Каждая база публикуется со своим обработчиком, указывающим на wsisapi.dll нужной версии. Две платформы рядом ставятся в разные каталоги и не мешают друг другу.
Почему после обновления платформы пользователи видят предложение обновить клиент?
Тонкий клиент сверяет свою версию с сервером. Если сервер обновлён, а на рабочем месте старый клиент, он предложит скачать новый. Для установки нужны права на компьютере пользователя.
Нужен ли перезапуск службы агента сервера 1С при обновлении IIS?
Нет. Служба агента и IIS работают независимо. Перезапускать агент нужно при обновлении самого сервера 1С:Предприятия, и это оборвёт сеансы всех пользователей.
Подходит ли Apache вместо IIS?
Да, платформа поддерживает и Apache. Принцип тот же: публикация создаётся заново из Конфигуратора или через webinst с ключом -apache24 вместо -iis. Проверьте ключ в справке своей версии.