Новая версия платформы на веб-сервере 1С: что поменять в IIS и Apache
Содержание
Обновить веб-сервер 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\.
Перезапуск IIS или Apache обрывает сеансы всех, кто работает через браузер, тонкий клиент по HTTP и веб-сервисы. Обмены с сайтом и мобильными приложениями тоже прервутся. Планируйте работы на нерабочее время.
Обновление веб-сервера 1С на Windows с IIS
Шаг 1. Установите модули новой версии
- Запустите
setup.exeиз дистрибутива новой платформы на машине с IIS. - В списке компонентов отметьте «Модули расширения веб-сервера». Если кластер стоит на этой же машине, сервер 1С обновляется тем же запуском.
- Старую версию пока не удаляйте: она нужна для отката.
Шаг 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.
Настройка производительности после обновления
Обновление — удобный момент пересмотреть настройки, которые годами стояли по умолчанию.
- Отдельный пул на каждую нагруженную базу. Падение или перезапуск одного пула не задевает остальные публикации.
- Плановое перезапускание пула. По умолчанию IIS перезапускает пул каждые 1740 минут — то есть в произвольное время суток. Замените интервал на конкретное время ночью в «Дополнительных параметрах» пула.
- Тайм-аут простоя. Стандартные 20 минут простоя выгружают пул, и первый запрос утром идёт заметно дольше. Для публикаций с веб-сервисами и обменами тайм-аут обычно ставят в 0.
- Исключения антивируса. Добавьте папку платформы и каталоги публикаций в исключения проверки при доступе. Проверку загружаемых файлов при этом оставьте.
- HTTPS с HTTP/2. IIS 10 включает HTTP/2 автоматически для HTTPS-привязок, Apache — модулем
mod_http2. Для веб-клиента с множеством мелких запросов это ощутимо. - Сеть между веб-сервером и кластером. Веб-сервер держит соединения с кластером по портам агента и рабочих процессов. Если между ними межсетевой экран, убедитесь, что открыт порт агента 1540 и диапазон портов рабочих процессов из свойств рабочего сервера.
После перенастройки проверьте нагрузку в консоли администрирования серверов: число сеансов и потребление памяти рабочими процессами в первый рабочий день после обновления.
Удалите старую версию платформы с веб-сервера только через неделю-две спокойной работы. До этого она страхует откат и почти не занимает места.