Перезапуск IIS и Apache с публикацией 1С без потери сеансов и данных

· 9 мин

Содержание

Чтобы перезапустить веб-сервер 1С на IIS, чаще всего хватает переработки пула приложений публикации: Диспетчер служб IIS → Пулы приложений → ваш пул → Перезапустить. Полный перезапуск всей службы — команда iisreset от имени администратора. Для Apache на Windows это httpd -k restart -n "Apache2.4", на Linux — sudo systemctl restart apache2 (Debian/Ubuntu) или sudo systemctl restart httpd (RHEL-семейство).

Частое заблуждение: «перезапущу веб-сервер — и 1С заработает». Веб-сервер в схеме 1С Предприятие только принимает HTTP-запросы и передаёт их модулю расширения платформы. Сами базы, сеансы и лицензии живут в кластере серверов 1С или в файловой базе. Если упал кластер, перезапуск IIS ничего не даст, а сеансы веб-клиента при этом оборвутся.

Что проверить до перезапуска

Сначала поймите, на каком уровне сбой. Это 3–5 минут, которые избавят от лишних перезапусков.

Проверка по шагам:

  1. Откройте публикацию в браузере прямо на сервере: http://localhost/имя_публикации/. Открылась — проблема в сети, DNS или файрволе, а не в веб-сервере.
  2. Откройте любую статическую страницу этого же веб-сервера (для IIS — стартовую http://localhost/). Не открывается и она — проблема в самом веб-сервере.
  3. Подключитесь к базе тонким клиентом напрямую к кластеру, минуя веб-сервер. Не подключается — веб-сервер ни при чём, разбирайтесь с кластером.
  4. Посмотрите, какой код ответа возвращает публикация. Для HTTP-сервисов и OData удобно проверить из командной строки:
curl -I http://localhost/buh/ru_RU/
curl -I http://localhost/buh/hs/имя_сервиса/ping

Куда смотреть в логах:

  • 📄 IIS — журналы запросов в C:\inetpub\logs\LogFiles\W3SVC1\, ошибки пула и модуля — в журнале Windows Приложение и Система.
  • 📄 Apache на Windows — logs\error.log в каталоге установки Apache.
  • 📄 Apache на Linux — /var/log/apache2/error.log или /var/log/httpd/error_log.
Код ответаГде искать причину
404Публикация не создана, опечатка в имени, нет обработчика
500Модуль 1С не загрузился, ошибка в default.vrd, нет прав на каталог
502 / 503Пул IIS остановлен, рабочий процесс падает, перегрузка
ТаймаутКластер не отвечает, порт закрыт, зависший процесс

Любой перезапуск веб-сервера обрывает текущие сеансы веб-клиента и запросы к HTTP-сервисам. Пользователи потеряют несохранённые данные в открытых формах, обмен с сайтом или мобильным приложением прервётся на середине. В рабочее время предупредите людей или дождитесь окна обслуживания.

Перезапуск веб-сервера IIS: пул, сайт, служба

У IIS три уровня перезапуска. Начинайте с самого мягкого.

СпособЧто затрагиваетКогда применять
Переработка пула приложенийТолько приложения в этом пулеПубликация зависла, после правки default.vrd, после смены версии платформы
Остановка и запуск сайтаВсе приложения сайтаПоменяли привязки (порт, сертификат)
iisresetВсе сайты сервераПул не помогает, служба W3SVC зависла

Перезапуск пула приложений

  1. Откройте Диспетчер служб IIS (команда inetmgr).
  2. Слева выберите Пулы приложений.
  3. Найдите пул, в котором работает публикация 1С. Узнать его можно в Основных настройках приложения публикации.
  4. Щёлкните по пулу правой кнопкой и выберите Перезапустить, если пул запущен, или Запустить, если остановлен.

Из командной строки то же делает appcmd:

%windir%\system32\inetsrv\appcmd recycle apppool /apppool.name:"DefaultAppPool"
%windir%\system32\inetsrv\appcmd start apppool /apppool.name:"DefaultAppPool"

💡 Переработка пула по умолчанию идёт с перекрытием: IIS поднимает новый рабочий процесс w3wp.exe и только потом гасит старый. Новые запросы почти не теряются, но сеансы веб-клиента 1С, привязанные к старому процессу, всё равно придётся открыть заново.

Полный перезапуск IIS

Запустите командную строку от имени администратора:

iisreset /stop
iisreset /start

Или одной командой iisreset. Альтернатива — перезапуск службы Служба веб-публикаций (W3SVC):

net stop W3SVC
net start W3SVC

Разрядность пула — частая скрытая причина

Пул должен совпадать по разрядности с модулем wsisapi.dll, который указан в обработчике публикации. Для 32-разрядной платформы в Дополнительных параметрах пула включают Разрешены 32-разрядные приложения = True, для 64-разрядной — False. При несовпадении пул после перезапуска сразу падает и IIS отвечает 503.

Перезапуск Apache для публикации 1С

Apache подключает 1С через модуль wsap24.dll (Windows) или wsap24.so (Linux) из каталога bin установленной платформы. Строку загрузки модуля веб-конфигуратор или команда webinst добавляет в httpd.conf.

Apache на Windows

Имя службы зависит от сборки. У Apache Lounge по умолчанию это Apache2.4. Точное имя видно в services.msc.

cd C:\Apache24\bin
httpd -t
httpd -k restart -n "Apache2.4"

Сначала httpd -t проверяет синтаксис конфигурации. Ответ Syntax OK — можно перезапускать. Если команда ругается, Apache после остановки не поднимется, и публикация 1С будет недоступна, пока не исправите конфиг.

Через оснастку: Win+R → services.msc → Apache2.4 → Перезапустить. Через PowerShell:

Restart-Service -Name "Apache2.4"

Apache на Linux

sudo apachectl configtest
sudo systemctl restart apache2     # Debian, Ubuntu, Astra
sudo systemctl restart httpd       # RHEL, CentOS, РЕД ОС, AlmaLinux

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

sudo systemctl reload apache2
# или
sudo apachectl -k graceful

graceful даёт рабочим процессам закончить текущие запросы. Но модуль 1С при этом всё равно перечитывается, поэтому для веб-клиента разница с жёстким перезапуском невелика. Для HTTP-сервисов и обменов она заметна.

После обновления платформы

Модуль Apache загружается по пути, где указан номер версии платформы, например C:/Program Files/1cv8/8.3.25.1374/bin/wsap24.dll. После установки новой платформы старый каталог могут удалить. Тогда Apache не стартует. Переопубликуйте базу из новой версии или поправьте путь в httpd.conf, затем перезапустите службу.

Автономный сервер 1С (ibsrv)

С платформы 8.3.14 есть автономный сервер ibsrv. Это отдельный процесс, который сам обслуживает базу и сам принимает HTTP-запросы: веб-клиент, HTTP-сервисы, OData. IIS или Apache для него не нужны. По умолчанию он слушает порт 8314.

Перезапуск зависит от того, как вы его запустили:

  • 🖥️ Вручную в консоли — остановите процесс через Ctrl+C в окне и запустите той же командой заново.
  • ⚙️ Как служба Windows — services.msc или Restart-Service с именем службы, которое вы задали при регистрации.
  • 🐧 Как юнит systemd — sudo systemctl restart имя_юнита.

Пример запуска для файловой базы:

"C:\Program Files\1cv8\8.3.25.1374\bin\ibsrv.exe" --data="D:\ibsrv-data" --db-path="D:\Bases\Buh" --http-port=8314

Полный список параметров для вашей версии показывает ibsrv --help.

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

Кэш и временные файлы после перезапуска

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

Что почистить:

  1. Кэш браузера. В Chrome, Edge и Яндекс Браузере — Ctrl+Shift+Delete, период «Всё время», пункт «Изображения и другие файлы, сохранённые в кеше». Быстрый вариант для одной вкладки — Ctrl+F5.
  2. Кэш тонкого клиента , если он подключён через веб-сервер. Запустите клиент с параметром /ClearCache или удалите каталоги кэша в %APPDATA%\1C\1cv8\ и %LOCALAPPDATA%\1C\1cv8\ при закрытой 1С.
  3. Кэш IIS. Отдельно чистить не нужно — переработка пула сбрасывает память рабочего процесса.

Пример ярлыка для тонкого клиента с очисткой кэша:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /WS "http://srv/buh" /ClearCache

💡 Если белый экран остаётся и после очистки кэша браузера, откройте публикацию в окне инкогнито. Открылась — виноваты расширения браузера или сохранённые cookies, а не сервер.

Сеансы в кластере

После жёсткого перезапуска веб-сервера оборванные сеансы веб-клиента могут ещё какое-то время висеть в кластере и занимать лицензии. Проверьте их в консоли администрирования серверов 1С: Информационные базы → ваша база → Сеансы. Приложение сеанса — Веб-клиент или Веб-сервис. Зависшие сеансы можно завершить вручную. Активным пользователям при этом придётся войти заново.

Скрипт для перезапуска по расписанию

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

Windows: bat-файл и Планировщик

@echo off
set LOG=C:\Scripts\restart_web.log
echo %date% %time% start >> %LOG%
%windir%\system32\inetsrv\appcmd recycle apppool /apppool.name:"1C_Pool" >> %LOG% 2>&1
timeout /t 15 /nobreak > nul
curl -s -o nul -w "%%{http_code}" http://localhost/buh/ru_RU/ >> %LOG%
echo. >> %LOG%

Скрипт перерабатывает пул, ждёт 15 секунд и пишет в журнал код ответа публикации. Код 200 — всё поднялось.

Добавьте задание в Планировщик:

schtasks /create /tn "Restart 1C web" /tr "C:\Scripts\restart_web.bat" /sc daily /st 04:00 /ru SYSTEM

В PowerShell то же самое для пула делает модуль администрирования IIS:

Import-Module WebAdministration
Restart-WebAppPool -Name "1C_Pool"

Встроенная переработка IIS

Вместо скрипта можно настроить переработку в самом пуле: Дополнительные параметры → Переработка → Определённое время. Укажите время, например 04:00:00. Там же стандартный интервал Обычный интервал времени = 1740 минут (29 часов). Его стоит отключить (0), чтобы пул не перерабатывался посреди рабочего дня.

Linux: cron

sudo crontab -e
# каждый день в 4:00
0 4 * * * /usr/bin/systemctl reload apache2 >> /var/log/restart_web.log 2>&1
Перед плановым перезапуском
Выполнено: 0 / 5

Ошибки при перезапуске и как их устранить

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

Как найти, кто занял порт

На Windows:

netstat -ano | findstr ":80 "
tasklist /fi "PID eq 1234"

Если владелец порта — PID 4 (System), порт держит драйвер http.sys. Обычно это IIS, служба удалённого управления или другое приложение, которое регистрирует адреса через него. Список зарегистрированных адресов покажет netsh http show servicestate. Apache и IIS на одном порту одновременно работать не могут: оставьте один или разведите их по разным портам.

На Linux:

sudo ss -tlnp | grep -E ':80|:443'

Модуль не того релиза

Версия модуля веб-сервера должна совпадать с версией платформы на сервере 1С. Публикация из 8.3.24 при кластере 8.3.25 даёт ошибку несоответствия версий при входе. Лечится переопубликацией из правильной версии через Конфигуратор (Администрирование → Публикация на веб-сервере) или webinst, затем перезапуском пула или службы.

Нужно ли перезапускать веб-сервер после обновления конфигурации базы?
Нет. Обновление конфигурации касается базы и кластера. Пользователям веб-клиента достаточно переоткрыть вкладку, иногда — очистить кэш браузера.
Нужно ли перезапускать IIS после обновления платформы 1С?
Да, если вы переопубликовали базу из новой версии. Модуль wsisapi.dll загружается в рабочий процесс один раз, и новый путь подхватится только после переработки пула.
Можно ли перезапустить только одну публикацию, не трогая остальные?
В IIS — да, если у публикации свой пул приложений. Поэтому каждой важной базе удобно выделять отдельный пул. В Apache модуль общий для всех публикаций, перезапускается весь сервер.
Перезапуск веб-сервера освобождает лицензии 1С?
Не сразу. Лицензию держит сеанс в кластере, а не веб-сервер. Сеанс завершится по таймауту или после ручного завершения в консоли кластера.
Чем `iisreset` отличается от перезагрузки сервера Windows?
iisreset перезапускает только службы IIS. Кластер 1С, СУБД и другие службы продолжают работать, поэтому простой — секунды, а не минуты.