Перезапуск IIS и Apache с публикацией 1С без потери сеансов и данных
Содержание
Чтобы перезапустить веб-сервер 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 минут, которые избавят от лишних перезапусков.
Проверка по шагам:
- Откройте публикацию в браузере прямо на сервере:
http://localhost/имя_публикации/. Открылась — проблема в сети, DNS или файрволе, а не в веб-сервере. - Откройте любую статическую страницу этого же веб-сервера (для IIS — стартовую
http://localhost/). Не открывается и она — проблема в самом веб-сервере. - Подключитесь к базе тонким клиентом напрямую к кластеру, минуя веб-сервер. Не подключается — веб-сервер ни при чём, разбирайтесь с кластером.
- Посмотрите, какой код ответа возвращает публикация. Для 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 зависла |
Перезапуск пула приложений
- Откройте
Диспетчер служб IIS(командаinetmgr). - Слева выберите
Пулы приложений. - Найдите пул, в котором работает публикация 1С. Узнать его можно в
Основных настройкахприложения публикации. - Щёлкните по пулу правой кнопкой и выберите
Перезапустить, если пул запущен, илиЗапустить, если остановлен.
Из командной строки то же делает 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.
Автономный сервер держит базу открытой. Пока он работает, к той же файловой базе нельзя подключиться обычным клиентом в монопольном режиме. Перед обновлением конфигурации его останавливают.
Кэш и временные файлы после перезапуска
Перезапуск веб-сервера не чистит кэш на стороне пользователя. Если после обновления конфигурации или платформы веб-клиент показывает старые формы или белый экран, дело часто в браузере.
Что почистить:
- Кэш браузера. В Chrome, Edge и Яндекс Браузере —
Ctrl+Shift+Delete, период «Всё время», пункт «Изображения и другие файлы, сохранённые в кеше». Быстрый вариант для одной вкладки —Ctrl+F5. - Кэш тонкого клиента
, если он подключён через веб-сервер. Запустите клиент с параметром
/ClearCacheили удалите каталоги кэша в%APPDATA%\1C\1cv8\и%LOCALAPPDATA%\1C\1cv8\при закрытой 1С. - Кэш 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
Ошибки при перезапуске и как их устранить
Как найти, кто занял порт
На 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 загружается в рабочий процесс один раз, и новый путь подхватится только после переработки пула.Можно ли перезапустить только одну публикацию, не трогая остальные?
Перезапуск веб-сервера освобождает лицензии 1С?
Чем `iisreset` отличается от перезагрузки сервера Windows?
iisreset перезапускает только службы IIS. Кластер 1С, СУБД и другие службы продолжают работать, поэтому простой — секунды, а не минуты.