feat: add chapter 12-deployment-and-shipping specs
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# مشخصات درسنامه: اهداف فصل دوازدهم (Chapter Goals)
|
||||
- **شناسه در سیلابس:** `L12.1`
|
||||
- **فصل:** فصل ۱۲: انتشار روی اینترنت (Ch 12)
|
||||
- **نوع محتوا:** 📘 درسنامه متنی
|
||||
- **زمان تقریبی مطالعه:** ۵ دقیقه
|
||||
- **پیشنیازهای مستقیم:** `L11.9` (هزینه، مالکیت و اخلاق حرفهای)
|
||||
|
||||
---
|
||||
|
||||
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
|
||||
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
|
||||
- [ ] **درک کند (Understand):** چرا تا زمانی که یک وبسایت روی اینترنت عمومی منتشر نشده باشد، تنها یک فایل تفننی روی کامپیوتر شخصی است و دیپلوی کردن (Shipping) نقطه تولد واقعی محصول است.
|
||||
- [ ] **درک کند (Understand):** نقشه راه ۷ درسنامه تخصصی فصل دوازدهم شامل: تمایز محیطهای توسعه و تولید (Dev vs Staging vs Prod)، مفاهیم پایه وب (Domain, DNS, SSL, CDN)، انتخاب پلتفرم ابری (PaaS)، استقرار عملی با لیارا (Liara) و ورسل (Vercel)، پیکربندی متغیرهای محیطی پروداکشن، و اتصال دامنه اختصاصی به همراه ابر آروان و Cloudflare را بشناسد.
|
||||
- [ ] **تحلیل/ارزیابی کند (Evaluate):** رویکرد دوگانه میزبانی (پلتفرم داخلی لیارا برای دسترسپذیری پایدار ملی در برابر Vercel برای استانداردهای جهانی) را ارزیابی کند.
|
||||
- [ ] **بهکار ببندد (Apply):** پورتفولیوی شخصی، پنل ادمین، دیتابیس Supabase، و تمام یکپارچهسازیهای پیامک، ایمیل و هوش مصنوعی را به صورت زنده و با پروتکل امن HTTPS روی یک دامنه اینترنتی واقعی مستقر سازد.
|
||||
|
||||
---
|
||||
|
||||
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
|
||||
|
||||
### آنچه باید پوشش داده شود (In-Scope):
|
||||
1. **ورود به نقطه اوج دوره: انتشار به سوی جهان (Shipping):**
|
||||
* تبدیل کدها از `localhost:3000` به یک آدرس اینترنتی معتبر که هر کسی در دنیا با موبایل یا لپتاپ بتواند آن را باز کند.
|
||||
2. **مرور سرفصلهای تخصصی فصل ۱۲:**
|
||||
* درس ۱۲.۲: محیطهای توسعه و تولید؛ تفاوت Development، Staging و Production و نحوه کار کامپایلر بیلد (`npm run build`).
|
||||
* درس ۱۲.۳: الفبای وب برای انتشار؛ دامین، هاست، سرورهای نام (DNS)، گواهی امنیتی SSL/TLS، و شبکه توزیع محتوا (CDN).
|
||||
* درس ۱۲.۴: انتخاب مدل میزبانی مدرن؛ چرا دور دوران هاستهای سنتی سیپنل گذشته و پلتفرمهای ابری (PaaS) حکومت میکنند؟
|
||||
* درس ۱۲.۵: استقرار عملی پروژه؛ دیپلوی خودکار مبتنی بر گیت با لیارا (Liara) و ورسل (Vercel) و اتصال دیتابیس پروداکشن.
|
||||
* درس ۱۲.۶: تنظیمات محیط واقعی؛ تزریق متغیرهای محیطی محرمانه در داشبورد ابری و تفاوت آدرسهای Localhost با Production URL.
|
||||
* درس ۱۲.۷: اتصال دامنه اختصاصی؛ تنظیم رکوردهای A و CNAME، فعالسازی SSL رایگان و استفاده از Cloudflare و ابر آروان.
|
||||
3. **تمرکز بر پروژه پورتفولیو:**
|
||||
* انتشار ویترین رزومه شخصی به همراه چتبات آنلاین، درگاه پرداخت و پنل ادمین با دامنه اختصاصی دانشجو.
|
||||
4. **دستورات چندسکویی برای نصب CLIهای استقرار:**
|
||||
* منوهای کشویی ویندوز، مک و لینوکس برای نصب ابزارهای خط فرمان لیارا و ورسل.
|
||||
5. **کالاوتهای کوئرا:**
|
||||
* کالاوت سبز (`<details class="green">`): انگیزه و شعف حاصل از ارسال اولین لینک عمومی به دوستان و کارفرمایان.
|
||||
|
||||
### آنچه نباید وارد آن شویم (Out-of-Scope):
|
||||
- مانیتورینگ بلادرنگ، لاگین ارورها با Sentry و تحلیل رفتار کاربر (فصل ۱۳).
|
||||
- کانفیگ دستی کانتینرهای داکر روی سرورهای خام مجازی لینوکس (VPS با دستورات کرنل).
|
||||
|
||||
---
|
||||
|
||||
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
|
||||
|
||||
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|
||||
| :--- | :--- | :--- |
|
||||
| Deployment (Shipping) | استقرار / انتشار نهایی | فرآیند بارگذاری، کامپایل و اجرای برنامه روی سرورهای ابری برای دسترسی همگانی کاربران اینترنت |
|
||||
| PaaS (Platform as a Service) | پلتفرم به عنوان سرویس | سرویسهای ابری مدرن که مدیریت سرور، لینوکس و امنیت را بر عهده گرفته و شما فقط کد را تحویل میدهید |
|
||||
| Production Environment | محیط تولید / پروداکشن | محیط واقعی و آنلاین اجرای نرمافزار که کاربران و مشتریان واقعی از آن استفاده میکنند |
|
||||
| DNS (Domain Name System) | سامانه نام دامنه | دفترچه تلفن اینترنت که نامهای متنی خوانا (مثل سایت شما) را به آدرسهای عددی سرور (IP) تبدیل میکند |
|
||||
| CDN (Content Delivery Network) | شبکه توزیع محتوا | شبکهای از سرورهای جهانی که فایلهای سایت را در نزدیکترین شهر به کاربر کپی و با حداکثر سرعت تحویل میدهند |
|
||||
|
||||
---
|
||||
|
||||
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
|
||||
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
|
||||
|
||||
1. **تصویر کاور درس:** `images/cover.png`
|
||||
* **موضوع:** موشک نئونی مدرن که از روی کیبورد لپتاپ به سمت کره زمین دیجیتال پرتاب میشود و آدرس دامنه اینترنتی را به آسمان متصل میکند.
|
||||
2. **نقشه راه جامع فصل ۱۲:** `images/chapter-12-roadmap.png`
|
||||
* **موضوع:** اینفوگرافیک ۷ مرحلهای فصل ۱۲ با نمادهای محیطها، DNS، ورسل/لیارا، بیلد، متغیرهای ابری، و ابر آروان/کلودفلر.
|
||||
3. **گذار از لوکالهاست به اینترنت جهانی:** `images/localhost-to-global-web.png`
|
||||
* **موضوع:** تصویر مقایسهای: لپتاپ شخصی در خانه با برچسب localhost:3000 در برابر شبکه سرورهای ابری پروداکشن با نماد قفل سبز HTTPS.
|
||||
|
||||
---
|
||||
|
||||
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
|
||||
|
||||
1. **تیتر اصلی:** `# اهداف فصل دوازدهم: انتشار روی اینترنت؛ تولد رسمی محصول شما در جهان وب`
|
||||
2. **مقدمه کوتاه:** چرا تا زمانی که پروژهتان آدرس اینترنتی ندارد، انگار وجود خارجی ندارد؟
|
||||
3. **جدول کاور درس**
|
||||
4. **سرفصلهای طلایی فصل در یک نگاه:** مرور ۷ ایستگاه استقرار و پرواز محصول.
|
||||
5. **جدول نقشه راه یادگیری فصل**
|
||||
6. **معرفی پلتفرمهای میزبان این فصل:** لیارا برای سرعت و دسترسی پایدار داخلی، و Vercel برای استانداردهای بینالمللی.
|
||||
7. **پورتفولیوی شخصی در جهان واقعی:** داشتن یک لینک اختصاصی با دامنه شخصی برای درج در رزومه و پروفایل لینکدین.
|
||||
8. **کالاوت هیجانانگیز Quera (`<details class="green">`):** آمادهسازی برای فشردن دکمه پرتاب؛ پروژهای که از ایده خام شروع شد، اکنون به دروازه اینترنت رسیده است!
|
||||
|
||||
---
|
||||
|
||||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||||
- [ ] اهداف کلان فصل ۱۲ و اهمیت استقرار عمومی (Shipping) به شکل الهامبخش تبیین شود.
|
||||
- [ ] سرفصلهای ۷ درسنامه بعدی با ذکر ابزارهای مصوب (لیارا، ورسل، کلودفلر، ابر آروان) معرفی گردند.
|
||||
- [ ] مفاهیم بنیادین میزبانی ابری و رویکرد دوگانه به صورت روان تشریح شوند.
|
||||
@@ -0,0 +1,119 @@
|
||||
# مشخصات درسنامه: محیطهای توسعه، پیشنمایش و تولید (Dev, Staging, Prod) و جادوی Build
|
||||
- **شناسه در سیلابس:** `L12.2`
|
||||
- **فصل:** فصل ۱۲: انتشار روی اینترنت (Ch 12)
|
||||
- **نوع محتوا:** 📘 درسنامه متنی
|
||||
- **زمان تقریبی مطالعه:** ۱۵ دقیقه
|
||||
- **پیشنیازهای مستقیم:** `L12.1` (اهداف فصل دوازدهم)
|
||||
|
||||
---
|
||||
|
||||
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
|
||||
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
|
||||
- [ ] **درک کند (Understand):** تفاوتهای کلیدی میان سه محیط کاری نرمافزار شامل محیط توسعه محلی (Development)، محیط پیشنمایش یا آزمایشی (Staging/Preview) و محیط زنده نهایی (Production) را شرح دهد.
|
||||
- [ ] **تحلیل/ارزیابی کند (Evaluate):** چرا اجرای سرور توسعه (`npm run dev`) روی سرورهای واقعی پروداکشن یک فاجعه عملکردی و امنیتی است و کامپایلر بیلد (`npm run build`) چه تحولی در فشردهسازی کدها ایجاد میکند.
|
||||
- [ ] **بهکار ببندد (Apply):** پروژه پورتفولیو را در حالت تولید محلی با دو دستور متوالی `npm run build` و `npm run start` اجرا کرده و سرعت و رفتار آن را مقایسه نماید.
|
||||
- [ ] **ایجاد کند (Create):** خطاهای زمان کامپایل (Compile-time Type Errors) را پیش از ارسال به سرور شناسایی کرده و کدهای آماده استقرار تولید کند.
|
||||
|
||||
---
|
||||
|
||||
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
|
||||
|
||||
### آنچه باید پوشش داده شود (In-Scope):
|
||||
1. **داستان ۳ صحنه اجرای تئاتر: اتاق تمرین، اجرای بازبینی، و شب افتتاحیه:**
|
||||
* توسعه (Development): اتاق تمرین با شلختگی، تغییرات لحظهای و بازخورد سریع به بازیگران.
|
||||
* پیشنمایش (Staging): اجرای آزمایشی با گریم و دکور برای منتقدان و دوستان.
|
||||
* تولید (Production): سالن پر از تماشاگران واقعی با بلیت خریداریشده که هیچ خطایی در آن بخشیده نمیشود.
|
||||
2. **پشت پرده فرآیند بیلد (`npm run build`) در Next.js:**
|
||||
* ممیزی تایپاسکریپت: کامپایلر تمام فایلها را چک میکند؛ وجود حتی یک خطای تایپ، بیلد را متوقف میکند تا باگ به کاربران نرسد.
|
||||
* بهینهسازی درخت کد (Tree-shaking): حذف تمام کدهای اضافه و توابعی که استفاده نشدهاند.
|
||||
* فشردهسازی و کوچکسازی (Minification): حذف فاصلهها و کوتاهسازی متغیرها برای تبدیل فایلهای مگابایتی به چند کیلوبایت.
|
||||
* پیشرندر استاتیک (Static Generation): ساخت صفحات HTML از قبل برای بارگذاری برقآسا.
|
||||
3. **شبیهسازی محیط پروداکشن روی کامپیوتر شخصی:**
|
||||
* اجرای `npm run build` و سپس `npm run start`.
|
||||
* مشاهده حذف پردههای قرمز خطای توسعه و تجربه سرعت شگفتانگیز لود صفحات.
|
||||
4. **دستورات چندسکویی برای بیلد و تست سرور پروداکشن:**
|
||||
* دستورات در منوهای کشویی ویندوز، مک و لینوکس:
|
||||
- `npm run build`
|
||||
- `npm run start`
|
||||
5. **کالاوتهای آموزشی و هشدار کوئرا:**
|
||||
* کالاوت بنفش (`<details class="violet">`): مفهوم استقرار پیشنمایش (Preview Deployments) بر روی هر شاخه گیت (Pull Request).
|
||||
* کالاوت سبز (`<details class="green">`): احساس سبکبالی وقتی `npm run build` با تمام صفحات سبزرنگ با موفقیت به پایان میرسد.
|
||||
* کالاوت قرمز (`<details class="red">`): اشتباه مرگبار؛ هرگز روی سرورهای ابری واقعی دستور `npm run dev` را ران نکنید (مصرف سرسامآور رم و سیپییو و افشای سورسمپها).
|
||||
|
||||
### آنچه نباید وارد آن شویم (Out-of-Scope):
|
||||
- خطوط لوله پیچیده CI/CD در GitHub Actions با پایپلاینهای چندمرحلهای (فصل ۱۳).
|
||||
- کانفیگ دستی وبهوکهای گیتلب یا سرورهای Jenkins.
|
||||
|
||||
---
|
||||
|
||||
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
|
||||
|
||||
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|
||||
| :--- | :--- | :--- |
|
||||
| Development Mode | حالت توسعه | محیط کاری اولیه با قابلیت بارگذاری آنی تغییرات (Hot Reload) و لاگهای مفصل برای راحتی کدنویسی |
|
||||
| Production Mode | حالت تولید و بهرهبرداری | نسخه نهایی و کاملاً بهینهشده، فشرده، امن و سریع نرمافزار برای کاربران نهایی |
|
||||
| Staging / Preview | محیط پیشنمایش و آزمایشی | کپی یکبهیک از محیط واقعی با دامنه موقت برای تست پیش از ادغام نهایی تغییرات |
|
||||
| Build Process | فرآیند ساخت و کامپایل | تبدیل کدهای توسعه انسانی (JSX, TS) به بستههای فوقفشرده، مینیمایز شده و بهینه برای مرورگر |
|
||||
| Tree Shaking | شاخهتکانی کد | تکنیک هوشمند حذف خودکار کدهای بیاستفاده کتابخانهها برای کاهش حجم نهایی فایلها |
|
||||
| Minification | کوچکسازی کد | فرآیند فشردهسازی متن کد با حذف فاصلهها و کوتاه کردن نام متغیرها بدون تغییر در منطق برنامه |
|
||||
|
||||
---
|
||||
|
||||
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
|
||||
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
|
||||
|
||||
1. **تصویر کاور درس:** `images/cover.png`
|
||||
* **موضوع:** سه مانیتور در کنار هم با نورپردازیهای متفاوت: زرد (اتاق کدنویسی Dev)، آبی (محیط تست Staging)، و سبز نئونی درخشان (محیط زنده Prod).
|
||||
2. **چرخه ارتقای کد در ۳ محیط کاری:** `images/dev-staging-prod-pipeline.png`
|
||||
* **موضوع:** فلوچارت انتقال: لوکالهاست توسعه $\rightarrow$ بیلد موفق $\rightarrow$ استقرار پیشنمایش تستی $\rightarrow$ تایید نهایی $\rightarrow$ استقرار پروداکشن برای عموم.
|
||||
3. **کالبدشکافی فرآیند بیلد در ترمینال:** `images/nextjs-build-output-anatomy.png`
|
||||
* **موضوع:** اسکرینشات از خروجی رنگی `npm run build` با علائم دایره سبز (Static Pages) و علامت لامپ (Server-rendered Pages) و حجم هر صفحه.
|
||||
4. **تفاوت سرعت و حجم کد توسعه در برابر کد بیلدشده:** `images/minification-and-tree-shaking.png`
|
||||
* **موضوع:** اینفوگرافیک مقایسهای: فایلهای حجیم خوانای انسانی ۵ مگابایتی در برابر فایل فشرده مینیفایشده ۲۰۰ کیلوبایتی پرسرعت.
|
||||
|
||||
---
|
||||
|
||||
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
|
||||
|
||||
1. **تیتر اصلی:** `# محیطهای توسعه، پیشنمایش و تولید (Dev, Staging, Prod) و جادوی Build`
|
||||
2. **مقدمه:** چرا کدی که روی لپتاپ شما با `npm run dev` کار میکند، نباید با همان دستور به روی صحنه پروداکشن برود؟
|
||||
3. **جدول کاور درس**
|
||||
4. **استعاره خیاطی و لباس مجلسی:**
|
||||
* در کارگاه خیاطی سوزن و اضافه پارچهها روی زمین است (Dev)، اما مشتری لباس پرو شده و اتوکشیده شیک تحویل میگیرد (Prod).
|
||||
5. **معرفی سهگانه مقدس محیطهای نرمافزار:**
|
||||
* Development: سرعت بالا، لاگهای پر سر و صدا.
|
||||
* Staging: زمین تمرین شبیهسازی شده بدون دسترسی عموم.
|
||||
* Production: استانداردهای سخت، قفلهای محکم و بالاترین سرعت ممکن.
|
||||
6. **موتورخانه بیلد (`npm run build`)؛ چه اتفاقی پشت صحنه میافتد؟**
|
||||
* کامپایل تایپها، شاخهتکانی کدهای زاید، مینیفای کردن استایلها و بهینهسازی تصاویر.
|
||||
7. **کالبدشکافی جدول خروجی بیلد Next.js:**
|
||||
* شناخت صفحات استاتیک (دایرههای توپر) و صفحات پویا (علامت لامپ `f`).
|
||||
8. **آزمایش شبیهسازی پروداکشن با `npm run start`:**
|
||||
* دستورات چندسکویی برای بیلد و ران کردن در ویندوز، مک و لینوکس:
|
||||
- Windows (PowerShell):
|
||||
```powershell
|
||||
npm run build
|
||||
npm run start
|
||||
```
|
||||
- macOS (Terminal):
|
||||
```bash
|
||||
npm run build
|
||||
npm run start
|
||||
```
|
||||
- Linux (Bash):
|
||||
```bash
|
||||
npm run build
|
||||
npm run start
|
||||
```
|
||||
9. **باکس نکته Quera (`<details class="violet">`):** چرایی اهمیت شکست بیلد (Build Error)؛ متوقف شدن بیلد بخاطر خطای تایپ یک لطف بزرگ از طرف کامپایلر است، نه یک مانع!
|
||||
10. **باکس هشدار Quera (`<details class="red">`):** هرگز از ابزارهایی مثل `ignoreBuildErrors: true` در `next.config.js` به عنوان راه فرار استفاده نکنید؛ باگهای پنهان محصول را نابود میکنند.
|
||||
11. **باکس رضایتبخش Quera (`<details class="green">`):** حس فوقالعاده باز کردن پورت ۳۰۰۰ در حالت start و لمس سرعت خیرهکننده سایت بدون کوچکترین تاخیر.
|
||||
12. **جمعبندی درسنامه:** شناخت کامل فاز بیلد و محیطها؛ ورود به الفبای بنیادین وب برای انتشار (دامنه، DNS، SSL و CDN) در درس بعدی.
|
||||
|
||||
---
|
||||
|
||||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||||
- [ ] تفاوتهای سهگانه Dev، Staging و Production با مثالهای ملموس شرح داده شود.
|
||||
- [ ] مراحل فرآیند بیلد (Tree-shaking, Minification, SSG) به روشنی تشریح گردد.
|
||||
- [ ] شیوه اجرای تست پروداکشن محلی (`npm run start`) به صورت چندسکویی ارائه شود.
|
||||
- [ ] کالاوتهای هشداری درباره ممنوعیت اجرای Dev روی سرور واقعی لحاظ شود.
|
||||
@@ -0,0 +1,107 @@
|
||||
# مشخصات درسنامه: الفبای وب برای انتشار؛ دامین، هاست، DNS، گواهی SSL و شبکه CDN
|
||||
- **شناسه در سیلابس:** `L12.3`
|
||||
- **فصل:** فصل ۱۲: انتشار روی اینترنت (Ch 12)
|
||||
- **نوع محتوا:** 📘 درسنامه متنی
|
||||
- **زمان تقریبی مطالعه:** ۱۸ دقیقه
|
||||
- **پیشنیازهای مستقیم:** `L12.2` (محیطهای توسعه و تولید)
|
||||
|
||||
---
|
||||
|
||||
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
|
||||
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
|
||||
- [ ] **درک کند (Understand):** نقش ۵ رکن بنیادین شبکه جهانی وب شامل دامنه (Domain)، سرور میزبان (Host/Server)، سامانه نام دامنه (DNS)، گواهی امنیتی (SSL/TLS)، و شبکه توزیع محتوا (CDN) را در تحویل صفحات وب شرح دهد.
|
||||
- [ ] **تحلیل/ارزیابی کند (Evaluate):** ساختار انواع رکوردهای پرکاربرد DNS شامل رکوردهای A، CNAME، TXT و NS را تحلیل کرده و تفاوت آدرسدهی مستقیم IP با نام مستعار را تمیز دهد.
|
||||
- [ ] **بهکار ببندد (Apply):** نحوه کارکرد رمزنگاری ترافیک با گواهی SSL و چرخه صدور خودکار آن را درک کرده و خطای محتوای ترکیبی (Mixed Content) را در پروژه برطرف کند.
|
||||
- [ ] **ایجاد کند (Create):** یک جدول نگاشت ذهنی از رکوردهای مورد نیاز پورتفولیو (اتصال به سرور لیارا/ورسل، اعتبارسنجی مالکیت دامنه، و تنظیمات سابدامینها) تدوین کند.
|
||||
|
||||
---
|
||||
|
||||
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
|
||||
|
||||
### آنچه باید پوشش داده شود (In-Scope):
|
||||
1. **استعاره آدرس پستی، خانه فیزیکی و دفترچه تلفن ۱۱۸:**
|
||||
* هاست/سرور: خانه فیزیکی با موقعیت جغرافیایی ثابت (IP).
|
||||
* دامنه: آدرس سرراست و خوانای خانه (خیابان ولیعصر، پلاک ۴).
|
||||
* سامانه DNS: سامانه ۱۱۸ اینترنت که وقتی نام را میگویید، شماره تماس (IP) را تحویل میدهد.
|
||||
2. **کالبدشکافی ساختار یک دامنه اینترنتی (Domain Anatomy):**
|
||||
* پسوند مرتبهاول (TLD: Top-Level Domain): دامنههای عمومی (`.com`, `.net`)، دامنههای تخصصی فنی (`.dev`, `.io`)، و دامنههای ملی (`.ir`).
|
||||
* نام اصلی دامنه (SLD): برند یا نام شما (مانند `alireza-dev`).
|
||||
* زیردامنه (Subdomain): پیشوندها برای تفکیک بخشهای پروژه (مانند `admin.mysite.ir` یا `api.mysite.ir`).
|
||||
3. **جعبه ابزار رکوردهای حیاتی DNS:**
|
||||
* رکورد `A` (Address): اتصال مستقیم نام دامنه به یک آدرس عددی IPv4 (مثل `185.143.232.10`).
|
||||
* رکورد `CNAME` (Canonical Name): اتصال یک نام به نام دامنه دیگر (مانند وصل کردن `www` یا سابدامین به سرورهای لیارا یا ورسل).
|
||||
* رکورد `TXT`: ثبت کدهای تایید متنی برای اثبات مالکیت سایت به سرچ کنسول گوگل یا فعالسازی ارسال ایمیل (SPF/DKIM).
|
||||
* رکورد `NS` (Name Server): تعیین اینکه کدام سرور مدیریت رکوردهای دامنه شما را در دست دارد (ابر آروان یا کلودفلر).
|
||||
4. **گواهی SSL/TLS و قفل سبز امنیتی:**
|
||||
* چرا مرورگرها به سایتهای `http://` برچسب «ناامن» (Not Secure) میزنند و دادهها را رمزنگاری نمیکنند؟
|
||||
* گواهیهای رایگان Let's Encrypt و صدور خودکار SSL توسط پلتفرمهای ابری مدرن بدون نیاز به پرداخت حتی یک ریال.
|
||||
5. **شبکه توزیع محتوا (CDN - Content Delivery Network):**
|
||||
* چرا وقتی کاربر در شیراز یا تبریز یا آلمان سایت را باز میکند، باید عکسها را از نزدیکترین دیتاسنتر دریافت کند؟
|
||||
* کاهش تاخیر، صرفهجویی در پهنای باند و مقاومت در برابر قطعیهای موضعی اینترنت.
|
||||
6. **کالاوتهای آموزشی و هشدار کوئرا:**
|
||||
* کالاوت بنفش (`<details class="violet">`): پدیده انتشار DNS (DNS Propagation) و مفهوم زمان انقضا (TTL)؛ چرا اعمال تغییرات DNS گاهی از چند دقیقه تا چند ساعت زمان میبرد.
|
||||
* کالاوت سبز (`<details class="green">`): ابزارهای آنلاین رایگان مثل DNSChecker.org برای بررسی جهانی انتشار رکوردهای دامنه.
|
||||
* کالاوت قرمز (`<details class="red">`): خطای محتوای ترکیبی (Mixed Content)؛ اگر سایتی با HTTPS لود شود اما عکسی را با آدرس `http://` فراخوانی کند، قفل امنیتی سبز میشکند!
|
||||
|
||||
### آنچه نباید وارد آن شویم (Out-of-Scope):
|
||||
- پیکربندی پروتکلهای مسیریابی لایه زیرساخت نظیر BGP و Anycast.
|
||||
- خرید گواهیهای گرانقیمت سازمانی EV (Extended Validation) با تاییدیه مدارک شرکتی.
|
||||
|
||||
---
|
||||
|
||||
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
|
||||
|
||||
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|
||||
| :--- | :--- | :--- |
|
||||
| DNS Record | رکورد دیاناس | یک خط تنظیم دستوری در سرور نام که نحوه هدایت ترافیک دامنه به سرویسها را مشخص میکند |
|
||||
| A Record | رکورد نشانی آیپی | رکورد پایهای DNS که نام دامنه را مستقیماً به آدرس IPv4 سرور متصل مینماید |
|
||||
| CNAME Record | رکورد نام مستعار | رکوردی که یک دامنه را به عنوان مستعاری از یک آدرس دامنه اینترنتی دیگر تعریف میکند |
|
||||
| SSL/TLS Certificate | گواهی امنیت ارتباطات | سند دیجیتال رمزنگاری که امنیت و محرمانگی تبادل داده میان مرورگر و سرور را تضمین میکند |
|
||||
| Mixed Content | محتوای ترکیبی ناامن | وضعیت بارگذاری برخی منابع (عکس، فونت) با پروتکل ناامن HTTP در یک صفحه امن HTTPS |
|
||||
| TTL (Time to Live) | زمان ماندگاری کش | مدت زمانی به ثانیه که سرورهای اینترنت مجاز به ذخیره و بازخوانی نتایج یک رکورد DNS هستند |
|
||||
|
||||
---
|
||||
|
||||
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
|
||||
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
|
||||
|
||||
1. **تصویر کاور درس:** `images/cover.png`
|
||||
* **موضوع:** شبکه نوری نقشه جهانی وب که کابلهای فیبر نوری، سرورها، آیکون قفل سبز HTTPS و دامنههای متصل را نشان میدهد.
|
||||
2. **سفر یک درخواست از تایپ آدرس تا نمایش صفحه:** `images/dns-resolution-flow.png`
|
||||
* **موضوع:** اینفوگرافیک گامبهگام: کاربر آدرس را تایپ میکند $\rightarrow$ استعلام از DNS سرور $\rightarrow$ دریافت IP $\rightarrow$ سرور ابری $\rightarrow$ پاسخ رمزنگاریشده HTTPS $\rightarrow$ نمایش صفحه.
|
||||
3. **کالبدشکافی انواع رکوردهای پرکاربرد DNS:** `images/dns-records-infographic.png`
|
||||
* **موضوع:** تصویر گرافیکی مقایسهای: رکورد A (فلش مستقیم به IP)، رکورد CNAME (فلش به نام دامنه سرور ابری)، و رکورد TXT (متن تایید مالکیت).
|
||||
4. **نحوه کارکرد شبکه توزیع محتوا (CDN):** `images/cdn-edge-caching-diagram.png`
|
||||
* **موضوع:** دیاگرام کره زمین: سرور اصلی در تهران یا فرانکفورت، و سرورهای لبه CDN در شهرهای مختلف که عکسها را بلافاصله به کاربر محلی تحویل میدهند.
|
||||
|
||||
---
|
||||
|
||||
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
|
||||
|
||||
1. **تیتر اصلی:** `# الفبای وب برای انتشار؛ دامین، هاست، DNS، گواهی SSL و شبکه CDN`
|
||||
2. **مقدمه:** وقتی آدرس سایت خود را در مرورگر تایپ میکنید، در آن کسری از ثانیه پشت صحنه چه اتفاق شگفتانگیزی در کابلهای زیر اقیانوسها میافتد؟
|
||||
3. **جدول کاور درس**
|
||||
4. **استعاره ارسال یک بسته پستی از آن سوی دنیا:**
|
||||
* نام گیرنده (دامنه)، کد پستی عددی (IP)، اداره پست محلی (DNS)، کامیون پلمپشده (SSL)، و انبارهای پخش محلی (CDN).
|
||||
5. **ساختار دامنه: چگونه یک نام حرفهای برای پورتفولیو انتخاب کنیم؟**
|
||||
* تفاوت دامنههای ملی (`.ir`) با دامنههای بینالمللی (`.com`, `.dev`).
|
||||
* سابدامینها و کاربرد آنها در معماری سایت.
|
||||
6. **سامانه نام دامنه (DNS)؛ دفترچه تلفن نامرئی اینترنت:**
|
||||
* کالبدشکافی رکوردهای A، CNAME، TXT و NS.
|
||||
7. **گواهی امنیتی SSL/TLS: پایان دوران برچسب قرمز «ناامن»:**
|
||||
* چرا گوگل سایتهای بدون HTTPS را جریمه میکند؟
|
||||
* صدور خودکار گواهی در پلتفرمهای مدرن با پروتکل ACME.
|
||||
8. **شبکه توزیع محتوا (CDN)؛ سرعت موشکی در هر نقطه جغرافیایی:**
|
||||
* کش کردن فایلهای استاتیک و سپرهای محافظتی در برابر حملات خرابکارانه.
|
||||
9. **باکس نکته Quera (`<details class="violet">`):** مفهوم پدیده انتشار DNS (Propagation)؛ چرا بعد از تغییر رکوردها باید کمی صبور باشید و چطور وضعیت جهانی را در DNSChecker چک کنید.
|
||||
10. **باکس هشدار Quera (`<details class="red">`):** خطای Mixed Content؛ اطمینان حاصل کنید تمام لینکهای فونت، عکس و اسکریپتها با `https://` فراخوانی میشوند.
|
||||
11. **باکس رضایتبخش Quera (`<details class="green">`):** اکنون شما به زبان بینالمللی زیرساخت وب مسلط شدهاید و آماده انتخاب پلتفرم ابری در درس بعدی هستید.
|
||||
12. **جمعبندی درسنامه:** تسلط بر مفاهیم بنیادین وب؛ ورود به درس هیجانانگیز انتخاب مدل استقرار و پلتفرمهای ابری (PaaS) در درس بعدی.
|
||||
|
||||
---
|
||||
|
||||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||||
- [ ] ارکان پنجگانه وب (دامین، هاست، DNS، SSL و CDN) با استعارههای ملموس تبیین گردند.
|
||||
- [ ] چهار رکورد حیاتی DNS (A, CNAME, TXT, NS) و کاربرد هر یک به صورت دقیق شرح داده شود.
|
||||
- [ ] اهمیت گواهی امنیتی HTTPS و خطای Mixed Content تشریح شود.
|
||||
- [ ] مفهوم انتشار DNS و ابزارهای اعتبارسنجی آنلاین معرفی شوند.
|
||||
@@ -0,0 +1,99 @@
|
||||
# مشخصات درسنامه: تکامل میزبانی وب؛ چرا PaaS و استقرار مبتنی بر گیت (Git-based Deploy) برنده شد؟
|
||||
- **شناسه در سیلابس:** `L12.4`
|
||||
- **فصل:** فصل ۱۲: انتشار روی اینترنت (Ch 12)
|
||||
- **نوع محتوا:** 📘 درسنامه متنی
|
||||
- **زمان تقریبی مطالعه:** ۱۶ دقیقه
|
||||
- **پیشنیازهای مستقیم:** `L12.3` (الفبای وب برای انتشار)
|
||||
|
||||
---
|
||||
|
||||
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
|
||||
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
|
||||
- [ ] **درک کند (Understand):** سیر تکامل هاستینگ وب از هاستهای اشتراکی سیپنل (cPanel) تا سرورهای مجازی (VPS) و انقلاب نهایی پلتفرم به عنوان سرویس (PaaS) را شرح دهد.
|
||||
- [ ] **تحلیل/ارزیابی کند (Evaluate):** هزینههای پنهان نگهداری سرور شخصی (کانفیگ Nginx، لینوکس، مدیریت پورتها، فایروال و اسکریپتهای تجدید SSL) را در برابر سادگی استقرار خودکار PaaS مقایسه کند.
|
||||
- [ ] **درک کند (Understand):** جادوی استقرار مبتنی بر گیت (Git-based Deployment) را بشناسد که در آن هر دستور `git push` به شاخه اصلی، مستقیماً به نسخه جدید سایت زنده تبدیل میشود.
|
||||
- [ ] **بهکار ببندد (Apply):** ماتریس تصمیمگیری انتخاب پلتفرم ابری مناسب برای پروژه پورتفولیو و استارتاپهای آینده را با ارزیابی پلنهای رایگان (Free Tier) تحلیل و انتخاب نماید.
|
||||
|
||||
---
|
||||
|
||||
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
|
||||
|
||||
### آنچه باید پوشش داده شود (In-Scope):
|
||||
1. **داستان دردناک برنامهنویسان در گذشته در برابر بهشت امروز وایب کدرها:**
|
||||
* دوران هاستهای cPanel و آپلود دستی فایلها با FileZilla و درگیری با ارورهای عجیب PHP.
|
||||
* دوران سرور مجازی (VPS): نصف وقت صرف کدنویسی و نصف دیگر صرف کانفیگ سرور اوبونتو، دستورات SSH، تنظیم رورس پروکسی Nginx و سر و کله زدن با حافظه رم!
|
||||
2. **پلتفرم به عنوان سرویس (PaaS)؛ جادوی استقرار در ۶۰ ثانیه:**
|
||||
* پلتفرمهای مدرن مثل Vercel، Liara، Netlify و Railway چه کاری انجام میدهند؟
|
||||
* شما فقط مخزن گیتهاب را متصل میکنید؛ پلتفرم خودش Next.js را تشخیص میدهد، پکیجها را نصب میکند، بیلد میگیرد و در دهها سرور ابری توزیع میکند.
|
||||
3. **چرخه استقرار مبتنی بر گیت (Git-based Deployment Loop):**
|
||||
* کامیت تغییرات در شاخه اصلی (`main`) $\rightarrow$ ارسال به گیتهاب با `git push` $\rightarrow$ وبهوک خودکار به سرور ابری $\rightarrow$ اجرای بیلد در کانتینر ایزوله $\rightarrow$ تعویض نسخه بدون حتی یک ثانیه قطعی (Zero-Downtime Deployment).
|
||||
4. **پلنهای رایگان و اقتصادی توسعهدهندگان (Free Tier & Fair Use):**
|
||||
* پلن Hobby در Vercel: کاملاً رایگان برای پروژههای شخصی و پورتفولیو با پهنای باند سخاوتمندانه.
|
||||
* پلتفرم بومی لیارا: ارائه اعتبار هدیه تست و پلنهای مقیاسپذیر اقتصادی با پرداخت ریالی برای تضمین سرعت بالا درون شبکه ملی.
|
||||
5. **جدول مقایسهای ۳ مدل میزبانی:**
|
||||
* مقایسه cPanel vs VPS vs PaaS از منظر: سرعت راهاندازی، مهارتهای لینوکس مورد نیاز، مقیاسپذیری خودکار، هزینه زمانی و هزینه مالی.
|
||||
6. **کالاوتهای آموزشی و هشدار کوئرا:**
|
||||
* کالاوت بنفش (`<details class="violet">`): پدیده شروع سرد (Cold Start) در توابع سرورلس و نحوه برطرف شدن آن در نسل جدید پلتفرمهای لبه (Edge).
|
||||
* کالاوت سبز (`<details class="green">`): تمرکز ۱۰۰٪ روی خلق ویژگیهای محصول به جای تبدیل شدن به یک متخصص سرور و DevOps.
|
||||
* کالاوت قرمز (`<details class="red">`): شرایط استفاده جوانمردانه (Fair Use Policy) در ورسل؛ پورتفولیوی شخصی و رزومه مجاز است، اما پروژههای پردرآمد تجاری بزرگ نیازمند پلن Pro هستند.
|
||||
|
||||
### آنچه نباید وارد آن شویم (Out-of-Scope):
|
||||
- مباحث ارکستراسیون کانتینرها با کوبرنتیز (Kubernetes) سازمانی.
|
||||
- خطوط لوله پیچیده Jenkins و Terraform.
|
||||
|
||||
---
|
||||
|
||||
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
|
||||
|
||||
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|
||||
| :--- | :--- | :--- |
|
||||
| Git-based Deployment | استقرار مبتنی بر گیت | انتشار خودکار نسخه جدید نرمافزار به محض ارسال کامیتهای جدید به مخزن گیتهاب |
|
||||
| Zero-Downtime Deploy | استقرار بدون قطعی | جابجایی ترافیک از نسخه قدیمی به نسخه جدید تنها پس از اطمینان کامل از موفقیت بیلد جدید |
|
||||
| Shared Hosting | هاست اشتراکی | میزبانی وب سنتی با منابع مشترک و محدودیت شدید که برای وب مدرن منسوخ شده است |
|
||||
| VPS (Virtual Private Server) | سرور مجازی اختصاصی | یک ماشین مجازی لینوکس با سیستمعامل اختصاصی که نیازمند مدیریت فنی کامل توسط کاربر است |
|
||||
| Serverless Architecture | معماری بدون سرور | مدل ابری که در آن منابع پردازشی به صورت آنی بر اساس تقاضا اجرا و سپس خاموش میشوند |
|
||||
| Cold Start | راهاندازی اولیه سرد | تاخیر ناچیز چندصد میلیثانیهای در اولین اجرای یک تابع بدون سرور که پس از مدتی بیکاری بیدار میشود |
|
||||
|
||||
---
|
||||
|
||||
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
|
||||
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
|
||||
|
||||
1. **تصویر کاور درس:** `images/cover.png`
|
||||
* **موضوع:** تقابل یک سرور فیزیکی غبارگرفته با سیمپیچیهای پیچیده در برابر پلتفرم ابری مدرن و صیقلی با دکمه درخشان Deploy.
|
||||
2. **سیر تحول میزبانی وب از گذشته تا امروز:** `images/hosting-evolution-timeline.png`
|
||||
* **موضوع:** اینفوگرافیک تاریخی: دهه ۲۰۰۰: هاست اشتراکی cPanel $\rightarrow$ دهه ۲۰۱۰: سرورهای مجازی VPS $\rightarrow$ دهه ۲۰۲۰: پلتفرمهای ابری PaaS مبتنی بر گیت.
|
||||
3. **چرخه استقرار خودکار با Git Push:** `images/git-push-to-deploy-flow.png`
|
||||
* **موضوع:** دیاگرام فرآیند: گیتپوش از ادیتور $\rightarrow$ گیتهاب $\rightarrow$ وبهوک خودکار $\rightarrow$ کانتینر بیلد پلتفرم $\rightarrow$ انتشار زنده بدون قطعی روی آدرس دامنه.
|
||||
4. **جدول ماتریس مقایسهای cPanel در برابر VPS و PaaS:** `images/cpanel-vs-vps-vs-paas-matrix.png`
|
||||
* **موضوع:** جدول مقایسهای رنگی با ستونهای زمان استقرار، پیچیدگی فنی، و سهولت استفاده برای وایب کدرها.
|
||||
|
||||
---
|
||||
|
||||
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
|
||||
|
||||
1. **تیتر اصلی:** `# تکامل میزبانی وب؛ چرا PaaS و استقرار مبتنی بر گیت (Git-based Deploy) برنده شد؟`
|
||||
2. **مقدمه:** چرا به عنوان یک وایب کدر مدرن هرگز نباید ثانیهای از وقت باارزش خود را صرف دستورات خستهکننده سرورهای لینوکس کنید؟
|
||||
3. **جدول کاور درس**
|
||||
4. **استعاره اجاره خودرو با راننده در برابر ساخت دستی موتور اتومبیل:**
|
||||
* شما میخواهید به مقصد برسید (انتشار محصول)، پس چرا باید مکانیکی دیزل بخوانید؟
|
||||
5. **تاریخچه کوتاه هاستینگ وب: از فاجعه cPanel تا آزادی با PaaS:**
|
||||
* چرا هاستهای ارزان قدیمی پروژههای Next.js و React را خفه میکنند؟
|
||||
6. **معماری پلتفرمهای ابری مدرن (PaaS):**
|
||||
* کانتینرهای خودکار، توابع سرورلس، و شبکه جهانی Edge.
|
||||
7. **جادوی استقرار با گیت (Git-based Deployment):**
|
||||
* یک دستور `git push` ساده و مشاهده فرآیند ساخت زنده در داشبورد ابری.
|
||||
8. **بررسی دو قهرمان دوره: لیارا (بومی پایدار) و Vercel (استاندارد جهانی):**
|
||||
* کدام را کی انتخاب کنیم؟ استراتژی دوگانه هوشمندانه.
|
||||
9. **باکس نکته Quera (`<details class="violet">`):** مفهوم استقرار پیشنمایش موقت (Ephemeral Environments)؛ امکان مشاهده تغییرات هر برنچ قبل از اعمال روی سایت اصلی.
|
||||
10. **باکس هشدار Quera (`<details class="red">`):** گول هاستهای اشتراکی ارزان را نخورید؛ Next.js یک اپلیکیشن تمامعیار Node.js است و روی هاستهای ارزان PHP اجرا نمیشود.
|
||||
11. **باکس انرژیبخش Quera (`<details class="green">`):** به دنیای مدرن توسعه وب خوش آمدید؛ جایی که دکمه دیپلوی لذتبخشترین دکمه کیبورد شماست.
|
||||
12. **جمعبندی درسنامه:** انتخاب مدل میزبانی؛ ورود به اجرای عملی استقرار روی لیارا و ورسل در درس بعدی.
|
||||
|
||||
---
|
||||
|
||||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||||
- [ ] تکامل مدلهای میزبانی و دلایل برتری PaaS برای توسعهدهندگان مدرن تبیین شود.
|
||||
- [ ] مکانیسم استقرار مبتنی بر گیت (Git-based Deploy) با فلوچارت گرافیکی تشریح گردد.
|
||||
- [ ] مقایسه شفاف میان پلتفرمهای بومی (لیارا) و بینالمللی (ورسل) ارائه شود.
|
||||
- [ ] جدول ماتریس مقایسهای cPanel vs VPS vs PaaS در متن گنجانده شود.
|
||||
@@ -0,0 +1,124 @@
|
||||
# مشخصات درسنامه: استقرار عملی پروژه پورتفولیو در لیارا (Liara) و ورسل (Vercel)
|
||||
- **شناسه در سیلابس:** `L12.5`
|
||||
- **فصل:** فصل ۱۲: انتشار روی اینترنت (Ch 12)
|
||||
- **نوع محتوا:** 📘 درسنامه متنی
|
||||
- **زمان تقریبی مطالعه:** ۲۰ دقیقه
|
||||
- **پیشنیازهای مستقیم:** `L12.4` (تکامل میزبانی وب و انتخاب PaaS)
|
||||
|
||||
---
|
||||
|
||||
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
|
||||
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
|
||||
- [ ] **درک کند (Understand):** فرآیند کامل دیپلوی پروژه Next.js به همراه پکیجها و وابستگیها را در دو پلتفرم محبوب لیارا (بومی) و Vercel (بینالمللی) گامبهگام پیاده کند.
|
||||
- [ ] **تحلیل/ارزیابی کند (Evaluate):** لاگهای زنده زمان ساخت (Build Logs) در داشبورد ابری را بازبینی کرده و خطاهای احتمالی زمان استقرار را تشخیص دهد.
|
||||
- [ ] **بهکار ببندد (Apply):** پایگاه داده ابری Supabase را به پروژه مستقرشده متصل کرده و دامنههای مجاز بازگشت (Redirect URLs) را در کنسول احراز هویت سوپابیس ثبت نماید.
|
||||
- [ ] **ایجاد کند (Create):** یک پایپلاین انتشار خودکار از طریق گیتهاب ایجاد کند که با هر کامیت، نسخه زنده پورتفولیو به صورت خودکار بهروزرسانی شود.
|
||||
|
||||
---
|
||||
|
||||
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
|
||||
|
||||
### آنچه باید پوشش داده شود (In-Scope):
|
||||
1. **لحظه تاریخی: دیدن پروژه روی یک آدرس عمومی اینترنت!**
|
||||
* تبدیل کدهای داخل ادیتور به یک سایت زنده اینترنتی که با هر گوشی و لپتاپی باز میشود.
|
||||
2. **مسیر اول: استقرار روی پلتفرم ابری بومی لیارا (Liara.ir):**
|
||||
* ساخت یک برنامه از نوع Next.js در کنسول لیارا با انتخاب ریجن ایران.
|
||||
* استقرار با ابزار خط فرمان لیارا (Liara CLI) یا اتصال مستقیم به مخزن گیتهاب.
|
||||
* پیکربندی بهینهساز کانتینر در `next.config.js` با ویژگی `output: 'standalone'` برای کاهش شگفتانگیز حجم بیلد.
|
||||
* دریافت زیردامنه رایگان و پایدار (مانند `my-portfolio.liara.run`).
|
||||
3. **مسیر دوم: استقرار روی پلتفرم بینالمللی Vercel:**
|
||||
* ورود به vercel.com با حساب گیتهاب، انتخاب مخزن پورتفولیو و زدن دکمه Deploy.
|
||||
* رصد انیمیشن زنده بیلد کدهای Next.js و دریافت آدرس اختصاصی `*.vercel.app`.
|
||||
4. **تکمیل زنجیره اتصال به پایگاه داده Supabase:**
|
||||
* چرا بعد از دیپلوی لاگین با گوگل/گیتهاب کار نمیکند؟
|
||||
* حل قطعی: ثبت آدرس پروداکشن در بخش Authentication $\rightarrow$ URL Configuration $\rightarrow$ Redirect URLs در داشبورد Supabase.
|
||||
5. **قابلیت نجاتبخش بازگشت آنی (Instant Rollback):**
|
||||
* اگر تغییری منتشر شد که باگ داشت، چطور با یک کلیک در پنل نسخه قبلی را بدون نیاز به بیلد مجدد برگردانیم.
|
||||
6. **دستورات چندسکویی نصب ابزارهای خط فرمان لیارا و ورسل:**
|
||||
* نصب در منوهای کشویی ویندوز، مک و لینوکس:
|
||||
- نصب Liara CLI: `npm install -g @liara/cli`
|
||||
- نصب Vercel CLI: `npm install -g vercel`
|
||||
7. **کالاوتهای آموزشی و هشدار کوئرا:**
|
||||
* کالاوت بنفش (`<details class="violet">`): ویژگی `output: 'standalone'` در Next.js که فایلهای `node_modules` چندصد مگابایتی را به چند مگابایت خالص تبدیل میکند.
|
||||
* کالاوت سبز (`<details class="green">`): لذت مشاهده اولین پیام موفقیت سبز «Deployment Completed» در داشبورد ابری.
|
||||
* کالاوت قرمز (`<details class="red">`): تله آدرس Redirect سوپابیس؛ فراموشی ثبت دامنه جدید در تنظیمات Supabase مانع ورود کاربران به پنل ادمین میشود.
|
||||
|
||||
### آنچه نباید وارد آن شویم (Out-of-Scope):
|
||||
- پیکربندی متغیرهای محیطی با جزییات کامل (در درس بعدی، ۱۲.۶، به صورت اختصاصی پوشش داده میشود).
|
||||
- خرید و اتصال دامنه اختصاصی شخصی (در درس ۱۲.۷ بررسی میشود).
|
||||
|
||||
---
|
||||
|
||||
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
|
||||
|
||||
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|
||||
| :--- | :--- | :--- |
|
||||
| Standalone Output | خروجی مستقل سرور | قابلیت Next.js برای بستهبندی تنها کدهای ضروری در یک فایل سبک و بهینه برای کانتینرها |
|
||||
| Build Logs | لاگهای فرآیند ساخت | پیامهای متنی زنده در پنل ابری که جزئیات دانلود پکیجها و کامپایل کدها را نمایش میدهند |
|
||||
| Instant Rollback | بازگشت آنی به نسخه قبل | امکان سوییچ فوری به نسخه پایدار قبلی سایت در عرض یک ثانیه در صورت بروز مشکل در بیلد جدید |
|
||||
| Liara CLI | ابزار خط فرمان لیارا | رابط متنی ترمینال برای ارسال مستقیم فایلهای پروژه به سرورهای ابری لیارا |
|
||||
| Redirect URL Whitelist | لیست سفید آدرسهای مجاز بازگشت | تنظیمات امنیتی سوپابیس برای ممانعت از بازگشت توکنهای لاگین به دامنههای ناشناس و مشکوک |
|
||||
|
||||
---
|
||||
|
||||
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
|
||||
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
|
||||
|
||||
1. **تصویر کاور درس:** `images/cover.png`
|
||||
* **موضوع:** نمایش دو سفینه فضایی نئونی مدرن با لوگوهای لیارا و ورسل که کدهای پروژه را به اوج آسمان ابری هدایت میکنند.
|
||||
2. **مراحل استقرار در داشبورد لیارا:** `images/liara-deployment-steps.png`
|
||||
* **موضوع:** اسکرینشات از مراحل انتخاب پلتفرم Next.js، ساخت برنامه و مشاهده لاگهای بیلد موفق در کنسول لیارا.
|
||||
3. **فرآیند Import مخزن در داشبورد Vercel:** `images/vercel-import-repo-screen.png`
|
||||
* **موضوع:** اسکرینشات از صفحه اتصال مخزن پورتفولیو از گیتهاب در ورسل و زدن دکمه Deploy با جشن پرتاب کاغذهای رنگی (Confetti).
|
||||
4. **تنظیم Redirect URL در کنسول Supabase:** `images/supabase-redirect-url-setting.png`
|
||||
* **موضوع:** اسکرینشات از داشبورد Supabase Auth با اضافه شدن آدرسهای دامنه پروداکشن در فیلد Redirect URLs.
|
||||
|
||||
---
|
||||
|
||||
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
|
||||
|
||||
1. **تیتر اصلی:** `# استقرار عملی پروژه پورتفولیو در لیارا (Liara) و ورسل (Vercel)`
|
||||
2. **مقدمه:** لحظهای که ماهها برایش تلاش کردهاید؛ پورتفولیوی شما آماده تماشای جهان است!
|
||||
3. **جدول کاور درس**
|
||||
4. **آمادهسازی پروژه برای استقرار سرورلس:**
|
||||
* فعالسازی ویژگی طلایی `output: 'standalone'` در `next.config.js`.
|
||||
5. **آموزش عملی استقرار در لیارا (میزبانی پایدار بومی):**
|
||||
* گام ۱: ساخت اکانت در Liara.ir و ورود به پنل.
|
||||
* گام ۲: ساخت برنامه جدید از نوع Next.js.
|
||||
* گام ۳: استقرار با کامند `liara deploy` در ترمینال یا اتصال اتوماتیک گیتهاب.
|
||||
* گام ۴: مشاهده لاگهای اجرای کانتینر و دریافت لینک اختصاصی `*.liara.run`.
|
||||
6. **آموزش عملی استقرار در Vercel (استاندارد جهانی):**
|
||||
* ورود با گیتهاب، انتخاب ریپازیتوری، زدن دکمه Deploy و تماشای بیلد خودکار.
|
||||
7. **هماهنگسازی پایگاه داده Supabase با آدرس پروداکشن جدید:**
|
||||
* ثبت نشانی جدید سایت در لیست سفید Redirect URLs کنسول سوپابیس برای کارکرد بینقص ورود ادمین.
|
||||
8. **جعبه ابزار خروج اضطراری: قابلیت Instant Rollback:**
|
||||
* چگونه در کمتر از ۵ ثانیه اشتباهات ناخواسته را در پنل به نسخه سالم قبلی برگردانیم.
|
||||
9. **دستورات چندسکویی نصب و ورود به CLIهای لیارا و ورسل:**
|
||||
* منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
|
||||
- Windows (PowerShell):
|
||||
```powershell
|
||||
npm install -g @liara/cli vercel
|
||||
liara login
|
||||
```
|
||||
- macOS (Terminal):
|
||||
```bash
|
||||
npm install -g @liara/cli vercel
|
||||
liara login
|
||||
```
|
||||
- Linux (Bash):
|
||||
```bash
|
||||
npm install -g @liara/cli vercel
|
||||
liara login
|
||||
```
|
||||
10. **باکس نکته Quera (`<details class="violet">`):** اهمیت ممیزی حافظه رم اختصاصیافته در پلنهای لیارا (پلن پایه ۲۵۶ مگابایت یا ۵۱۲ مگابایت برای Next.js).
|
||||
11. **باکس هشدار Quera (`<details class="red">`):** عدم تعریف متغیرهای محیطی در پنل ابری منجر به خطای ۵۰۰ یا صفحه سفید در پروداکشن میشود (موضوع درس بعد).
|
||||
12. **باکس رضایتبخش Quera (`<details class="green">`):** تست باز کردن آدرس عمومی سایت روی گوشی موبایل خارج از شبکه وایفای خانه و مشاهده کارکرد بدون نقص آن.
|
||||
13. **جمعبندی درسنامه:** اجرای موفق اولین دیپلوی زنده؛ ورود به مبحث حیاتی تنظیم متغیرهای محیطی پروداکشن در پنلهای ابری در درس بعدی.
|
||||
|
||||
---
|
||||
|
||||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||||
- [ ] مراحل استقرار گامبهگام در هر دو پلتفرم لیارا و ورسل به صورت تصویری و متنی شرح داده شود.
|
||||
- [ ] تنظیم کلیدی `output: 'standalone'` در فایل کانفیگ Next.js آموزش داده شود.
|
||||
- [ ] رفع باگ رایج Redirect URL در احراز هویت Supabase به طور عملی گنجانده شود.
|
||||
- [ ] دستورات خط فرمان Liara CLI در قالب منوهای چندسکویی ارائه گردد.
|
||||
@@ -0,0 +1,102 @@
|
||||
# مشخصات درسنامه: پیکربندی متغیرهای محیطی پروداکشن در پنلهای ابری (Environment Variables)
|
||||
- **شناسه در سیلابس:** `L12.6`
|
||||
- **فصل:** فصل ۱۲: انتشار روی اینترنت (Ch 12)
|
||||
- **نوع محتوا:** 📘 درسنامه متنی
|
||||
- **زمان تقریبی مطالعه:** ۱۶ دقیقه
|
||||
- **پیشنیازهای مستقیم:** `L12.5` (استقرار عملی پروژه پورتفولیو در لیارا و ورسل)
|
||||
|
||||
---
|
||||
|
||||
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
|
||||
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
|
||||
- [ ] **درک کند (Understand):** چرا ۹۵٪ خطاهای ناگهانی صفحه سفید یا کرش سرور پس از استقرار اولیه (خطای ۵۰۰)، ناشی از غیبت متغیرهای محیطی در سرور ابری است و چرا فایل `.env.local` هرگز به همراه کدها به سرور فرستاده نمیشود.
|
||||
- [ ] **تحلیل/ارزیابی کند (Evaluate):** تفاوتهای حیاتی میان مقادیر متغیرها در محیط لوکال و محیط واقعی (بهویژه متغیر `NEXT_PUBLIC_APP_URL` برای آدرسهای بازگشت زرینپال و اوتاوت گوگل) را ارزیابی کند.
|
||||
- [ ] **بهکار ببندد (Apply):** تمام متغیرهای محیطی پروژه پورتفولیو (کلیدهای سوپابیس، کاوهنگار، لیارا SMTP، زرینپال، Upstash و OpenRouter) را در بخش تنظیمات متغیرهای کنسول لیارا و Vercel تزریق نماید.
|
||||
- [ ] **ایجاد کند (Create):** چرخه بازاستقرار (Trigger Redeploy) را پس از ذخیره متغیرها اجرا کرده و پایداری کامل برنامه در محیط پروداکشن را راستیآزمایی کند.
|
||||
|
||||
---
|
||||
|
||||
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
|
||||
|
||||
### آنچه باید پوشش داده شود (In-Scope):
|
||||
1. **معمای سرور گیج: «من کلیدها را از کجا بخوانم؟»:**
|
||||
* شما به درستی `.env.local` را در `.gitignore` گذاشتید تا فاش نشود؛ در نتیجه سرور ابری پروژهای خالی از کلید دریافت کرده است!
|
||||
2. **کالبدشکافی تزریق متغیرها در داشبورد لیارا:**
|
||||
* ورود به برنامه پورتفولیو در پنل Liara.ir $\rightarrow$ بخش «تنظیمات» $\rightarrow$ تب «متغیرها».
|
||||
* امکان افزودن تکی یا پیست کردن دستهای (Bulk Paste) تمام خطوط `.env`.
|
||||
* راهاندازی مجدد (Restart) برنامه برای خوانده شدن متغیرهای جدید توسط کانتینر.
|
||||
3. **کالبدشکافی تزریق متغیرها در داشبورد Vercel:**
|
||||
* ورود به پروژه در Vercel $\rightarrow$ تب Settings $\rightarrow$ انتخاب Environment Variables.
|
||||
* تفکیک محیطها: Production، Preview و Development.
|
||||
* لزوم زدن دکمه Redeploy برای اعمال متغیرها در مرحله بیلد.
|
||||
4. **تغییرات کلیدی متغیرها از لوکال به پروداکشن:**
|
||||
* متغیر شماره یک: `NEXT_PUBLIC_APP_URL`
|
||||
- در لوکال: `http://localhost:3000`
|
||||
- در پروداکشن: `https://my-portfolio.liara.run` یا دامنه شخصی شما.
|
||||
- چرا این متغیر حیاتی است؟ زرینپال کاربر را بعد از پرداخت به این آدرس برمیگرداند؛ تگهای Open Graph عکسهای شبکههای اجتماعی را از این آدرس میخوانند!
|
||||
5. **بررسی چکلیست کامل متغیرهای پروژه پورتفولیو:**
|
||||
* جدول جامع تمام متغیرها: `NEXT_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_SUPABASE_ANON_KEY`, `KAVENEGAR_API_KEY`, `SMTP_HOST`, `ZARINPAL_MERCHANT_ID`, `UPSTASH_REDIS_REST_URL`, `OPENROUTER_API_KEY`, `ADMIN_EMAIL`.
|
||||
6. **کالاوتهای آموزشی و هشدار کوئرا:**
|
||||
* کالاوت بنفش (`<details class="violet">`): مفهوم تزریق در زمان بیلد (Build-time Inlining) برای متغیرهای با پیشوند `NEXT_PUBLIC_` و چرایی نیاز به بیلد مجدد پس از تغییر آنها.
|
||||
* کالاوت سبز (`<details class="green">`): قابلیت کپی-پیست یکجای کل محتوای فایل `.env` در پنل متغیرهای لیارا در ۲ ثانیه.
|
||||
* کالاوت قرمز (`<details class="red">`): تله راهاندازی مجدد نکردن؛ تغییر متغیرها بدون ریاستارت برنامه در پنل ابری هیچ اثری نخواهد داشت.
|
||||
|
||||
### آنچه نباید وارد آن شویم (Out-of-Scope):
|
||||
- استفاده از سرویسهای مدیریت متغیرهای توزیعشده بینسازمانی (Doppler یا Infisical).
|
||||
- رمزنگاری کلیدها با کلیدهای نامتقارن PGP در خط فرمان.
|
||||
|
||||
---
|
||||
|
||||
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
|
||||
|
||||
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|
||||
| :--- | :--- | :--- |
|
||||
| Production Environment Variable | متغیر محیطی پروداکشن | تنظیمات پیکربندی و کلیدهای حساسی که مستقیماً در پنل هاست ابری برای سرور واقعی تعریف میشوند |
|
||||
| Build-time Inlining | جایگذاری در زمان بیلد | فرآیندی که در آن کامپایلر Next.js مقادیر عمومی (NEXT_PUBLIC_) را در هنگام بیلد داخل کدهای فرانتاند حک میکند |
|
||||
| Bulk Import | بارگذاری یکپارچه دستهای | امکان کپی کردن همزمان تمام خطوط فایل تنظیمات در پنل ابری بدون نیاز به ثبت دانه به دانه |
|
||||
| App Restart / Redeploy | راهاندازی مجدد / استقرار دوباره | متوقف کردن و اجرای مجدد کانتینر سرور به منظور بارگذاری مقادیر جدید متغیرهای محیطی در حافظه |
|
||||
| Root URL Dynamic Mapping | نگاشت پویای آدرس ریشه | تنظیم هوشمند آدرس اصلی سایت به گونهای که لینکهای بازگشتی با دامنه واقعی محیط همگام باشند |
|
||||
|
||||
---
|
||||
|
||||
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
|
||||
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
|
||||
|
||||
1. **تصویر کاور درس:** `images/cover.png`
|
||||
* **موضوع:** نمایش پنل تنظیمات دیجیتال مدرن با فیلدهای کلیدهای رمزی و دکمههای سوئیچ سبز در داشبورد سرور ابری.
|
||||
2. **مسیر تزریق متغیرها در کنسول لیارا:** `images/liara-environment-variables-panel.png`
|
||||
* **موضوع:** اسکرینشات از تب متغیرها در پنل لیارا با دکمه بارگذاری دستهای و لیست کلیدهای سوپابیس و کاوهنگار.
|
||||
3. **تنظیم متغیرها در داشبورد Vercel با انتخاب محیط:** `images/vercel-environment-variables-setup.png`
|
||||
* **موضوع:** اسکرینشات از بخش Settings ورسل با تیکباکسهای Production و Preview برای هر متغیر.
|
||||
4. **اثر حیاتی متغیر `NEXT_PUBLIC_APP_URL` بر درگاه پرداخت و سئو:** `images/app-url-importance-flow.png`
|
||||
* **موضوع:** اینفوگرافیک مقایسهای: مقدار اشتباه (هدایت کاربر بانک به صفحه خراب localhost:3000) در برابر مقدار صحیح (هدایت کاربر به دامنه زنده پورتفولیو).
|
||||
|
||||
---
|
||||
|
||||
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
|
||||
|
||||
1. **تیتر اصلی:** `# پیکربندی متغیرهای محیطی پروداکشن در پنلهای ابری (Environment Variables)`
|
||||
2. **مقدمه:** سایت بالا آمد اما به محض کلیک روی دکمهها ارور ۵۰۰ میدهد؟ نفس عمیق بکشید؛ این طبیعیترین اتفاق بعد از اولین دیپلوی است!
|
||||
3. **جدول کاور درس**
|
||||
4. **چرا فایل `.env.local` شما در سرور ابری وجود ندارد؟**
|
||||
* یادآوری امنیت گیت؛ ما عمداً کلیدها را به گیتهاب نفرستادیم تا هک نشویم، اکنون باید آنها را دستی به سرور برسانیم.
|
||||
5. **آموزش تصویری تزریق متغیرها در پنل لیارا (Liara):**
|
||||
* رفتن به تنظیمات $\rightarrow$ بخش متغیرها $\rightarrow$ کپی کردن محتوای تمیز `.env` $\rightarrow$ ذخیره و راهاندازی مجدد.
|
||||
6. **آموزش تزریق متغیرها در پنل Vercel:**
|
||||
* انتخاب Environment Variables $\rightarrow$ تنظیم اسکوپ Production $\rightarrow$ زدن دکمه Redeploy.
|
||||
7. **شاهکلید تمام آدرسهای بازگشتی: تنظیم `NEXT_PUBLIC_APP_URL`:**
|
||||
* چرا این متغیر را باید با آدرس واقعی سایت (دامنه لیارا، ورسل یا دامنه اختصاصی) پر کنید.
|
||||
8. **جدول چکلیست نهایی تمام متغیرهای پروژه پورتفولیو:**
|
||||
* مروری بر ۸ متغیر ضروری: Supabase, Kavenegar, Liara SMTP, ZarinPal, Upstash, OpenRouter, Admin Email.
|
||||
9. **باکس نکته Quera (`<details class="violet">`):** چرا تغییر متغیرهای عمومی کلاینتی حتماً نیازمند بیلد دوباره (Redeploy) است در حالی که متغیرهای سروری با یک Restart ساده اعمال میشوند.
|
||||
10. **باکس هشدار Quera (`<details class="red">`):** هرگز فاصلههای اضافی (Space) قبل یا بعد از کلیدها در کادر پنل نگذارید؛ این خطای پنهان ساعتها وقت شما را میگیرد!
|
||||
11. **باکس رضایتبخش Quera (`<details class="green">`):** رفرش کردن سایت زنده پس از تنظیم متغیرها و مشاهده لود شدن آنی پروژهها از دیتابیس Supabase و سلامت کامل سیستم.
|
||||
12. **جمعبندی درسنامه:** تثبیت کامل مغز متغیرهای ابری؛ ورود به گام باشکوه پایانی فصل: ثبت و اتصال دامنه اختصاصی، DNS و CDN در درس بعدی.
|
||||
|
||||
---
|
||||
|
||||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||||
- [ ] علت بروز خطاهای پس از دیپلوی ناشی از نبود متغیرهای محیطی به زبان ساده تبیین شود.
|
||||
- [ ] شیوه تزریق متغیرها در هر دو پنل لیارا و ورسل به صورت گامبهگام تشریح گردد.
|
||||
- [ ] اهمیت تغییر متغیر `NEXT_PUBLIC_APP_URL` از لوکال به دامنه واقعی پروداکشن تحلیل شود.
|
||||
- [ ] جدول چکلیست تمام کلیدهای مورد نیاز پروژه پورتفولیو در متن ارائه گردد.
|
||||
@@ -0,0 +1,111 @@
|
||||
# مشخصات درسنامه: اتصال دامنه اختصاصی، مدیریت DNS با ابر آروان و Cloudflare و فعالسازی SSL
|
||||
- **شناسه در سیلابس:** `L12.7`
|
||||
- **فصل:** فصل ۱۲: انتشار روی اینترنت (Ch 12)
|
||||
- **نوع محتوا:** 📘 درسنامه متنی
|
||||
- **زمان تقریبی مطالعه:** ۲۰ دقیقه
|
||||
- **پیشنیازهای مستقیم:** `L12.6` (پیکربندی متغیرهای محیطی پروداکشن)
|
||||
|
||||
---
|
||||
|
||||
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
|
||||
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
|
||||
- [ ] **درک کند (Understand):** اهمیت اعتبار حرفهای داشتن یک دامنه اختصاصی شخصی (نظیر `.ir` یا `.dev`) در نگاه کارفرمایان و مصاحبهکنندگان شغلی را درک کند.
|
||||
- [ ] **تحلیل/ارزیابی کند (Evaluate):** کاربرد سرویسهای مدیریت توزیع محتوا و DNS شامل **ابر آروان (ArvanCloud)** (بهینهسازی برای شبکه و سرورهای ایران) و **Cloudflare** (استاندارد جهانی اینترنت) را مقایسه کند.
|
||||
- [ ] **بهکار ببندد (Apply):** رکوردهای کارگزار نام (NameServers) را در پنل ثبت دامنه تغییر داده و رکوردهای A و CNAME را برای اتصال دامنه به پلتفرمهای لیارا و ورسل تنظیم نماید.
|
||||
- [ ] **ایجاد کند (Create):** گواهی امنیتی SSL رایگان را به همراه هدایت خودکار همگانی به پروتکل امن HTTPS و فعالسازی شبکه CDN لبه برای پورتفولیو راهاندازی کند.
|
||||
|
||||
---
|
||||
|
||||
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
|
||||
|
||||
### آنچه باید پوشش داده شود (In-Scope):
|
||||
1. **پایان کار با زیردامنههای عمومی و ورود به باشگاه حرفهایها:**
|
||||
* ارسال لینک `alireza-dev.ir` به جای یک سابدامین طولانی و موقت، نماد هویت و تعهد کاری شماست.
|
||||
2. **ثبت دامنه ملی و بینالمللی:**
|
||||
* دامنههای ملی (`.ir`): ثبت اقتصادی از طریق کارگزاران رسمی ایرنیک.
|
||||
* دامنههای بینالمللی (`.com`, `.dev`, `.me`): ثبت از طریق شرکتهای معتبر داخلی هاستینگ.
|
||||
3. **گام اول: انتقال مدیریت DNS به ابر آروان یا Cloudflare:**
|
||||
* ثبت نام رایگان و اضافه کردن دامنه.
|
||||
* کپی کردن دو سرور نام اختصاصی (مانند `ns1.arvancloud.ir` یا سرورهای Cloudflare).
|
||||
* جایگزینی NSها در پنل کارگزار دامنه و انتظار برای اتصال.
|
||||
4. **گام دوم: تنظیم رکوردهای DNS برای اتصال به لیارا یا Vercel:**
|
||||
* رکورد ریشه (`@`): اتصال به آیپی یا رکورد CNAME سرور ابری.
|
||||
* رکورد زیردامنه (`www`): رکورد CNAME با مقدار آدرس برنامه (مثلاً `my-portfolio.liara.run` یا `cname.vercel-dns.com`).
|
||||
* فعالسازی حالت پروکسی ابری (ابر روشن در آروان / ابر نارنجی در کلودفلر) برای بهرهمندی از CDN و فایروال.
|
||||
5. **گام سوم: فعالسازی رمزنگاری SSL/TLS و ریدایرکت خودکار HTTPS:**
|
||||
* انتخاب حالت رمزنگاری Full / Strict برای امنیت سرتاسری.
|
||||
* روشن کردن گزینه «Always Use HTTPS» برای هدایت خودکار تمام بازدیدکنندگان به آدرس امن با قفل سبز.
|
||||
6. **گام چهارم: تایید دامنه در داشبورد لیارا / Vercel:**
|
||||
* ثبت نام دامنه در بخش دامنههای برنامه در کنسول لیارا یا Settings $\rightarrow$ Domains در ورسل.
|
||||
* مشاهده سبز شدن تیک اعتبارسنجی دامنه و صدور گواهی امنیتی.
|
||||
7. **آزمایش نهایی انتشار جهانی با DNSChecker:**
|
||||
* سرچ کردن آدرس در ابزار DNSChecker و دیدن سبز شدن تیکهای تمام قارههای جهان.
|
||||
8. **کالاوتهای آموزشی و هشدار کوئرا:**
|
||||
* کالاوت بنفش (`<details class="violet">`): مفهوم CNAME Flattening در DNS مدرن که اجازه میدهد رکورد CNAME مستقیماً روی دامنه اصلی بدون www اعمال شود.
|
||||
* کالاوت سبز (`<details class="green">`): گواهی امنیتی SSL مادامالعمر رایگان که بدون دخالت شما توسط آروان/کلودفلر خودکار تمدید میشود.
|
||||
* کالاوت قرمز (`<details class="red">`): تله حلقه ریدایرکت بیپایان (Redirect Loop Error / ERR_TOO_MANY_REDIRECTS)؛ پرهیز از انتخاب حالت Flexible در تنظیمات SSL کلودفلر.
|
||||
|
||||
### آنچه نباید وارد آن شویم (Out-of-Scope):
|
||||
- انتقال مالکیت حقوقی دامنه در سامانه ایرنیک با ارسال تعهدنامههای رسمی.
|
||||
- پیکربندیهای پیشرفته رولهای فایروال WAF اختصاصی در پلنهای Enterprise کلودفلر.
|
||||
|
||||
---
|
||||
|
||||
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
|
||||
|
||||
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|
||||
| :--- | :--- | :--- |
|
||||
| Custom Domain | دامنه اختصاصی شخصی | نام اینترنتی منحصربهفردی که شما مالک آن هستید و سایت روی آن لود میشود |
|
||||
| NameServer (NS) | کارگزار نام دامنه | سرورهای مرجع اینترنت که پایگاه اصلی میزبانی تمام رکوردهای DNS دامنه شما هستند |
|
||||
| Cloudflare | کلودفلر | بزرگترین شبکه توزیع محتوا، امنیت ابری و مدیریت سریع DNS در جهان |
|
||||
| ArvanCloud | ابر آروان | اکوسیستم ابری بومی ایران ارائهدهنده سرویسهای CDN، DNS ابری و امنیت لبه |
|
||||
| HTTPS Redirect | هدایت اجباری به ارتباط امن | سازوکاری که کاربر را در صورت تایپ http:// به صورت خودکار به نسخه رمزنگاریشده https:// منتقل میکند |
|
||||
| CNAME Flattening | مسطحسازی رکورد سینیم | قابلیت مدرن سرورهای DNS برای اجازه دادن به استفاده از رکورد CNAME روی ریشه دامنه بدون www |
|
||||
|
||||
---
|
||||
|
||||
## ۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
|
||||
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
|
||||
|
||||
1. **تصویر کاور درس:** `images/cover.png`
|
||||
* **موضوع:** نمایش نئونی آدرس دامنه شخصی شیک با نماد قفل سبز درخشان HTTPS و نقشه سرورهای لبه شبکه CDN در سراسر جهان.
|
||||
2. **تنظیم رکوردهای NS در پنل کارگزار دامنه:** `images/nameserver-configuration-panel.png`
|
||||
* **موضوع:** اسکرینشات از پنل ثبت دامنه با فیلدهای NS پر شده با مقادیر سرورهای ابر آروان یا کلودفلر.
|
||||
3. **تعریف رکوردهای A و CNAME در ابر آروان / کلودفلر:** `images/dns-records-setup-screen.png`
|
||||
* **موضوع:** اسکرینشات از جدول رکوردهای DNS با ابرهای روشن فعال برای ریشه دامنه و رکورد www متصل به پلتفرم هاستینگ.
|
||||
4. **تایید نهایی دامنه اختصاصی در کنسول لیارا:** `images/liara-domain-active-badge.png`
|
||||
* **موضوع:** اسکرینشات از داشبورد لیارا با بج سبز رنگ «دامنه فعال است و گواهی SSL با موفقیت صادر شد».
|
||||
|
||||
---
|
||||
|
||||
## ۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (`README.md`)
|
||||
|
||||
1. **تیتر اصلی:** `# اتصال دامنه اختصاصی، مدیریت DNS با ابر آروان و Cloudflare و فعالسازی SSL`
|
||||
2. **مقدمه:** پرچم شما بر فراز اینترنت به اهتزاز درآمد! چگونه دامنه اختصاصی خود را متصل کنیم و به محصولمان هویت رسمی ببخشیم؟
|
||||
3. **جدول کاور درس**
|
||||
4. **چرا داشتن دامنه اختصاصی بازی را عوض میکند؟**
|
||||
* حس اعتماد، ماندگاری برند شخصی و افزایش شانس استخدام در نگاه کارفرمایان.
|
||||
5. **گام اول: ثبت دامنه ملی یا بینالمللی:**
|
||||
* معرفی سامانههای ثبت و نکات انتخاب نام دامنه کوتاه و بهیادماندنی.
|
||||
6. **گام دوم: معرفی دامنه به ابر آروان یا Cloudflare:**
|
||||
* ساخت حساب رایگان و تغییر NameServerها در کارگزاری دامنه.
|
||||
7. **گام سوم: تعریف رکوردهای طلایی اتصال به لیارا یا ورسل:**
|
||||
* ثبت رکورد CNAME و A به همراه فعالسازی ابر پراکسی برای سرعت موشکی CDN.
|
||||
8. **گام چهارم: روشن کردن قفل سبز امنیتی HTTPS:**
|
||||
* فعالسازی گواهی رایگان و سوییچ «Always Use HTTPS».
|
||||
9. **گام پنجم: اضافه کردن دامنه در پنل لیارا یا Vercel:**
|
||||
* مشاهده استعلام لحظهای و سبز شدن نشانگر اتصال دامنه.
|
||||
10. **جشن بزرگ انتشار: تست نهایی با ابزار DNSChecker:**
|
||||
* دیدن پرچمهای سبز در تمام دیتاسنترهای جهان و باز کردن سایت با آدرس نهایی روی گوشی.
|
||||
11. **باکس نکته Quera (`<details class="violet">`):** ماجرای CNAME Flattening؛ چرا نیازی نیست حتماً اول آدرس سایتتان www بگذارید.
|
||||
12. **باکس هشدار Quera (`<details class="red">`):** خطای حلقه ریدایرکت (ERR_TOO_MANY_REDIRECTS)؛ همیشه حالت SSL کلودفلر را روی Full یا Strict بگذارید، نه Flexible!
|
||||
13. **باکس رضایتبخش Quera (`<details class="green">`):** پیام تبریک صمیمانه کوئرا کالج؛ پورتفولیوی واقعی شما اکنون زنده، پایدار، دارای دیتابیس، پرداخت آنلاین، پیامک و هوش مصنوعی روی اینترنت در دسترس تمام مردم دنیاست!
|
||||
14. **جمعبندی فصل دوازدهم و پیشنمایش فصل سیزدهم:** پایان شکوهمند استقرار و انتشار؛ ورود به فصل سیزدهم: نگهداری محصول (مانیتورینگ، لاگها، سئو تکنیکال و تحلیل رفتار کاربر).
|
||||
|
||||
---
|
||||
|
||||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||||
- [ ] مراحل اتصال دامنه از ثبت تا تنظیم NameServerها به صورت گامبهگام تشریح شود.
|
||||
- [ ] نحوه کار با پنلهای ابر آروان و Cloudflare به صورت کاربردی ارائه گردد.
|
||||
- [ ] رکوردهای DNS لازم برای اتصال به لیارا و ورسل آموزش داده شود.
|
||||
- [ ] فعالسازی گواهی رایگان SSL و ریدایرکت HTTPS با کالاوتهای پیشگیری از ارور گنجانده شود.
|
||||
Reference in New Issue
Block a user