سه حالتِ خراب که هیچکدام در لاگِ سرور ردی نمیگذارند و فقط وقتی کشف میشدند که یک آدم از بیرون اپ را دستی امتحان کند. 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>
45 lines
2.5 KiB
Plaintext
45 lines
2.5 KiB
Plaintext
# نمونهی فایلِ .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
|