stop a deploy from silently blocking the frontend or leaving 0000 open
سه حالتِ خراب که هیچکدام در لاگِ سرور ردی نمیگذارند و فقط وقتی کشف میشدند که یک آدم از بیرون اپ را دستی امتحان کند. CORS_ALLOWED_ORIGINS فقط از env خوانده میشد و با DEBUG روشن به localhost محدود میماند. یعنی بکاندِ کاملاً سالم، ولی مرورگر همهی درخواستهای math.tadrisino2.ir را بلاک میکند — خطایی که سمتِ سرور دیده نمیشود و فقط در کنسولِ مرورگر پیداست. origin های شناختهشده حالا پیشفرضِ داخلِ کدند تا یک متغیرِ فراموششده اتصال را نشکند؛ env همچنان بازنویسیشان میکند. /api/health حالا warnings هم میدهد. مهمترینش: با DEBUG روشن روی سرورِ عمومی، DEV_MASTER_OTP یعنی هر کسی با کدِ 0000 میتواند بهجای هر شمارهای وارد شود. این تا امروز فقط با خواندنِ تنظیماتِ سرور معلوم میشد، و ما به سرور دسترسی نداریم. allowedOrigins هم برگردانده میشود تا مشکلِ CORS از بیرون قابلِ تشخیص باشد. deploy.sh قبل از دست زدن به دیتابیس متغیرهای لازم را بررسی میکند و با پیامِ روشن میایستد، بهجای اینکه وسطِ کار بشکند و 502 بدهد. .env.production.example همانها را یکجا مستند میکند. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
44
.env.production.example
Normal file
44
.env.production.example
Normal file
@@ -0,0 +1,44 @@
|
||||
# نمونهی فایلِ .env برای سرور. یکبار پر میشود و بعد دیگر کاری با آن نیست.
|
||||
#
|
||||
# بعد از پر کردن، هر آپدیت فقط این است:
|
||||
# git pull && ./deploy.sh
|
||||
|
||||
# ─── اجباری ──────────────────────────────────────────────────────────────
|
||||
# دامنههایی که این سرویس روی آنها سرو میشود (با ویرگول جدا).
|
||||
DJANGO_ALLOWED_HOSTS=api.math.tadrisino2.ir
|
||||
|
||||
# ─── حالتِ پروداکشن ──────────────────────────────────────────────────────
|
||||
# DJANGO_DEBUG را ست نکنید (یا 0 بگذارید).
|
||||
#
|
||||
# ⚠️ با DJANGO_DEBUG=1 روی یک سرورِ عمومی:
|
||||
# • صفحههای خطا کلِ تنظیمات و traceback را نشان میدهند
|
||||
# • کدِ ورودِ آزمایشیِ 0000 برای هر شمارهای پذیرفته میشود،
|
||||
# یعنی هر کسی میتواند بهجای هر کاربری وارد شود
|
||||
DJANGO_DEBUG=0
|
||||
|
||||
# با DEBUG خاموش این دو اجباریاند:
|
||||
DJANGO_SECRET_KEY=
|
||||
# یک رشتهی تصادفیِ بلند. ساختنش:
|
||||
# python -c "import secrets; print(secrets.token_urlsafe(64))"
|
||||
|
||||
CACHE_URL=redis://127.0.0.1:6379/1
|
||||
# بدونِ کشِ مشترک، محدودیتِ نرخ بینِ workerهای gunicorn مشترک نیست.
|
||||
|
||||
# دامنههایی که فرم/ادمین از آنها POST میکند
|
||||
CSRF_TRUSTED_ORIGINS=https://api.math.tadrisino2.ir
|
||||
|
||||
# ─── اختیاری ─────────────────────────────────────────────────────────────
|
||||
# origin های فرانت. اگر خالی باشد از فهرستِ پیشفرضِ داخلِ کد استفاده میشود
|
||||
# که https://math.tadrisino2.ir را شامل است — معمولاً لازم نیست ست شود.
|
||||
# CORS_ALLOWED_ORIGINS=https://math.tadrisino2.ir
|
||||
|
||||
# کلیدهای سرویسهای بیرونی
|
||||
OPENAI_API_KEY=
|
||||
OPENAI_BASE_URL=https://api.gapgpt.app/v1
|
||||
QDRANT_URL=https://qdrant.tadrisino2.ir:443
|
||||
QDRANT_API_KEY=
|
||||
KAVENEGAR_API_KEY=
|
||||
KAVENEGAR_SENDER=
|
||||
|
||||
# نامِ سرویسِ systemd تا deploy.sh خودش ریاستارت کند
|
||||
# TADRISINO_SERVICE=tadrisino
|
||||
Reference in New Issue
Block a user