Новая версия платформы на веб-сервере 1С: что поменять в IIS и Apache

· 9 мин

Содержание

Обновить веб-сервер 1С — значит поставить на него «Модули расширения веб-сервера» той же версии платформы, что и на сервере 1С, и переключить на них каждую публикацию. В IIS это делается переопубликацией из Конфигуратора новой версии или правкой пути к wsisapi.dll в web.config. В Apache — правкой строки LoadModule с путём к wsap24.so (wsap24.dll на Windows) и перезапуском службы.

Какой способ выбрать, зависит от числа публикаций. Одну-две базы проще переопубликовать мастером. Десяток и больше быстрее перевести заменой номера версии в конфигах одной командой: так не сбросятся тонкие настройки публикаций в default.vrd. Сам веб-сервер (IIS или Apache) при этом обновлять не нужно — меняется только компонент 1С.

Что проверить до обновления веб-сервера 1С

Главное правило: версия модулей на веб-сервере должна совпадать с версией кластера серверов 1С до четвёртой цифры. Платформа 8.3.25.1257 на сервере и модули 8.3.24.1548 на веб-сервере — это ошибка соединения у всех пользователей. Поэтому сначала обновляют кластер, затем веб-сервер, и делают это в одно окно работ.

Узнайте текущие версии

  • 🖥️ На Windows установленные версии лежат в C:\Program Files\1cv8\ — каждая в своей папке вида 8.3.25.1257.
  • 🐧 На Linux — в /opt/1cv8/x86_64/. Посмотреть список: ls /opt/1cv8/x86_64/.
  • 🔗 Версию кластера видно в консоли администрирования серверов в свойствах рабочего сервера или по выводу rac cluster list — команда выполняется утилитой той же версии, что и агент.

Соберите список публикаций

На IIS все опубликованные приложения выводит PowerShell:

Import-Module WebAdministration
Get-WebApplication | Select-Object path, PhysicalPath, applicationPool

На Apache публикации 1С — это блоки <Location> с директивой ManagedApplicationDescriptor:

grep -rn "ManagedApplicationDescriptor\|_1cws_module" /etc/apache2/ /etc/httpd/ 2>/dev/null

Проверьте разрядность

Модули расширения бывают 32- и 64-разрядными. В 64-разрядном IIS пул приложений с 32-битной wsisapi.dll работает только при включённом параметре «Разрешены 32-разрядные приложения». Для Apache разрядность модуля и самого Apache должны совпадать. Если ставите 64-битную платформу вместо 32-битной — путь меняется с C:\Program Files (x86)\1cv8\ на C:\Program Files\1cv8\.

Перед обновлением веб-сервера
Выполнено: 0 / 5

Перезапуск IIS или Apache обрывает сеансы всех, кто работает через браузер, тонкий клиент по HTTP и веб-сервисы. Обмены с сайтом и мобильными приложениями тоже прервутся. Планируйте работы на нерабочее время.

Обновление веб-сервера 1С на Windows с IIS

Шаг 1. Установите модули новой версии

  1. Запустите setup.exe из дистрибутива новой платформы на машине с IIS.
  2. В списке компонентов отметьте «Модули расширения веб-сервера». Если кластер стоит на этой же машине, сервер 1С обновляется тем же запуском.
  3. Старую версию пока не удаляйте: она нужна для отката.

Шаг 2. Переключите публикации

Способ 1 — переопубликовать из Конфигуратора. Запустите Конфигуратор новой версии от имени администратора, откройте базу и выберите Администрирование → Публикация на веб-сервере. В окне выберите существующую публикацию с тем же именем и каталогом, нажмите «Опубликовать» и подтвердите замену. Мастер перепишет обработчик на новую wsisapi.dll.

Мастер формирует default.vrd заново по флажкам на экране. Если в нём были ручные правки — параметры OData, HTTP-сервисов, настройки отладки, — сравните файл с резервной копией после публикации.

Способ 2 — утилита webinst. Подходит для скриптов и баз без доступа к Конфигуратору:

"C:\Program Files\1cv8\8.3.25.1257\bin\webinst.exe" -publish -iis -wsdir base -dir "C:\inetpub\wwwroot\base" -connstr "Srvr=srv1c;Ref=base;"

Способ 3 — замена версии в web.config. Путь к обработчику хранится в web.config каталога публикации, в сопоставлении обработчиков с именем вида «1C Web-service Extension». Для массовой замены:

$old = '8.3.24.1548'; $new = '8.3.25.1257'
Get-ChildItem 'C:\inetpub\wwwroot' -Recurse -Filter web.config |
  ForEach-Object {
    $text = Get-Content $_.FullName -Raw
    if ($text -match [regex]::Escape($old)) {
      $text -replace [regex]::Escape($old), $new | Set-Content $_.FullName -Encoding UTF8
      Write-Output "Обновлено: $($_.FullName)"
    }
  }

Результат проверьте в Диспетчере IIS: сайт → приложение → «Сопоставления обработчиков». В свойствах обработчика должен стоять путь к папке новой версии.

Шаг 3. Права и перезапуск

Учётная запись пула приложений (обычно группа IIS_IUSRS) должна читать папку bin новой версии. Установщик обычно выдаёт эти права сам, но после ручного копирования платформы их приходится добавлять вручную.

Затем перезапустите пулы публикаций в Диспетчере IIS («Пулы приложений» → «Перезапуск») или весь IIS командой iisreset. Перезапуск одного пула мягче: остальные сайты на сервере продолжат работать.

СпособКогда выбиратьРиски
Мастер Конфигуратора1–3 публикации, нет ручных правокСброс нестандартных параметров default.vrd
webinstСкрипты, развёртывание по шаблонуНужно точно повторить параметры публикации
Замена в web.configМного публикацийОпечатка в номере версии кладёт все публикации сразу

Обновление публикаций 1С на Apache в Linux

Установка новой версии

С версии 8.3.20 платформа для Linux поставляется единым установщиком. Модули веб-сервера — компонент ws:

sudo ./setup-full-8.3.25.1257-x86_64.run --mode unattended --enable-components server,ws

Если на машине только веб-сервер, оставьте один компонент ws. Полный список компонентов показывает запуск установщика с ключом --help.

Правка LoadModule

Модуль подключается одной строкой. На Debian и Ubuntu она обычно в /etc/apache2/apache2.conf, на RHEL-подобных системах — в /etc/httpd/conf/httpd.conf:

LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.25.1257/wsap24.so"

Замените номер версии вручную или командой, затем проверьте конфигурацию и перезапустите службу:

sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
sudo sed -i 's#8\.3\.24\.1548#8.3.25.1257#g' /etc/apache2/apache2.conf
sudo apachectl configtest
sudo systemctl restart apache2

Для RHEL-подобных систем служба называется httpd. Блоки <Location> с публикациями при этом трогать не нужно: в них указан путь к default.vrd, а не к платформе.

Переопубликация через webinst

Если публикации создавались заново или конфиг собран из разных файлов, проще выполнить публикацию утилитой новой версии:

sudo /opt/1cv8/x86_64/8.3.25.1257/webinst -publish -apache24 -wsdir base -dir /var/www/base -connstr "Srvr=srv1c;Ref=base;" -confpath /etc/apache2/apache2.conf

Один экземпляр Apache может загрузить модуль только одной версии платформы. Если базы на разных кластерах требуют разных версий, нужен второй экземпляр Apache на другом порту или отдельная машина. В IIS разные публикации могут ссылаться на разные версии wsisapi.dll, но держите их в разных пулах приложений.

Apache на Windows обновляется так же: та же строка LoadModule, только путь вида C:/Program Files/1cv8/8.3.25.1257/bin/wsap24.dll.

Лицензии и ключи защиты после обновления

Сам веб-сервер лицензию не потребляет. Лицензию занимает каждый сеанс пользователя: веб-клиент, тонкий клиент по HTTP. Где её ищет платформа, зависит от типа базы:

  • 🏢 Клиент-серверная база . Клиентские лицензии получает кластер серверов 1С. Для веб-клиента это единственный вариант: браузер не видит локальный ключ на компьютере пользователя.
  • 📁 Файловая база, опубликованная на веб-сервере. Модуль расширения работает с базой как обычный клиент, поэтому лицензия нужна на машине с веб-сервером: программная лицензия, активированная на этом компьютере, или доступ к сетевому HASP-ключу.

Смена версии платформы программные лицензии не затрагивает. Файлы лицензий хранятся отдельно от папки версии, в C:\ProgramData\1C\licenses на Windows и в /var/1C/licenses на Linux. Повторная активация может понадобиться при смене оборудования или переустановке ОС, а не из-за обновления платформы.

Для HASP-ключа проверьте файл nethasp.ini: если в нём прописан адрес сервера ключей, он должен остаться в каталоге conf платформы. Учётная запись пула IIS или пользователь Apache должны иметь право читать файлы лицензий. Если лицензии лежат в общей папке, а пул запущен от встроенной учётной записи, база при первом входе сообщит, что лицензия не обнаружена.

Ошибки после обновления веб-сервера и как их исправить

Большинство сбоев после обновления сводится к трём причинам: публикация смотрит на старую или удалённую версию модуля, версии кластера и модулей не совпадают, у пула нет прав. Диагностика по симптомам:

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

Если не помогло — откат

Старую версию вы не удаляли, поэтому откат занимает минуты. Верните web.config, default.vrd и конфиг Apache из резервных копий и перезапустите пул или службу. Но откат веб-сервера имеет смысл, только если и кластер остался на прежней версии. Если кластер уже обновлён, ищите причину в правах и путях, а не возвращайте старые модули.

Подробности сбоя пишет журнал событий Windows: раздел «Приложение», источники IIS и 1С:Предприятие. На Linux смотрите журнал ошибок Apache — обычно /var/log/apache2/error.log или /var/log/httpd/error_log.

Настройка производительности после обновления

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

  1. Отдельный пул на каждую нагруженную базу. Падение или перезапуск одного пула не задевает остальные публикации.
  2. Плановое перезапускание пула. По умолчанию IIS перезапускает пул каждые 1740 минут — то есть в произвольное время суток. Замените интервал на конкретное время ночью в «Дополнительных параметрах» пула.
  3. Тайм-аут простоя. Стандартные 20 минут простоя выгружают пул, и первый запрос утром идёт заметно дольше. Для публикаций с веб-сервисами и обменами тайм-аут обычно ставят в 0.
  4. Исключения антивируса. Добавьте папку платформы и каталоги публикаций в исключения проверки при доступе. Проверку загружаемых файлов при этом оставьте.
  5. HTTPS с HTTP/2. IIS 10 включает HTTP/2 автоматически для HTTPS-привязок, Apache — модулем mod_http2. Для веб-клиента с множеством мелких запросов это ощутимо.
  6. Сеть между веб-сервером и кластером. Веб-сервер держит соединения с кластером по портам агента и рабочих процессов. Если между ними межсетевой экран, убедитесь, что открыт порт агента 1540 и диапазон портов рабочих процессов из свойств рабочего сервера.

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

Удалите старую версию платформы с веб-сервера только через неделю-две спокойной работы. До этого она страхует откат и почти не занимает места.

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

Нужно ли переопубликовывать базу после обновления конфигурации?
Нет. Обновление конфигурации (новый релиз Бухгалтерии или ЗУП) не трогает веб-сервер. Переопубликация или правка путей нужна только при смене версии платформы.
Можно ли обновить веб-сервер раньше кластера?
Нет. Модули новой версии не подключатся к кластеру старой версии — пользователи получат ошибку несоответствия версий. Сначала кластер, затем веб-сервер, в одно окно работ.
Сохранятся ли настройки HTTP-сервисов и OData после обновления?
При правке пути в web.config или LoadModule — да, файл default.vrd не меняется. При переопубликации мастером файл пересоздаётся по флажкам, поэтому сравните его с резервной копией.
Нужна ли отдельная лицензия на веб-сервер?
Нет. Лицензию занимает сеанс пользователя. Для клиент-серверной базы её выдаёт кластер, для файловой — ищет платформа на машине с веб-сервером.
Обязательно ли перезапускать весь IIS?
Нет. Достаточно перезапустить пулы приложений с публикациями 1С. Команда iisreset нужна, если пулов много или после установки компонентов роли IIS.