سه بار پشتِ سر هم همین الگو تکرار شد: یک متغیرِ محیطی ست نبود، جنگو موقعِ بالا آمدن مرد، و از بیرون فقط «502 Bad Gateway» دیده شد. کسی که سرور را بالا میآورد هیچ سرنخی نداشت، و تشخیص هر بار یک رفتوبرگشتِ یکروزه بود. ALLOWED_HOSTS و CSRF_TRUSTED_ORIGINS حالا دامنههای شناختهشدهی خودمان را پیشفرض دارند. CSRF مخصوصاً مهم است: بدونش ورود به پنلِ ادمین از پشتِ پراکسیِ HTTPS «CSRF verification failed» میدهد و علتش از پیام معلوم نیست. SECRET_KEY اگر ست نباشد، در پروداکشن یک کلیدِ تصادفیِ واقعی ساخته و در .django_secret_key نگه داشته میشود (۰۶۰۰، خارج از گیت). همانقدر غیرقابلِ حدس، بدونِ یک قدمِ دستیِ دیگر؛ و چون روی دیسک میماند، ریاستارت نشستهای کاربران را باطل نمیکند. CACHE_URL نبودن دیگر مانعِ بالا آمدن نیست. مشترک نبودنِ کش بینِ workerها یک ضعفِ واقعیست ولی دلیلِ خوبی برای خوابیدنِ کلِ سرویس نیست؛ حالا بالا میآید و /api/health صریحاً هشدار میدهد. تستِ مربوطه هم از «باید بالا نیاید» به «باید بالا بیاید ولی بیصدا نماند» تغییر کرد. متغیرِ محیطی همچنان بر همهی این پیشفرضها اولویت دارد. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
14 lines
302 B
Plaintext
14 lines
302 B
Plaintext
venv/
|
||
__pycache__/
|
||
*.pyc
|
||
db.sqlite3
|
||
.DS_Store
|
||
.env
|
||
|
||
# کتابهای درسی: خودِ PDFها در گیت نمیآیند (حجیماند)
|
||
data/textbooks/*
|
||
!data/textbooks/README.md
|
||
|
||
# کلیدِ امضای تولیدشدهی خودکار (هرگز کامیت نشود)
|
||
.django_secret_key
|