move the API's own address to mathapi.tadrisino2.ir
The API moved to mathapi.tadrisino2.ir on 2026-09-26 (nginx server_name changed at 23:22) and api.math.tadrisino2.ir no longer resolves. The code default for PUBLIC_BASE_URL and the docs' curl examples still named the dead host, so every paymentUrl, the Zarinpal callback and the Bazaar redirect the backend builds pointed nowhere. Historical status notes in CLAUDE.md keep the old name on purpose. config/tests.py now reads the API host from PUBLIC_BASE_URL instead of a literal. 624 tests green. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -39,7 +39,7 @@ poll کردنِ `/api/health`.
|
||||
## بررسیِ سلامت
|
||||
|
||||
```bash
|
||||
curl https://api.math.tadrisino2.ir/api/health
|
||||
curl https://mathapi.tadrisino2.ir/api/health
|
||||
```
|
||||
|
||||
بدونِ احرازِ هویت و بدونِ SSH میگوید: دیتابیس سالم است یا نه، مهاجرتِ
|
||||
@@ -54,8 +54,8 @@ curl https://api.math.tadrisino2.ir/api/health
|
||||
تأییدِ سریعِ اینکه API واقعاً جواب میدهد:
|
||||
|
||||
```bash
|
||||
curl -i https://api.math.tadrisino2.ir/api/schema/
|
||||
curl -i -X POST https://api.math.tadrisino2.ir/api/auth/session \
|
||||
curl -i https://mathapi.tadrisino2.ir/api/schema/
|
||||
curl -i -X POST https://mathapi.tadrisino2.ir/api/auth/session \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"type":"guest","deviceId":"verify-1"}'
|
||||
```
|
||||
@@ -88,7 +88,7 @@ PY
|
||||
sudo systemctl stop zareian-mathapp
|
||||
cp .deploy-backups/db-<timestamp>.sqlite3 db.sqlite3
|
||||
sudo systemctl start zareian-mathapp
|
||||
curl https://api.math.tadrisino2.ir/api/health
|
||||
curl https://mathapi.tadrisino2.ir/api/health
|
||||
```
|
||||
|
||||
## متغیرهای محیطی
|
||||
@@ -101,7 +101,7 @@ curl https://api.math.tadrisino2.ir/api/health
|
||||
|---|---|
|
||||
| `DJANGO_DEBUG` | خاموش (`0`) — که حالتِ درستِ پروداکشن است |
|
||||
| `DJANGO_SECRET_KEY` | یک کلیدِ تصادفیِ قوی ساخته و در `.django_secret_key` (مجوز `0600`) ذخیره میشود |
|
||||
| `PUBLIC_BASE_URL` · `FRONTEND_URL` | دامنهی فعلی (`api.math.tadrisino2.ir` / `math.tadrisino2.ir`). بقیهی تنظیمهای دامنه از همین دو ساخته میشوند؛ بخشِ «عوض کردنِ دامنه» |
|
||||
| `PUBLIC_BASE_URL` · `FRONTEND_URL` | دامنهی فعلی (`mathapi.tadrisino2.ir` / `math.tadrisino2.ir`). بقیهی تنظیمهای دامنه از همین دو ساخته میشوند؛ بخشِ «عوض کردنِ دامنه» |
|
||||
| `DJANGO_ALLOWED_HOSTS` · `CSRF_TRUSTED_ORIGINS` · `CORS_ALLOWED_ORIGINS` | از دو آدرسِ بالا ساخته میشوند؛ مقدارِ env فقط دامنهی *اضافه* است |
|
||||
| `CACHE_URL` | سرویس بالا میآید ولی نرخ بینِ workerها مشترک نیست؛ `/api/health` هشدار میدهد |
|
||||
| `KAVENEGAR_API_KEY` | `POST /api/auth/otp/request` خطای صریحِ `503` میدهد، نه موفقیتِ ساختگی |
|
||||
@@ -148,6 +148,9 @@ pendingِ همان کاربر را دوباره با زرینپال میس
|
||||
|
||||
## عوض کردنِ دامنه
|
||||
|
||||
آخرین جابهجایی: ۲۰۲۶-۰۹-۲۶، API از `api.math.tadrisino2.ir` به `mathapi.tadrisino2.ir`
|
||||
(رکوردِ DNSِ آدرسِ قبلی حذف شده). فرانت همان `math.tadrisino2.ir` ماند.
|
||||
|
||||
دامنه در کد فقط یکجا آمده: پیشفرضِ `PUBLIC_BASE_URL` و `FRONTEND_URL` در
|
||||
`config/settings.py`. `ALLOWED_HOSTS`، `CSRF_TRUSTED_ORIGINS`، `CORS_ALLOWED_ORIGINS`،
|
||||
callbackِ زرینپال، برگشت از پرداخت، `BAZAAR_REDIRECT_URI` و آدرسِ سلامت در
|
||||
@@ -159,9 +162,8 @@ callbackِ زرینپال، برگشت از پرداخت، `BAZAAR_REDIRECT_U
|
||||
1. **DNS، آروان و گواهی** برای دامنههای تازه، رو به همین سرور، و `server_name`ِ
|
||||
nginx — کارِ ادمینِ سرور، نه ما.
|
||||
2. **بکاند:** در `.env` سرور `PUBLIC_BASE_URL` و `FRONTEND_URL` را عوض کنید. تا DNS
|
||||
کامل جابهجا شود، دامنههای قبلی را هم نگه دارید:
|
||||
`DJANGO_ALLOWED_HOSTS=api.math.tadrisino2.ir,math.tadrisino2.ir` و
|
||||
`CORS_ALLOWED_ORIGINS=https://math.tadrisino2.ir`. بعد ریاستارت.
|
||||
کامل جابهجا شود، دامنههای قبلی را هم نگه دارید، مثلاً
|
||||
`DJANGO_ALLOWED_HOSTS=<دامنهی قبلیِ API>` و `CORS_ALLOWED_ORIGINS=https://<دامنهی قبلیِ فرانت>`. بعد ریاستارت.
|
||||
3. **زرینپال:** دامنهی تازهی API را در پنلِ ترمینال ثبت کنید. خطای `-14` («دامنهی
|
||||
callback با دامنهی ثبتشده نمیخواند») دقیقاً نبودنِ همین است.
|
||||
**بازار** (اگر استفاده شود): Redirect URI در پنل باید عیناً
|
||||
@@ -189,9 +191,9 @@ TEST_LOGIN_PHONES=09120000001:834512,09120000002:110947
|
||||
دیگری مسیرِ عادیِ OTP را میرود، بیهیچ تغییری.
|
||||
|
||||
```bash
|
||||
curl -X POST https://api.math.tadrisino2.ir/api/auth/otp/request \
|
||||
curl -X POST https://mathapi.tadrisino2.ir/api/auth/otp/request \
|
||||
-H 'Content-Type: application/json' -d '{"phone":"09120000001"}'
|
||||
curl -X POST https://api.math.tadrisino2.ir/api/auth/login \
|
||||
curl -X POST https://mathapi.tadrisino2.ir/api/auth/login \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"phone":"09120000001","otp":"834512"}'
|
||||
```
|
||||
@@ -222,7 +224,7 @@ curl -X POST https://api.math.tadrisino2.ir/api/auth/login \
|
||||
یک `deviceId` مشخص روی پروداکشن از قبل داده دارد:
|
||||
|
||||
```bash
|
||||
curl -X POST https://api.math.tadrisino2.ir/api/auth/session \
|
||||
curl -X POST https://mathapi.tadrisino2.ir/api/auth/session \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"type":"guest","deviceId":"frontend-test-device"}'
|
||||
```
|
||||
@@ -240,7 +242,7 @@ curl -X POST https://api.math.tadrisino2.ir/api/auth/session \
|
||||
|
||||
## سرور
|
||||
|
||||
`api.math.tadrisino2.ir` روی یک **ماشینِ مشترکِ شرکت** اجرا میشود
|
||||
`mathapi.tadrisino2.ir` روی یک **ماشینِ مشترکِ شرکت** اجرا میشود
|
||||
(`administrator@78.38.35.249`)، نه سروری که مالِ این پروژه باشد. روی همان ماشین
|
||||
Gitea، سرویسِ ایمیل، DNS، چند دیتابیس و اپهای تیمهای دیگر در حالِ کارند.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user