stop an existing .env from cancelling the defaults meant to replace it
پیشفرضهای دیروز روی یک سرورِ تازه کار میکردند ولی روی سرورِ واقعی نه، و تستِ با .env واقعی نشانش داد: هر دو حالتِ شایع خنثیشان میکرد. مقدارِ موجود ولی ناقص: .env سرور از قبل DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1 دارد. چون مقدار خالی نبود، کاملاً جایگزینِ پیشفرض میشد و دامنهی api.math.tadrisino2.ir باز هم غایب میماند — یعنی همان «Disallowed Host» قبلی، و باز هم ویرایشِ دستیِ فایل. حالا دامنههای خودمان به مقدارِ محیطی اضافه میشوند نه جایگزینش؛ همین برای CSRF_TRUSTED_ORIGINS و CORS_ALLOWED_ORIGINS هم اعمال شد. مقدارِ موجود ولی خالی: PUBLIC_BASE_URL در .env هست و خالی است، و os.environ.get فقط وقتی کلید *نباشد* پیشفرض میدهد. نتیجهاش paymentUrl نسبی و callbackِ خالیِ زرینپال بود — خرابیای که فقط موقعِ اولین پرداختِ واقعی معلوم میشود. حالا مقدارِ خالی هم به پیشفرض میافتد. این سهتا همانهاییاند که تا امروز مسئولِ سرور باید دستی به .env اضافه میکرد و چون در .env.example هم نبودند، هر بار از نو کشف میشدند. حالا در همان فایل مستند شدهاند و تست نگهبانشان است. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
26
.env.example
26
.env.example
@@ -22,13 +22,7 @@
|
||||
# تا وقتی کاربرِ واقعی ندارید اشکالی ندارد؛ قبل از اولین کاربرِ واقعی 0 کنید.
|
||||
DJANGO_DEBUG=1
|
||||
|
||||
# این سه پیشفرضِ درست دارند (api.math.tadrisino2.ir و math.tadrisino2.ir)
|
||||
# و فقط اگر دامنه عوض شد لازم میشوند.
|
||||
# DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
|
||||
# CSRF_TRUSTED_ORIGINS=
|
||||
# CORS_ALLOWED_ORIGINS=
|
||||
|
||||
# خالی بگذارید تا خودش ساخته و ذخیره شود.
|
||||
# خالی بگذارید تا خودش ساخته و در .django_secret_key ذخیره شود.
|
||||
DJANGO_SECRET_KEY=
|
||||
|
||||
# بدونِ Redis سرویس بالا میآید ولی محدودیتِ نرخ بینِ workerها مشترک نیست؛
|
||||
@@ -38,6 +32,22 @@ CACHE_URL=
|
||||
# نامِ سرویسِ systemd تا deploy.sh خودش ریاستارت کند (فقط روی سرور).
|
||||
# TADRISINO_SERVICE=
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# آدرسِ سرویس — این چهار تا پیشفرضِ درست دارند
|
||||
# -----------------------------------------------------------------------
|
||||
# تا پیش از این هر چهارتا باید دستی روی سرور اضافه میشدند، و چون در همین
|
||||
# فایل نبودند هر بار از نو کشف میشدند: نبودِ اولی یعنی «Disallowed Host»،
|
||||
# دومی یعنی ردِ ورود به پنلِ ادمین، سومی یعنی بلاک شدنِ فرانت در مرورگر، و
|
||||
# چهارمی یعنی شکستنِ بیسروصدای مسیرِ پرداخت.
|
||||
#
|
||||
# حالا هر چهارتا مقدارِ پیشفرضِ دامنهی خودمان را دارند و لازم نیست ست شوند.
|
||||
# فقط اگر دامنه عوض شد، اینها را باز کنید:
|
||||
#
|
||||
# DJANGO_ALLOWED_HOSTS=api.math.tadrisino2.ir,math.tadrisino2.ir,localhost,127.0.0.1
|
||||
# CSRF_TRUSTED_ORIGINS=https://api.math.tadrisino2.ir
|
||||
# CORS_ALLOWED_ORIGINS=https://math.tadrisino2.ir
|
||||
# PUBLIC_BASE_URL=https://api.math.tadrisino2.ir
|
||||
|
||||
# اختیاری — بدونش OTP واقعی ارسال نمیشه (فقط خطای صریح ۵۰۳ برمیگرده،
|
||||
# طبق رفتارِ موجودِ accounts/services.py)
|
||||
KAVENEGAR_API_KEY=
|
||||
@@ -84,7 +94,7 @@ RAG_FORCE_MOCK=
|
||||
# -----------------------------------------------------------------------
|
||||
# بدونِ ZARINPAL_MERCHANT_ID، مسیرِ پرداخت fail-closed میمونه (خطای صریحِ
|
||||
# ۵۰۳ بهجایِ پرداختِ ساختگیِ موفق).
|
||||
PUBLIC_BASE_URL=
|
||||
# PUBLIC_BASE_URL بالاتر توضیح داده شده؛ پیشفرض دارد.
|
||||
ZARINPAL_MERCHANT_ID=
|
||||
# 1 = محیطِ sandbox زرینپال (برای تست بدونِ پرداختِ واقعی)
|
||||
ZARINPAL_SANDBOX=1
|
||||
|
||||
Reference in New Issue
Block a user