Обновление платформы 1С на веб-сервере IIS и перепубликация баз
Содержание
Сама IIS не обновляется вместе с 1С, и обратное тоже верно. Обновляется платформа на сервере, а публикация на IIS продолжает ссылаться на файлы старой версии. Поэтому после установки новой платформы базу нужно перепубликовать: расширение веб-сервера wsisapi.dll берётся из каталога bin конкретной версии платформы.
Если менялась только конфигурация (обновление типовой «Бухгалтерии», «ЗУП», «УТ»), публикацию трогать не нужно. Перепубликация требуется в трёх случаях: сменилась версия платформы, изменился список опубликованных веб-сервисов, поменялись параметры в файле default.vrd.
Подготовка: что проверить до обновления платформы
Сначала выясните, что именно у вас стоит. От этого зависит, какую платформу и какие настройки пула выбирать.
- Версия платформы. Номер виден в окне «О программе» в 1С и в имени каталога установки, например
C:\Program Files\1cv8\8.3.25.1445\bin. - Разрядность. 64-разрядный сервер приложений и 64-разрядный пул — норма для современных серверов. 32-разрядная платформа требует включённого параметра «Разрешить 32-разрядные приложения» в пуле.
- Где лежат опубликованные базы. Обычно это подкаталоги
C:\inetpub\wwwroot\<имя базы>с файломdefault.vrd. Список видно в диспетчере IIS в дереве «Сайты → Default Web Site». - Версия 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. Через Конфигуратор
Подходит для одной-двух баз.
- Запустите Конфигуратор новой версии платформы с правами администратора Windows. Это важно: без прав запись в каталог IIS не пройдёт.
- Откройте нужную базу и выберите
Администрирование → Публикация на веб-сервере. - Укажите имя публикации, выберите веб-сервер Internet Information Services и каталог. Каталог лучше оставить прежним.
- Отметьте, что нужно публиковать: тонкий клиент, веб-клиент, стандартный интерфейс OData, веб-сервисы.
- Нажмите «Опубликовать».
Конфигуратор перезапишет обработчик в каталоге публикации и пропишет путь к 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».
- Найдите запись для
wsisapi.dllстарой версии. Её можно удалить, если все базы переведены на новую. - Добавьте путь к
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.
wsisapi.dll новой версии не разрешено. Добавьте его путь в «Ограничения ISAPI и CGI» на уровне сервера и перезапустите пул.Расширения файлов и MIME-типы
В 1С нет собственных типов файлов, которые IIS должна отдавать клиенту как статику. Но в двух ситуациях настройка MIME всё же понадобится.
- Вы публикуете рядом со страницей 1С собственные статические файлы (инструкции, дистрибутивы,
.cf,.cfu,.dt) и IIS отвечает 404.3 («тип MIME не настроен»). Добавьте тип в разделе «Типы MIME» сайта: расширение и значениеapplication/octet-stream. - Вы раздаёте обновления конфигураций с собственного сервера. Здесь так же нужна запись для
.cfu.
Следите за размером: IIS по умолчанию ограничивает загрузку на сервер примерно 30 МБ, а при обмене большими файлами через веб-сервисы упирается в этот лимит. Лимит меняется в разделе «Фильтрация запросов» → «Изменить параметры функции» → «Максимально допустимый размер содержимого (в байтах)».
Не добавляйте MIME-типы для исполняемых расширений и не открывайте анонимный доступ к каталогам с выгрузками базы.
Проверка после обновления
Пройдите по короткому списку на самом сервере и с рабочего места пользователя.
Как убедиться, что работает именно новая платформа
Откройте базу в веб-клиенте и вызовите «О программе»: версия платформы должна совпасть с установленной. Если показана старая, обработчик всё ещё ссылается на прежний wsisapi.dll. Проверьте сопоставления обработчиков и перезапустите пул.
Для тонкого клиента: в списке баз откройте свойства подключения по HTTP-адресу и убедитесь, что клиент той же версии, что и сервер приложений. Тонкий клиент автоматически подтянет нужную версию с сервера, если разрешена установка, но на компьютерах без прав администратора этого не произойдёт.
Откат, если не получилось
Верните прежнюю публикацию: перепубликуйте базу из Конфигуратора старой версии платформы. Она ещё установлена рядом, поэтому каталог bin на месте. Затем верните из копии applicationHost.config, если вручную правили ограничения ISAPI, и перезапустите пул.
Порядок работ одним списком
Для сервера, где опубликовано несколько баз, рабочая последовательность такая:
- Предупредить пользователей и выбрать окно с минимальной нагрузкой.
- Скопировать каталоги публикаций и
applicationHost.config. - Установить новую платформу рядом со старой, включив модули расширения веб-серверов.
- Перепубликовать базы утилитой
webinstили из Конфигуратора новой версии. - Разрешить новый
wsisapi.dllв ограничениях ISAPI и CGI. - Проверить пул: разрядность, режим «Без управляемого кода», права на каталоги.
- Перезапустить пул и открыть каждую базу, сверив версию в «О программе».
- Через несколько дней, когда всё стабильно, удалить старую платформу и старую запись ISAPI.
Так вы меняете один параметр за раз, и при сбое понятно, какой шаг его вызвал.
Как не получить сюрприз при следующем обновлении
- 🔹 Один пул приложений на группу баз, а не
DefaultAppPoolдля всего подряд. - 🔹 Скрипт перепубликации на
webinst: сохраните команды для каждой базы в.bat, и следующее обновление займёт минуты. - 🔹 Старые версии платформы удаляйте только после проверки, что ни один обработчик на них не ссылается.
- 🔹 Тестовую публикацию делайте раньше боевой: та же база-копия, другое имя виртуального каталога.
Частые вопросы
Нужно ли перепубликовать базу после обновления типовой конфигурации?
default.vrd, а не от версии конфигурации. Исключение: добавились веб-сервисы, которые нужно открыть наружу.Можно ли держать две версии платформы на одном сервере IIS?
wsisapi.dll нужной версии. Две платформы рядом ставятся в разные каталоги и не мешают друг другу.Почему после обновления платформы пользователи видят предложение обновить клиент?
Нужен ли перезапуск службы агента сервера 1С при обновлении IIS?
Подходит ли Apache вместо IIS?
webinst с ключом -apache24 вместо -iis. Проверьте ключ в справке своей версии.