deploy.sh: health check through the gunicorn socket, optional DEPLOY_BUNDLE when Gitea is unreachable
From the server the public URL goes through ArvanCloud and returned 504/000 (2026-10-07), so the final health step failed even for a healthy service. It now asks the gunicorn socket (path read from the unit) with our Host header first. DEPLOY_BUNDLE=<file> fetches from a git bundle instead of Gitea, only when set explicitly; without it an unreachable Gitea still stops the deploy. Tested: probe_health against a throwaway unix-socket server and a dead URL (bash -n clean). Not tested: the whole script end to end, until the next deploy. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
11
CLAUDE.md
11
CLAUDE.md
@@ -830,11 +830,12 @@ migrationها اعمال شدند، سهیار و `nextLessonId` از بیر
|
||||
بیبکاپ migrate نمیشود)؛ روی سرور هم اجرا شد (۲۰۲۶-۱۰-۰۷، `integrity_check: ok`). بیرون از ماشین بکاپی
|
||||
نیست.
|
||||
|
||||
**⚠️ دیپلو از ۲۰۲۶-۱۰-۰۷ بهخاطر Gitea:** از روی خودِ سرور `https://gitea.tadrisino2.ir` (حلشده به IPهای
|
||||
ArvanCloud) ۵۰۴ میدهد، پس `deploy.sh` در `git fetch` میایستد. آن روز کد با `git bundle` (از لپتاپ،
|
||||
`scp` به `.deploy-backups/`، `git fetch <bundle> main:refs/remotes/origin/main`، هشِ کامیت مقایسه شد،
|
||||
`git reset --hard origin/main`، `SKIP_PULL=1 ./deploy.sh`) رسید. علتِ ۵۰۴ پیدا نشد (مسیرِ آروان↔سرور؛ از لپتاپ ۲۰۰)؛
|
||||
مرحلهی «بررسیِ سلامت»ِ `deploy.sh` هم از داخلِ سرور همیشه شکست میخورد (همان مسیر). سلامت را از بیرون بسنجید. `sqlite3` روی سرور نصب نیست — برای بکاپِ دستی با `venv/bin/python` و
|
||||
**⚠️ Gitea از روی سرور:** از ۲۰۲۶-۱۰-۰۷ `https://gitea.tadrisino2.ir` از خودِ سرور (حلشده به IPهای
|
||||
ArvanCloud) ۵۰۴ میدهد و از لپتاپ ۲۰۰؛ علتش پیدا نشد (مسیرِ آروان↔سرور). `deploy.sh` در `git fetch` میایستد.
|
||||
راه: `DEPLOY_BUNDLE` (بخشِ «دیپلو» در `docs/operations.md`)، با مقایسهی هشِ کامیت. مرحلهی «بررسیِ سلامت»
|
||||
حالا از سوکتِ gunicorn میسنجد و از داخلِ سرور هم کار میکند.
|
||||
|
||||
`sqlite3` روی سرور نصب نیست — برای بکاپِ دستی با `venv/bin/python` و
|
||||
`sqlite3.Connection.backup()` بگیر، نه با `cp`.
|
||||
|
||||
بخشهای تاریخیِ زیر بهترتیبِ زمان نگه داشته شدهاند چون درسهایشان هنوز معتبر است؛
|
||||
|
||||
Reference in New Issue
Block a user