بیشتر توسعهدهندگان دوست دارند هر بخش از مسیر توسعه تا Production خودکار شود. فرآیند استقرار برنامه باید به سادگی فشار دادن یک دکمه Deploy باشد. اما در عمل زمان زیادی صرف آمادهسازی سرور تنظیم محیط و انتقال فایلهای لازم میشود. در این شرایط ابزارهایی که فرآیند Deploy را ساده میکنند ارزش زیادی پیدا می کنه. Laravel Forge یکی از این ابزارها است که تجربه استقرار PHP را بسیار آسان می کنه .
Laravel Forge چیست؟
یک سرویس مدیریت سرور و استقرار است که به توسعهدهندگان کمک میکند سرورهای ابری بسازند و پروژههای PHP را بهصورت استاندارد Deploy کنند . نام Forge ممکن است بهنظر برسد فقط برای Laravel است اما میتوان از آن برای WordPress Symfony Statamic و هر پروژه PHP دیگر استفاده کرد .
نمای کلی فرآیند Deploy
روند کار با Laravel Forge بهصورت زیر است:
- اتصال حساب Forge به ارائهدهنده سرور ابری
- اتصال مخزن Git
- ایجاد سرور جدید
- نصب پروژه روی سرور
- اجرای Deploy با کلیک یا بهصورت خودکار

انتخاب ارائهدهنده سرور
در داشبورد Forge میتوانید یکی از ارائهدهندگان محبوب مانند AWS DigitalOcean Linode یا Vultr را انتخاب کنید. Forge همچنین امکان استفاده از VPC سفارشی را نیز فراهم میکند .
اتصال Laravel Forge به AWS
ساخت کاربر IAM در AWS
برای اتصال Forge به AWS ابتدا باید یک کاربر IAM در کنسول AWS بسازید. در زمان ساخت دسترسی Programmatic Access را فعال کنید.

تنظیم دسترسی ها
برای اینکه Forge بتواند سرور بسازد و مدیریت کند باید دسترسیهای لازم داده شود . بهجای Administrator بهتر است فقط دو مجوز زیر را به کاربر بدهید:
- AmazonEC2FullAccess
- AmazonVPCFullAcces

ذخیره کلیدها و اتصال به Forge
بعد از ساخت کاربر IAM کلیدهای دسترسی به شما نمایش داده میشود. این مقادیر را در صفحه اتصال AWS در Laravel Forge وارد کنید.

اتصال مخزن Git
در این مرحله حساب GitHub یا Bitbucket را به Forge متصل کنید . Forge یک کلید عمومی به حساب شما اضافه میکند که بهکمک آن سرور میتواند به مخزن دسترسی پیدا کند!!!
ساخت سرور جدید
برای ساخت سرور جدید به بخش Create Server بروید . در AWS اگر از پلن رایگان استفاده میکنید میتوانید t2.micro را انتخاب کنید . در ادامه تنظیماتی مانند نسخه PHP نوع پایگاه داده و سایر موارد را تعیین کنید. پس از چند دقیقه سرور آماده میشود .

بررسی سرور
پس از ساخت سرور میتوانید با وارد کردن آدرس IP در مرورگر خروجی phpinfo() را مشاهده کنید تا مطمئن شوید محیط PHP بهدرستی نصب شده است.
مدیریت سرور در Forge
داشبورد مدیریت سرور امکانات زیادی در اختیار شما قرار میدهد از جمله:
- مدیریت سایتها
- اضافه کردن کلید SSH
- پیکربندی پایگاه داده
- بهروزرسانی تنظیمات PHP
- زمانبندی وظایف
- اجرای Queue Worker
- تنظیم فایروال
- مانیتورینگ برنامه

مدیریت سایت ها
سایت پیشفرض
هر سرور بهصورت خودکار یک سایت پیشفرض دارد که بهتر است حذف یا جایگزین شود. دایرکتوری وب بهصورت پیشفرض public تنظیم شده که برای Laravel و اکثر برنامههای PHP مناسب است .

نصب پروژه
در بخش مدیریت سایت میتوانید پروژه را از Git نصب کنید. نام پروژه و Branch را وارد کنید تا فرآیند آمادهسازی آغاز شود.

Deploy برنامه
Deploy دستی
برای اجرای استقرار دستی میتوانید از دکمه Deploy now استفاده کنید. این گزینه زمانی کاربرد دارد که میخواهید هر بار بهصورت کنترلشده کد را منتشر کنید.
Deploy خودکار
آیا میخواهید با هر Push به Branch مشخصشده فرآیند Deploy اجرا شود؟ میتوانید Quick Deploy را فعال کنید تا این کار بهصورت خودکار انجام شود.
اسکریپت Deploy
Laravel Forge یک اسکریپت پیشفرض Deploy در اختیار شما میگذارد که معمولاً شامل موارد زیر است:
cd /home/forge/example.com git pull origin master composer install --no-interaction --prefer-dist --optimize-autoloader echo "" | sudo -S service php7.4-fpm reload if [ -f artisan ] then php artisan migrate --force fi
اگر میخواهید کارهای دیگری انجام شود میتوانید این اسکریپت را ویرایش کنید. بهعنوان مثال میتوانید کش را پاک کنید یا دستورهای تست را اضافه نمایید.
Trigger URL
یکی از قابلیتهای جالب این است که میتوانید URL خاصی تعریف کنید تا با دریافت درخواست Deploy اجرا شود. این گزینه برای استفاده با سرویسهای خارجی یا ساخت اسکریپتهای سفارشی مفید است.
به روز رسانی Repository و Branch
اگر میخواهید مخزن یا Branch را تغییر دهید می توانید از ابزارهای Forge این کار را انجام دهید. در این صورت شاید نیاز باشد اسکریپت Deploy را مطابق Branch جدید به روز رسانی کنید.
مدیریت Environment
Forge فایل env را بهصورت خودکار ایجاد میکند و اطلاعات حساس مانند رمز پایگاه داده را تو اون قرار میده. اگر برنامه از API استفاده میکند میتوانید کلید API را نیز در این فایل قرار دهید. برای دسترسی به این مقادیر در PHP میتوانید از getenv() استفاده کنید .
Queue Worker
اجرای Queue Workerها همانند اجرای دستور php artisan queue:work است. Forge از Supervisor برای مدیریت این کار استفاده میکند تا در صورت توقف به صورت خودکار دوباره راه اندازی شود.
SSL
در گذشته نصب SSL یک فرآیند پیچیده بود اما Forge این کار را بسیار ساده کرده است . میتوانید از گواهی رایگان LetsEncrypt استفاده کنید یا گواهی دلخواه خود را نصب نمایید. اگر به SSL برای Wildcard Subdomain نیاز دارید میتوانید از گواهیهای Cloudflare نیز استفاده کنید.
اضافه کردن SSH Keys
برای دسترسی امن به سرور معمولاً از SSH استفاده میشود. ابتدا یک کلید SSH ایجاد کنید:
ssh-keygen -t rsa
سپس کلید عمومی را به Forge اضافه کنید:
cat ~/.ssh/id_rsa.pub
این کلید به سرور اضافه میشود تا بتوانید بدون رمز به آن متصل شوید.

پیکربندی PHP و MySQL
در داشبورد Forge میتوانید نسخه PHP را ارتقا دهید تنظیمات آپلود فایل را تغییر دهید و OPCache را برای Production بهینه کنید . برای پایگاه داده نیز میتوانید دیتابیس جدید بسازید کاربران را اضافه کنید و دسترسیها را مدیریت کنید. فراموش نکنید مقادیر بهروزرسانیشده را در فایل env وارد کنید.
زمانبندی وظایف
Forge ابزار زمانبندی وظایف را در اختیار شما قرار میدهد تا بتوانید کارهای دورهای را اجرا کنید. مثلاً ارسال ایمیل پاکسازی داده یا هر اسکریپت دیگری که لازم دارید.
Daemon
Daemon برنامهای است که بهصورت Background اجرا میشود. Forge به شما اجازه میدهد Daemonها را راهاندازی کنید و از Supervisor برای مدیریت آنها استفاده کنید تا در صورت توقف دوباره اجرا شوند .
مانیتورینگ
Forge از ابزارهای مانیتورینگ پشتیبانی میکند تا بتوانید عملکرد برنامه را بررسی کنید . این ابزارها اطلاعاتی مانند استفاده از CPU حافظه و عملیات I/O را در اختیار شما قرار میدهند.
شبکه و فایروال
برای مدیریت فایروال و قوانین شبکه نیازی نیست وارد AWS شوید. میتوانید این کار را از داشبورد Forge انجام دهید. همچنین امکان تنظیم ارتباط بین سرورها برای پروژههای بزرگ فراهم است .
نتیجه گیری
Laravel Forge ابزاری قدرتمند و در عین حال ساده برای استقرار برنامههای وب PHP است. این سرویس با حذف مراحل پیچیده Deploy به توسعهدهندگان کمک میکند روی توسعه تمرکز کنند. پس از پیکربندی اولیه ممکن است دیگر نیازی به ورود مستقیم به کنسول AWS نداشته باشید. اگر بهدنبال راهکاری پایدار قابل اعتماد و قابل توسعه برای استقرار پروژههای PHP هستید Forge یکی از بهترین انتخابها خواهد بود. آیا شما تجربهای در استفاده از Laravel Forge !!یا ابزارهای مشابه دارید؟