آموزش لاراول

آموزش استفاده از Laravel Forge برای استقرار پروژه لاراول

موزش استفاده از Laravel Forge برای استقرار پروژه لاراول Laravel Forge یک پلتفرم قدرتمند برای مدیریت و استقرار خودکار سرورهای لاراول است که کار راه‌اندازی سرور و دپلوی پروژه را به…

1405/04/04 ۱۱ دقیقه مطالعه آخرین بروزرسانی: 1405/04/04

موزش استفاده از Laravel Forge برای استقرار پروژه لاراول

Laravel Forge یک پلتفرم قدرتمند برای مدیریت و استقرار خودکار سرورهای لاراول است که کار راه‌اندازی سرور و دپلوی پروژه را به کمترین زمان ممکن کاهش می‌دهد. در این مقاله، از صفر تا صد نحوه استفاده از Forge را با جدیدترین قابلیت‌های نسخه ۲.۰ (منتشر شده در اکتبر ۲۰۲۵) به شما آموزش می‌دهم[reference:0].

🎯 Forge چیست و چه مشکلی را حل می‌کند؟
Forge به شما امکان می‌دهد روی providers محبوبی مثل DigitalOcean، AWS، Linode، Vultr و Hetzner سرور ایجاد کنید و Nginx، PHP، MySQL، Redis و سایر نیازمندی‌ها را به صورت خودکار نصب و تنظیم کند[reference:1]. همچنین از قابلیت‌های مدرنی مثل zero-downtime deployment، SSL خودکار، queue worker و load balancing پشتیبانی می‌کند[reference:2].

📋 مرحله 1: پیش‌نیازها و ایجاد حساب کاربری

برای شروع کار با Laravel Forge نیاز دارید:

  • ✅ یک حساب کاربری در forge.laravel.com
  • ✅ یک اکانت در یکی از providers ابری (DigitalOcean، AWS، Vultr، Linode، Hetzner)
  • ✅ یک Git repository (GitHub، GitLab یا Bitbucket)
  • ✅ یک دامنه (اختیاری – Forge دامنه موقت on-forge.com هم ارائه می‌دهد)
  • ✅ آشنایی پایه با لاراول و خط فرمان

بعد از ثبت‌نام در Forge، وارد داشبورد شوید. قیمت‌های Forge از ۱۲ دلار در ماه شروع می‌شود و لاراول VPS اختصاصی هم از ۶ دلار در ماه قابل تهیه است[reference:3].

🔌 مرحله 2: اتصال provider ابری به Forge

برای اینکه Forge بتوانند از طرف شما سرور ایجاد کند، باید provider خود را با API Key متصل کنید[reference:4].

  1. از منوی سمت راست، روی Providers کلیک کنید.
  2. provider مورد نظر (مثلاً DigitalOcean) را انتخاب کنید.
  3. در پنل provider، روی Add Provider کلیک کنید.
  4. API Token را از provider خود دریافت کرده و در Forge وارد کنید.

💡 نکته حرفه‌ای: اگر تازه‌کار هستید، DigitalOcean با پلن ۶ تا ۱۲ دلاری بهترین گزینه برای شروع است. همچنین Laravel VPS جدیدترین سرویس اختصاصی Forge است که سرور را در کمتر از ۱۰ ثانیه آماده می‌کند[reference:5].

🖥️ مرحله 3: ساخت سرور جدید در Forge

حالا نوبت به ساختن اولین سرورتان است:

  1. روی Servers → Create Server کلیک کنید.
  2. provider و region مورد نظر را انتخاب کنید (نزدیک‌ترین region به ایران مثل آلمان یا هلند).
  3. Server Type را انتخاب کنید:
    • Laravel (Quick Start) – نصب خودکار Nginx، PHP، MySQL، Redis و PostgreSQL
    • WordPress – برای سایت‌های وردپرسی
    • Static – برای سایت‌های استاتیک و فریم‌ورک‌های جاوااسکریپتی
    • Load Balancer – برای توزیع بار بین چند سرور
  4. اندازه سرور را انتخاب کنید (برای شروع 1GB RAM / 1 CPU کافی است).
  5. روی Provision Server کلیک کنید.
  6. صبر کنید تا Forge سرور را آماده کند (حدود ۲-۵ دقیقه).

بعد از اتمام، اطلاعات SSH و دسترسی به دیتابیس را دریافت خواهید کرد.

🌐 مرحله 4: ایجاد سایت (Site) و تنظیم دامنه

بعد از آماده شدن سرور، اولین سایت خود را ایجاد کنید:

  1. در داشبورد سرور (Servers)، روی Create Site کلیک کنید.
  2. دامنه خود را وارد کنید (مثلاً myapp.com). اگر دامنه ندارید، Forge دامنه موقت yourapp.on-forge.com ارائه می‌دهد[reference:6].
  3. Project Type را Laravel انتخاب کنید.
  4. Web Directory را روی /public بگذارید (مسیر پیش‌فرض لاراول).
  5. روی Create Site کلیک کنید.

بعد از ایجاد سایت، Forge به طور خودکار:

  • 🔹 یک دیتابیس جدید (MySQL/PostgreSQL) می‌سازد
  • 🔹 یک فایل .env اولیه ایجاد می‌کند
  • 🔹 تنظیمات Nginx را برای دامنه شما آماده می‌کند
  • 🔹 دسترسی Let’s Encrypt SSL را با یک کلیک فعال می‌کند

📦 مرحله 5: اتصال مخزن Git و اولین استقرار

حالا کد پروژه خود را از Git به Forge متصل کنید:

  1. در بخش سایت، به تب Git Repository بروید.
  2. سرویس مخزن خود (GitHub, GitLab, یا Bitbucket) را انتخاب کنید و حساب خود را متصل کنید.
  3. مخزن و شاخه (برنچ) مورد نظر را انتخاب کنید.
  4. روی Install Repository کلیک کنید.
  5. حالا به تب Deployment Script بروید و اسکریپت زیر را بررسی کنید (اسکریپت پیش‌فرض مناسب لاراول است):
cd /home/forge/yourdomain.com
git pull origin main
composer install --no-interaction --prefer-dist --optimize-autoloader
php artisan migrate --force
php artisan optimize

برای استقرار (deploy) پروژه، ابتدا فایل .env را با مقادیر واقعی (دیتابیس، اپ کی و…) پر کنید. Forge به صورت خودکار یک فایل .env با دیتابیس صحیح می‌سازد[reference:7]. سپس روی دکمه Deploy Now کلیک کنید و خروجی را در تب Deployment Log مشاهده کنید[reference:8].

⚙️ مرحله 6: پیکربندی محیط و متغیرهای環境

تنظیمات environment در Forge بسیار ساده است:

  1. در بخش سایت، به تب Environment بروید.
  2. مقادیر مورد نیاز مثل APP_ENV=production و APP_DEBUG=false را تنظیم کنید.
  3. Forge به طور خودکار این مقادیر را در فایل .env ذخیره می‌کند[reference:9].
  4. می‌توانید از encrypted environment files لاراول هم استفاده کنید. کافی است کلید را در بخش “Encrypted Environment Files” وارد کنید و php artisan env:decrypt --force را به deployment script اضافه کنید[reference:10].
  5. با فعال کردن گزینه “Automatically run …” بعد از تغییر environment، Forge به طور خودکار config:cache و queue:restart را اجرا می‌کند[reference:11].

🔄 مرحله 7: فعال‌سازی استقرار خودکار و SSL

یکی از بهترین ویژگی‌های Forge، استقرار خودکار (Quick Deploy) است. با فعال کردن این گزینه، هر بار که کد را به مخزن Git خود پوش می‌کنید، Forge به طور خودکار دپلوی جدید را اجرا می‌کند.

فعال‌سازی Quick Deploy:

  1. در بخش سایت، به تب Application → Quick Deploy بروید.
  2. روی Enable Quick Deploy کلیک کنید.
  3. Forge یک webhook URL ایجاد می‌کند. آن را در تنظیمات مخزن Git خود (GitHub → Webhooks) اضافه کنید[reference:12].

فعال‌سازی SSL (توصیه می‌شود):

  1. در بخش سایت، به تب SSL Certificates بروید.
  2. روی Get Certificate from Let’s Encrypt کلیک کنید.
  3. با SSL نصب شده، سایت شما به صورت https در دسترس خواهد بود.

⏱️ مرحله 8: راه‌اندازی Queue Worker و Scheduler

اگر پروژه شما از صف‌ها (queues) و وظایف زمانبندی شده (scheduled jobs) استفاده می‌کند، این بخش برای شما ضروری است.

راه‌اندازی Queue Worker:

Forge از Supervisor برای مدیریت Queue Worker استفاده می‌کند و به طور خودکار آنها را در صورت Crash مجدداً راه‌اندازی می‌کند[reference:13].

  1. در بخش سایت، به تب Queues بروید.
  2. روی Add Worker کلیک کنید.
  3. گزینه‌های زیر را تنظیم کنید:
    • PHP Version: نسخه PHP مورد نظر
    • Queue Connection: مثلاً redis یا database
    • Number of Processes: تعداد فرآیندهای همزمان
    • Timeout: حداکثر زمان اجرای هر job
    • Tries: تعداد دفعات تلاش مجدد در صورت خطا
  4. روی Add Worker کلیک کنید[reference:14].

راه‌اندازی Laravel Scheduler:

برای اجرای دستور php artisan schedule:run به صورت منظم و دقیقه‌ای:

  1. در بخش سایت، به تب Scheduler بروید.
  2. روی Add Scheduled Job کلیک کنید.
  3. Command: php artisan schedule:run
  4. Frequency: * * * * * (هر دقیقه)
  5. روی Add Job کلیک کنید[reference:15].

⚠️ نکته مهم برای Horizon: اگر از Laravel Horizon برای مدیریت queue استفاده می‌کنید، از بخش Daemons یک process جدید اضافه کنید و در deployment script از $FORGE_PHP artisan horizon:terminate استفاده کنید[reference:16].

🧪 مرحله 9: رفع اشکالات رایج و لاگ‌ها

در حین کار با Forge ممکن است با خطاهایی مواجه شوید. در ادامه رایج‌ترین مشکلات و راه حل‌های آنها را توضیح می‌دهم.

ارور 502 Bad Gateway

این خطا معمولاً به دلیل از کار افتادن PHP-FPM رخ می‌دهد. راه حل: از داشبورد سرور، روی نسخه PHP کلیک کنید و دکمه Restart را بزنید. این کار PHP-FPM را ریاستارت کرده و socket لازمی که Nginx برای ارتباط استفاده می‌کند را بازسازی می‌کند[reference:17][reference:18].

ارور 403 Forbidden

این خطا یعنی Nginx نمی‌تواند index.php یا index.html را در پوشه عمومی پیدا کند. راه‌حل:

  • مطمئن شوید که کد پروژه به درستی دپلوی شده است
  • پوشه وب دایرکتوری را در تنظیمات سایت بررسی کنید (برای لاراول باید /public باشد)
  • شاخه public/ پروژه شما حتماً باید فایل index.php داشته باشد[reference:19]

ارور 500 Internal Server Error

این ارور معمولاً به دلیل خطا در کد برنامه (مشکل در فایل‌های PHP، خطا در دیتابیس یا کمبود مموری) رخ می‌دهد. ابتدا Laravel log را در مسیر storage/logs/laravel.log بررسی کنید[reference:20].

Site stuck in “deploying” state

اگر سایت در حالت در حال دپلوی شدن قفل کرد، از منوی Self Help (در گوشه بالای راست پنل مدیریت سایت) گزینه Reset Deployment State را بزنید.[reference:21]

بررسی لاگ‌ها

تمامی لاگ‌های مربوط به deployment، queue workers و scheduled jobs در Forge در دسترس هستند:

  • Deployment log: در تب Deployments سایت
  • Queue worker log: در /home/forge/.forge/daemon-*.log
  • Nginx Error log: از طریق SSH یا بخش Server Logs قابل مشاهده است

🚀 قابلیت‌های پیشرفته Forge در سال ۲۰۲۶

نسل جدید Forge که در اکتبر ۲۰۲۵ معرفی شد، قابلیت‌های بسیار قدرتمندی دارد[reference:22]:

  • 📊 Zero-Downtime Deployments (ZD): استقرار بدون حتی یک لحظه قطعی. این ویژگی به طور پیش‌فرض در سرورهای جدید فعال است و از symlink-based strategy استفاده می‌کند[reference:23][reference:24].
  • 📈 Real-time metrics: مشاهده لحظه‌ای مصرف CPU، رم و پهنای باند[reference:25].
  • 🏥 Health checks & Heartbeats: بررسی سلامت سایت‌ها و jobهای زمانبندی شده. اگر یک scheduled job heartbeat خود را ارسال نکند، به شما اعلان می‌دهد[reference:26].
  • 🔧 Role-based access control (RBAC): مدیریت دسترسی اعضای تیم به سرورها و سایت‌ها[reference:27].
  • ⚖️ Load Balancing: توزیع ترافیک بین چند سرور با متدهای Round-robin، Least connections و IP hash[reference:28].
  • 🗄️ Managed Databases: دیتابیس‌های مدیریت شده PostgreSQL با قابلیت read replicas و backup خودکار[reference:29][reference:30].
  • 🎨 First-class support for Node.js frameworks: پشتیبانی کامل از Nuxt و Next.js[reference:31].
  • 🔐 npm private packages: نصب پکیج‌های خصوصی npm از GitHub Packages و رجیستری‌های سفارشی[reference:32].
  • ⚡ Instant provisioning: ساخت سرور در کمتر از ۱۰ ثانیه از طریق Laravel VPS اختصاصی[reference:33].

📌 جمع‌بندی و مقایسه Forge با سایر روش‌ها

روش مزایا معایب مناسب برای
Laravel Forge ✅ مدیریت ساده سرور
✅ استقرار خودکار
✅ قابلیت‌های حرفه‌ای
💰 هزینه ماهیانه (از ۱۲ دلار)
📚 منحنی یادگیری اولیه
توسعه‌دهندگان لاراول که کنترل کامل می‌خواهند[reference:34]
Laravel Vapor ✅ مقیاس‌پذیری خودکار
✅ بدون مدیریت سرور
✅ پرداخت بر اساس مصرف
💰 هزینه متغیر و بعضاً بالا
⚙️ وابستگی به AWS
پروژه‌های با ترافیک متغیر[reference:35]
تنظیم دستی سرور 💰 رایگان (به جز هزینه سرور)
🎯 کنترل ۱۰۰٪
⏱️ زمان‌بر و پیچیده
🐛 ریسک خطای بالا
توسعه‌دهندگان حرفه‌ای با زمان و تخصص کافی

✅ پیشنهاد من: اگر به دنبال راهی سریع، حرفه‌ای و بدون دردسر برای استقرار پروژه‌های لاراول هستید، Laravel Forge بهترین انتخاب است. با یادگیری این ابزار، فرآیند deployment سایت خود را از چند ساعت به چند دقیقه کاهش دهید.

❓ سوالات متداول (FAQ)

۱ – تفاوت Forge و Envoyer چیست؟
Forge برای مدیریت و provisioning سرور است، در حالی که Envoyer مخصوص zero-downtime deployment است. Forge جدید قابلیت zero-downtime را به صورت داخلی دارد، اما Envoyer استقرار در multiple servers و rollbackهای پیشرفته‌تری ارائه می‌دهد.

۲ – آیا Forge از داکر (Docker) پشتیبانی می‌کند؟
به صورت اختصاصی خیر. Forge برای مدیریت سرورهای سنتی با Nginx و PHP طراحی شده است. برای dcker باید از راهکارهایی مثل Laravel Sail یا Kubernetes استفاده کنید.

۳ – چگونه می‌توانم پایگاه داده را به صورت خودکار بک‌آپ بگیرم؟
در بخش Databases، روی دیتابیس مورد نظر کلیک کنید و گزینه Enable Backups را فعال کنید. Forge به طور روزانه از دیتابیس شما بک‌آپ می‌گیرد و در S3 یا فضای ابری مورد نظر ذخیره می‌کند[reference:36].

۴ – آیا می‌توانم چند سایت روی یک سرور میزبانی کنم؟
بله، محدودیتی وجود ندارد. هر سایت دامنه، کد، دیتابیس و تنظیمات Nginx جداگانه خود را خواهد داشت.

۵ – چگونه می‌توانم به صورت SSH به سرور وصل شوم؟
Forge در بخش Server → SSH Keys یک کلید عمومی برای شما ساخته است. با دانلود کلید خصوصی و استفاده از دستور ssh forge@server-ip می‌توانید متصل شوید.

۶ – آیا Forge از تیم‌ها (Team Collaboration) پشتیبانی می‌کند؟
بله، با قابلیت Role-Based Access Control می‌توانید دسترسی اعضای تیم را مدیریت کنید. همچنین Organizations به عنوان واحد صورتحساب قابل استفاده هستند[reference:37].

برای اجرای این ایده در سایت خودت کمک می‌خواهی؟

اگر برای طراحی، توسعه یا بهینه‌سازی فنی سایت‌ات به مشاوره نیاز داری، از طریق فرم مشاوره با من در ارتباط باش.

نیاز به مشاوره داری؟

برای طراحی، توسعه یا رفع مشکل سایت‌ات همین الان در ارتباط باش.