Как публиковать разные базы 1С на IIS и обновлять их без остановки сервера?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто возникает ситуация, когда на одном веб-сервере IIS опубликовано несколько баз 1С. При этом некоторые из них требуют круглосуточного доступа (режим 24/7), а другие необходимо регулярно обновлять (например, по выходным или ночью). Проблема в том, что при стандартном подходе для обновления базы приходится останавливать весь сервер IIS, что приводит к отключению пользователей от круглосуточной базы. Разберем по шагам, как грамотно организовать архитектуру публикаций, чтобы базы работали независимо, и выясним причину появления ошибки веб-клиента «Неправильный запрос».

Решение проблемы «Неправильный запрос» в 1С

Если вы попытались разнести базы по разным сайтам в IIS (создали сайт, отличный от Default Web Site), то при определенных действиях пользователей (например, при проведении документов) в браузере может появляться ошибка с текстом «Неправильный запрос».

Проанализируем причину. Под капотом это стандартная ошибка протокола HTTP — 400 Bad Request. Техническая суть кроется в том, что когда внутри 1С на сервере происходит штатное исключение (например, не заполнено обязательное поле), веб-сервер IIS по умолчанию перехватывает этот ответ 1С и пытается подставить вместо него свою стандартную HTML-страницу с ошибкой. Тонкий или веб-клиент 1С не умеет читать такие HTML-ответы, поэтому просто выводит заглушку «Неправильный запрос».

Посмотрим, как исправить эту проблему со стороны настроек IIS:

  1. Откройте консоль «Диспетчер служб IIS» на вашем сервере.
  2. В дереве подключений слева выберите ваш отдельный сайт (например, созданный вами сайт RMK) или кликните на весь сервер целиком.
  3. В центральной рабочей области найдите раздел «Страницы ошибок» (Error Pages) и откройте его двойным кликом.
  4. В панели «Действия» справа нажмите на пункт «Изменить параметры...» (Edit Feature Settings).
  5. В появившемся диалоговом окне переключите радиокнопку на значение «Подробные сообщения об ошибках» (Detailed errors). По умолчанию там обычно выбрана отправка настраиваемых страниц.
  6. Нажмите ОК и перезапустите сайт или службу IIS.

После этих настроек IIS перестанет подменять ответы веб-расширения 1С, и платформа начнет корректно отображать пользователям понятные диалоговые окна с текстами исключений.

Правильная архитектура: Пулы приложений вместо отдельных сайтов

Создание отдельного сайта для каждой базы — это рабочий, но не самый оптимальный метод. Рассмотрим более правильный и гибкий подход. Архитектура IIS позволяет использовать Пулы приложений (Application Pools). Именно они предназначены для изоляции процессов.

Разберем подробнее, как это работает:

  1. Для каждой базы 1С (или для группы баз, которые вы планируете обновлять одновременно) создайте свой собственный пул приложений в соответствующем разделе диспетчера IIS.
  2. При настройке публикации базы (или конвертации папки в приложение) привяжите ее к созданному пулу.
  3. Благодаря этому процессы баз изолируются друг от друга на уровне операционной системы. Каждая база будет обслуживаться своим собственным рабочим процессом w3wp.exe.
  4. Когда наступает время ночного обновления, вы не трогаете службу IIS целиком и не останавливаете сайты. Вы просто останавливаете (а затем запускаете) только пул приложений обновляемой базы.

В результате база, которая работает 24/7 и привязана к другому пулу приложений, продолжит свое функционирование без малейших обрывов связи.

Важные нюансы настройки пулов и прав доступа

Если вы разносите публикации по нестандартным пулам и сайтам, проанализируем частые подводные камни, связанные с правами и разрядностью платформы.

Права на папку публикации:
Убедитесь, что у системной группы IIS_USERS (или у пользователя IUSR) есть полные права (Чтение, Выполнение, Запись, Изменение) на физический каталог, где лежит публикация вашей базы. В этом каталоге находятся файлы default.vrd и web.config. Недостаток прав приведет к невозможности запуска веб-клиента.

Разрядность платформы (32/64 bit):
Если вы используете 32-разрядную версию платформы 1С:Предприятие на 64-разрядной операционной системе Windows Server, вам потребуется дополнительная настройка пула:

  1. Откройте Диспетчер IIS и перейдите в раздел «Пулы приложений».
  2. Выделите ваш новый пул и справа выберите «Дополнительные параметры...» (Advanced Settings).
  3. В разделе «Общие» найдите параметр «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) и установите его в значение True.

Если пропустить этот шаг для 32-битной 1С, база выдаст критическую ошибку HTTP 500 (Internal Server Error) при попытке входа.

Альтернативные подходы к обновлению баз 24/7

Посмотрим на другие варианты решения задачи, если возможности IIS вас не устраивают:

  1. Завершение сеансов через кластер 1С: Вы можете вообще не трогать веб-сервер (IIS или Apache). Оставьте его работать. Вместо этого перед обновлением скриптом завершайте активные сеансы конкретной информационной базы непосредственно через средства администрирования кластера серверов 1С (утилита RAC) и устанавливайте блокировку начала новых сеансов.
  2. Проксирование и РИБ: Для систем с критически высокой доступностью (High Availability) можно использовать распределенную информационную базу (РИБ) на двух разных серверах и балансировщик (например, Nginx). При обновлении трафик переключается на резервную ноду, обновляется первая, затем трафик возвращается, обновляется вторая.
← На главную