feat: add chapter 12-deployment-and-shipping specs

This commit is contained in:
2026-09-05 22:33:11 +08:00
parent 8e4e8d4f82
commit 18b9a967cf
7 changed files with 746 additions and 0 deletions

View File

@@ -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) به شکل الهام‌بخش تبیین شود.
- [ ] سرفصل‌های ۷ درس‌نامه بعدی با ذکر ابزارهای مصوب (لیارا، ورسل، کلودفلر، ابر آروان) معرفی گردند.
- [ ] مفاهیم بنیادین میزبانی ابری و رویکرد دوگانه به صورت روان تشریح شوند.

View File

@@ -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 روی سرور واقعی لحاظ شود.

View File

@@ -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 و ابزارهای اعتبارسنجی آنلاین معرفی شوند.

View File

@@ -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 در متن گنجانده شود.

View File

@@ -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 در قالب منوهای چندسکویی ارائه گردد.

View File

@@ -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` از لوکال به دامنه واقعی پروداکشن تحلیل شود.
- [ ] جدول چک‌لیست تمام کلیدهای مورد نیاز پروژه پورتفولیو در متن ارائه گردد.

View File

@@ -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 با کال‌اوت‌های پیشگیری از ارور گنجانده شود.