# مشخصات درس‌نامه: استقرار عملی پروژه پورتفولیو در لیارا (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. **کال‌اوت‌های آموزشی و هشدار کوئرا:** * کال‌اوت بنفش (`
`): ویژگی `output: 'standalone'` در Next.js که فایل‌های `node_modules` چندصد مگابایتی را به چند مگابایت خالص تبدیل می‌کند. * کال‌اوت سبز (`
`): لذت مشاهده اولین پیام موفقیت سبز «Deployment Completed» در داشبورد ابری. * کال‌اوت قرمز (`
`): تله آدرس 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 (`
`):** اهمیت ممیزی حافظه رم اختصاص‌یافته در پلن‌های لیارا (پلن پایه ۲۵۶ مگابایت یا ۵۱۲ مگابایت برای Next.js). 11. **باکس هشدار Quera (`
`):** عدم تعریف متغیرهای محیطی در پنل ابری منجر به خطای ۵۰۰ یا صفحه سفید در پروداکشن می‌شود (موضوع درس بعد). 12. **باکس رضایت‌بخش Quera (`
`):** تست باز کردن آدرس عمومی سایت روی گوشی موبایل خارج از شبکه وای‌فای خانه و مشاهده کارکرد بدون نقص آن. 13. **جمع‌بندی درس‌نامه:** اجرای موفق اولین دیپلوی زنده؛ ورود به مبحث حیاتی تنظیم متغیرهای محیطی پروداکشن در پنل‌های ابری در درس بعدی. --- ## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer) - [ ] مراحل استقرار گام‌به‌گام در هر دو پلتفرم لیارا و ورسل به صورت تصویری و متنی شرح داده شود. - [ ] تنظیم کلیدی `output: 'standalone'` در فایل کانفیگ Next.js آموزش داده شود. - [ ] رفع باگ رایج Redirect URL در احراز هویت Supabase به طور عملی گنجانده شود. - [ ] دستورات خط فرمان Liara CLI در قالب منوهای چندسکویی ارائه گردد.