chore(.tasks): iis-on-host-migration Phase 1-3 done, paused
10/11 main domains now served by native host IIS via traefik (C:\sites\MoreThenCms.Web on *:80). rimiz.ru -> 404 (CMS-side), stostayer/stostayer.old technically deployed but timeout locally, traefik for stayer kept on VM. Phase 4-5 open. - STATUS: ready -> paused with detailed where-I-stopped - iis-on-host-migration: completed steps + decisions log + status block - NEXT-SESSION-PROMPT: rewritten with current state + 4 next-task options Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,29 +4,31 @@
|
||||
|
||||
---
|
||||
|
||||
Привет! Продолжаем после recovery. **Контекст уже зафиксирован в** `.wiki/` (читай `overview.md` для навигации) **и в** `.tasks/STATUS.md`.
|
||||
Привет! Продолжаем после **успешной миграции основного CMS на нативный IIS хоста** (см. `.wiki/sources/iis-host-migration-2026-05-19.md` и обновлённый `.wiki/concepts/recovery-architecture-snapshot.md`).
|
||||
|
||||
**Кратко где мы сейчас:**
|
||||
- Клиентские сайты живы и доступны из публичного интернета через цепочку: client → OpenWRT NAT → traefik 4443/8000 (на этом Windows-PC) → VirtualBox VM `snolla-recovery` → IIS + .NET 4.8 CMS.
|
||||
- 5 баз восстановлены в MSSQL контейнере на хосте. MinIO/Elasticsearch/imgproxy тоже работают в Docker.
|
||||
- 40 LE-сертификатов валидны, traefik на file-provider routing.
|
||||
- 10 главных клиентских доменов (snolla.com + 9 остальных) идут client → OpenWRT → traefik → **нативный IIS хоста** → MSSQL container. VM из prod-пути выведена для этих 10 доменов.
|
||||
- `MoreThenCms.Web` на хосте: `C:\sites\MoreThenCms.Web`, AppPool `MoreThenCms.Web` (.NET v4.0 Integrated, ApplicationPoolIdentity), bind `*:80`.
|
||||
- traefik backend для 11 yml пропатчен на `host.docker.internal:80` (backup `*.yml.bak-phase3-2026-05-19`).
|
||||
- VM продолжает крутить только stostayer (`:18180`) и stostayer.old (`:18181`) — их traefik backend на VM не трогали.
|
||||
|
||||
**Задача этой сессии:** запустить активную задачу `nas-recovery` → `iis-on-host-migration`. Цель — перенести IIS-сайты из VM на нативный IIS Windows-хоста, чтобы избавиться от VBox как слоя нестабильности. Все материалы есть: backup сайтов в `C:\nas-recovery\vm-sites\` (11 GB), исходники в `projects/MoreThenCms\`, контейнеры с БД и сервисами уже работают на этом хосте.
|
||||
|
||||
**Старт-команда:**
|
||||
1. Прочитай `.tasks/iis-on-host-migration.md` целиком.
|
||||
2. Прочитай `.wiki/entities/snolla-recovery-vm.md` и `.wiki/entities/windows-recovery-host.md` — что мы переносим и куда.
|
||||
3. Прочитай `.wiki/concepts/cms-config-rewrite-pattern.md` — про UTF-8 BOM ловушку.
|
||||
4. Спроси меня про **открытые вопросы** из `.tasks/iis-on-host-migration.md` (CMS abs paths, IIS app pool identity, .NET update, MinIO/Azure adapter).
|
||||
5. После того как откроемся в вопросах — предложи план Phase 1+2 (анализ + импорт сайтов) одной аргументированной рекомендацией, не меню. Согласую — поедем.
|
||||
**Открытые задачи (выбрать одну):**
|
||||
1. **stostayer / stostayer.old** — сайты `:8090/:8091` на хосте созданы, но локальный `Invoke-WebRequest` даёт timeout. Разобраться: cold-start ASP.NET? Web.config conn-string на 89.253.219.2 не отвечает? AppPool краш? Глянуть Event Viewer + W3SVC logs. После фикса — переключить traefik (`stostayer.yml`, `oldstostayer.yml`).
|
||||
2. **rimiz.ru → 404** — host header не маппится на CMS-сайт (на host-IIS и, вероятно, до миграции тоже). Найти в БД таблицу mapping host→site, проверить запись для rimiz.ru.
|
||||
3. **Phase 5** — URL Rewrite + ARR MSI (фикс `:4443` в CMS-редиректах), Application Initialization (warm-start), log rotation `C:\inetpub\logs\`.
|
||||
4. **Cleanup VM** — только после (1). `VBoxManage controlvm "snolla-recovery" poweroff`, удалить port forwards 18080/18180/18181/18189 в OpenWRT, опционально `unregistervm --delete` (освобождает 92 GB).
|
||||
|
||||
**Не делай без моего "да":**
|
||||
- Менять traefik backends (это переключит prod-трафик).
|
||||
- Останавливать VM до полной отладки нативного IIS.
|
||||
- Удалять backup-копии (vm-sites/, snolla.ova).
|
||||
- Любой push в git (gitea пока недоступен — он был на мёртвой синке, восстанавливать = отдельная задача).
|
||||
- Любые traefik patches (это меняет prod-трафик).
|
||||
- Любые destructive операции на `C:\sites\`, `C:\stayer\`, `C:\nas-recovery\vm-sites\`.
|
||||
- Глушить VM.
|
||||
- Push в git (gitea пока на мёртвой синке).
|
||||
|
||||
**Открытое:** МinIO/Azure-адаптер в CMS — я обещал пояснить, "не так все" как считалось. Готов рассказать когда дойдёт.
|
||||
**Контекстные пароли** (в Web.config / .env, не в чате):
|
||||
- MSSQL SA: `C:\Users\vitya\projects\docker\diskstation\mssql\.env`
|
||||
- Production MSSQL для CMS: user `snolla`, password в `C:\sites\MoreThenCms.Web\Web.config` (`fXkH4@8O%3pc`)
|
||||
- VM SSH: `~/.ssh/id_ed25519_snolla_vm` → `vitya@127.0.0.1:8022` (NAT-forward!)
|
||||
- Если ключ не подойдёт — пароль admin vitya в VM: `Pryakhin9`
|
||||
|
||||
Поехали.
|
||||
|
||||
@@ -35,15 +37,12 @@
|
||||
## Что почитать AI-агенту перед началом (для самопроверки контекста)
|
||||
|
||||
- `.wiki/overview.md` — точки входа
|
||||
- `.wiki/sources/nas-recovery-session-2026-05-18.md` — что было
|
||||
- `.wiki/concepts/recovery-architecture-snapshot.md` — текущее состояние, request flow
|
||||
- `.wiki/concepts/future-resilient-architecture-goals.md` — куда движемся в долгую
|
||||
- `.tasks/STATUS.md` — закрытая задача `nas-recovery` (status: done)
|
||||
- `.tasks/iis-on-host-migration.md` — активная задача, открытые вопросы
|
||||
- `.wiki/sources/iis-host-migration-2026-05-19.md` — что было сделано в прошлой сессии (актуальный source)
|
||||
- `.wiki/sources/nas-recovery-session-2026-05-18.md` — почему вообще на этом хосте всё
|
||||
- `.wiki/concepts/recovery-architecture-snapshot.md` — **обновлённая** chain после миграции
|
||||
- `.wiki/entities/snolla-recovery-vm.md` — VM в статусе demoted
|
||||
- `.wiki/entities/windows-recovery-host.md` — добавлены native IIS sites
|
||||
- `.wiki/concepts/cms-config-rewrite-pattern.md` — UTF-8 BOM ловушка
|
||||
- `.tasks/STATUS.md` — paused задача `iis-on-host-migration`
|
||||
- `.tasks/iis-on-host-migration.md` — детальный план + completed steps + решения
|
||||
- Это сообщение
|
||||
|
||||
## Полезные пароли/ключи (хранятся в Web.config / .env, не в чате)
|
||||
- MSSQL SA: см. `C:\Users\vitya\projects\docker\diskstation\mssql\.env`
|
||||
- Production MSSQL для CMS: user `snolla` (production password в Web.config-ах в VM и в `production-data/docker-compose.yml`)
|
||||
- MinIO access/secret keys: `C:\Users\vitya\projects\docker\diskstation\minio\docker-compose.yml`
|
||||
- SSH-ключи на хосте: `~/.ssh/id_ed25519_kreknin`, `~/.ssh/id_ed25519_openwrt`, `~/.ssh/id_ed25519_snolla_vm`
|
||||
|
||||
10
STATUS.md
10
STATUS.md
@@ -1,10 +1,10 @@
|
||||
# Task Board
|
||||
_Updated: 2026-05-18_
|
||||
_Updated: 2026-05-19_
|
||||
|
||||
## ⚪ [iis-on-host-migration] — перенести IIS-сайты из VM на нативный Windows-host IIS
|
||||
**Status:** ready (поставлена 2026-05-19, старт следующей сессией)
|
||||
**Where I stopped:** план в [`iis-on-host-migration.md`](iis-on-host-migration.md), prompt для следующей сессии в [`NEXT-SESSION-PROMPT.md`](NEXT-SESSION-PROMPT.md). Резервные копии готовы: `C:\nas-recovery\vm-sites\wwwroot\` (8.7 GB) + `stayer\` (2.2 GB). Контейнеры (MSSQL/MinIO/ES/imgproxy/traefik) уже на хосте, их не трогаем.
|
||||
**Next action:** в новой сессии — открыть `iis-on-host-migration.md`, обсудить открытые вопросы (abs paths в CMS, AppPool identity, MinIO/Azure adapter), потом Phase 1+2.
|
||||
## 🟡 [iis-on-host-migration] — основной CMS на хосте, stostayer ещё на VM
|
||||
**Status:** paused (Phase 1-3 для главного CMS — done 2026-05-19; stostayer + rimiz issues + Phase 4-5 — pending)
|
||||
**Where I stopped:** 10 из 11 главных доменов (snolla.com, labtools.pro/ru, pilorama98.ru, tandemmebel.ru, emspb.ru, kupimknigi.spb.ru, maljarka.tandemmebel.ru, sestech.ru, ics-artmaterials.com) идут через traefik → host-IIS (`C:\sites\MoreThenCms.Web` :80). rimiz.ru → 404 (CMS-side). stostayer/stostayer.old технически развёрнуты на хосте (`:8090/:8091`), но локальный smoke = timeout — traefik для них остался на VM (`:18180/:18181`).
|
||||
**Next action:** один из трёх — (а) починить stostayer на хосте + переключить traefik (или явно решить не мигрировать), (б) разобраться с rimiz.ru 404, (в) сделать Phase 5 (URL Rewrite + ARR, чтобы убрать `:4443` из CMS-редиректов).
|
||||
**Branch:** master
|
||||
|
||||
---
|
||||
|
||||
@@ -74,6 +74,24 @@
|
||||
## Completed steps
|
||||
- [x] Pulled VM sites to host (49 минут tar+ssh, 11 GB total)
|
||||
- [x] IIS на хосте установлен (в рамках recovery, ещё нативно не использовался)
|
||||
- [x] **Phase 1 — discovery** (2026-05-19): VM сайты/пулы/vdirs/features через SSH + appcmd, host IIS features через elevated DISM, source grep на hardcoded paths. См. `.wiki/sources/iis-host-migration-2026-05-19.md`.
|
||||
- [x] **Phase 2 — миграция MoreThenCms.Web** (2026-05-19): `C:\sites\MoreThenCms.Web` (8.7 GB robocopy), Web.config patch (`sitePath` + conn → localhost, UTF-8 BOM), AppPool + Website на `*:80`, ACL `:(OI)(CI)M` для `IIS AppPool\MoreThenCms.Web`. Default Web Site остановлен. Smoke test через `localhost` с Host header — 10/11 хостов отвечают (rimiz.ru → 404, как issue ниже).
|
||||
- [x] **Phase 2 — stostayer / stostayer.old** (2026-05-19, частично): сайты созданы на `:8090/:8091` → `C:\stayer\MoreThenCms.Web` / `C:\stayer\stostayer.old`, AppPools созданы, ACL поставлен. **Но локально оба отвечают timeout** — рантайм-проблема не разбиралась.
|
||||
- [x] **Phase 3 — traefik switch** (2026-05-19): 11 yml пропатчены `host.docker.internal:18080` → `host.docker.internal:80`, traefik file-provider auto-reload, public smoke через `https://localhost:4443/` — **10/11 хостов → HTTP 200**, rimiz.ru → 404. Stostayer/oldstostayer backend в traefik не трогали (остаются на VM).
|
||||
|
||||
## Решения (decisions log дополнен)
|
||||
- 2026-05-19: **Snolla.IdentityManager не мигрируется** — пользователь подтвердил «не нужен» (Q-C в сессии). Если что-то внутри CMS дёргает его по `localhost:8089` — увидим в логах, тогда вернёмся.
|
||||
- 2026-05-19: **Sub-apps stostayer.old (`/calc`, `/price`, `/price/tireService`) не мигрируются** — пользователь подтвердил «не нужны».
|
||||
- 2026-05-19: **stostayer.connection-string на 89.253.219.2 не трогаем** (Q-B пользователя «не трогай, так надо»). Это внешний production MSSQL для stayer-инфраструктуры, не наш контейнер.
|
||||
- 2026-05-19: **AppPool identity = ApplicationPoolIdentity** для всех 3 пулов (default outside SCM, безопасно). ACL `:(OI)(CI)M` (Modify) рекурсивно на site root.
|
||||
- 2026-05-19: **Path strategy = C:\sites\\** (не `C:\inetpub\wwwroot\`) — пользователь выбрал (б) в Q1.
|
||||
|
||||
## Status
|
||||
- ✅ MoreThenCms.Web на хосте обслуживает 10 главных доменов через traefik.
|
||||
- ⏳ rimiz.ru → 404 (CMS-side mapping issue).
|
||||
- ⏳ stostayer / stostayer.old: технически перенесены, runtime fail на хосте, prod-трафик пока на VM.
|
||||
- ⏳ Phase 4 (cleanup VM) — пока нельзя, нужны stostayer.
|
||||
- ⏳ Phase 5 (URL Rewrite + ARR + log rotation + AppInit) — bonus, можно сразу.
|
||||
|
||||
## Notes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user