ریپازیتوری را وصل میکنید، متغیرها را وارد میکنید و پروژه بالا میآید. صف و زمانبند بدون تنظیم دستی اجرا میشوند و برای نصب وابستگیها لازم نیست تیکت بزنید.
همین شش خط کل دیپلوی است؛ نه اتصال به سرور، نه تنظیم زمانبند.
هاست لاراول میزبانیای است که پیشنیازهای فریمورک را از پیش آماده دارد: نسخهی مناسب PHP، دسترسی به Composer و artisan، داکیومنت روت روی پوشهی public و امکان اجرای پردازشهای پسزمینه مثل صف و زمانبند. تفاوت اصلیاش با هاست اشتراکی همین است: در هاست اشتراکی PHP فقط بهاندازهی یک درخواست وب زنده میماند و ورکر همیشهروشن جایی برای اجرا ندارد.
پروژهی لاراولی روی سه نوع زیرساخت اجرا میشود: هاست اشتراکی برای سایتهای کمترافیک، سرور مجازی برای کنترل کامل، به بهای وقت نگهداری، و پلتفرم ابری که دیپلوی، مقیاس و پردازش پسزمینه را بدون مدیریت سرور تحویل میدهد. انتخاب درست به این بستگی دارد که پروژهتان صف و ورکر دائمی دارد یا نه.
این فهرست معیار خرید است. اگر سرویسدهندهای یکی از اینها را نداشته باشد، مشکل بعداً به شکل خطا سر میزند، نه در صفحهی فروش.
نسخههای جدید لاراول به PHP ۸٫۲ یا بالاتر نیاز دارند. افزونههایی مثل PDO، mbstring، openssl، intl، gd و zip باید فعال باشند و نسخه قابل تغییر باشد، نه قفلشده.
اگر دامنه به روت پروژه اشاره کند، فایل .env و سورس از بیرون خواندنی میشود. داکیومنت روت باید پوشهی public باشد.
نصب وابستگی و اجرای migrate و config:cache باید بدون تیکت و در زمان دیپلوی انجام شود.
اگر Vite یا Mix دارید، جایی برای npm ci و npm run build لازم است؛ وگرنه استایلها روی سرور ساخته نمیشوند.
صف از یک فرایند دائمی استفاده میکند. اگر ورکر بالا نباشد، jobها در صف میمانند و کاربر پشت صفحهی انتظار گیر میکند.
schedule:run باید هر دقیقه اجرا شود. cron محدود هاست اشتراکی معمولاً همینجا شکست میخورد.
کش فایل و صف دیتابیس تا حدی جواب میدهند. با ترافیک واقعی، Redis تفاوت را نشان میدهد.
فایل کاربران روی دیسک محلی کانتینر با هر دیپلوی پاک میشود؛ باید روی S3 باشد.
هیچکدام مطلقاً بهتر نیستند. جدول را بر اساس کاری که پروژهتان انجام میدهد بخوانید.
| معیار | هاست اشتراکی | سرور مجازی | پلتفرم ابری لکسویا |
|---|---|---|---|
| منابع | مشترک با دهها کاربر دیگر | اختصاصی، با مدیریت خودتان | اختصاصی برای هر پروژه |
| صف و ورکر | معمولاً ندارد یا محدود است | با Supervisor، خودتان تنظیم میکنید | پروژهی جدا برای ورکر |
| زمانبند | cron محدود | cron کامل | فراخوانی هر دقیقه |
| دیپلوی | آپلود دستی یا Git روی هاست | خودتان با اسکریپت | push به ریپازیتوری و build خودکار |
| نگهداری و امنیت | با سرویسدهنده | با شما | با ما |
| هزینه | کم و ثابت | کم، ولی وقت شما گران است | مصرفی و ساعتی |
برای یک سایت شرکتی ساده با چند صد بازدید روزانه، هاست اشتراکی هنوز ارزانترین انتخاب است. اگر صف، ورکر یا دیپلوی مکرر دارید، هزینهی نگهداری سرور مجازی از اختلاف قیمت بیشتر میشود.
شش قدم، از ریپازیتوری تا دامنه. هیچکدام نیاز به SSH ندارد.
گیتهاب، گیتلب یا گیتیا را وصل کنید و شاخهی اصلی را انتخاب کنید.
نوع لاراول را انتخاب کنید. اگر ریپازیتوری Dockerfile دارد، مسیرش را بدهید؛ وگرنه قالب آمادهی لاراول استفاده میشود.
APP_KEY، اتصال دیتابیس و QUEUE_CONNECTION را وارد کنید. رمزها در پنل میمانند، نه در ریپازیتوری.
بیلد، نصب وابستگی و ریلیز انجام میشود. لاگ هر مرحله باز است و مرحلهی شکستخورده را نشان میدهد.
یک پروژهی Supervisor با دستور php artisan queue:work بسازید تا صف جدا از ترافیک وب پردازش شود.
دامنهی اختصاصی را وصل کنید یا از سابدامین رایگان استفاده کنید؛ گواهی SSL خودکار صادر و تمدید میشود.
پنج تنظیمی که تفاوت بین «روی سرور بالا آمد» و «در تولید کار میکند» را میسازد.
درایور صف را Redis بگذارید و ورکر را جدا اجرا کنید. jobهای شکستخورده باید retry و لاگ داشته باشند.
schedule:run هر دقیقه فراخوانی میشود و kernel.php شما را اجرا میکند؛ نیازی به تعریف cron در پنل نیست.
Reverb پورت و دامنهی جدا میگیرد و کنار پروژهی اصلی اجرا میشود. برای بار سنگین، ورکر و وبسوکت را از هم جدا نگه دارید.
اگر روی Redis کار میکنید، Horizon هم بالا میآید. مسیرش را با احراز هویت محافظت کنید.
FILESYSTEM_DISK=s3 تا آپلودها با هر دیپلوی از بین نروند و بین نسخهها مشترک بمانند.
هزینه بر اساس منابعی که پروژه مصرف میکند حساب میشود: پردازنده، حافظه، دیسک و ترافیک، بهصورت ساعتی. پلن ثابت با سقف پنهان نداریم؛ ترکیب منابع را خودتان انتخاب میکنید و فقط همان را میپردازید.
بیشترین قطعی مهاجرت از دو جا میآید: ایمیل تراکنشی و درگاه پرداخت. این دو را جدا برنامهریزی کنید.
دیتابیس را دامپ کنید و storage/app/public را کپی کنید.
ریپازیتوری را بدون .env و vendor بالا ببرید.
APP_URL، SESSION_DOMAIN و اتصال دیتابیس جدید را تنظیم کنید.
migrate --force را اجرا و درگاه پرداخت و ورود کاربران را تست کنید.
رکورد دامنه را عوض کنید و تا پایدار شدن، هاست قبلی را خاموش نکنید.
اینها خطاهایی هستند که بیشتر از همه در پشتیبانی تکرار میشوند.
راهحل
اغلب APP_KEY خالی است یا پوشهی storage اجازهی نوشتن ندارد. کلید را بسازید و مجوز پوشهها را درست کنید.
راهحل
ورکر بالا نیست یا QUEUE_CONNECTION به درایور اشتباه اشاره میکند. پروژهی ورکر را اجرا و درایور را اصلاح کنید.
راهحل
فایلها روی دیسک محلی کانتینر ذخیره شدهاند. FILESYSTEM_DISK را به S3 تغییر دهید.
راهحل
دامنهی سشن با دامنهی فعلی نمیخواند یا پروکسیها trusted نیستند. SESSION_DOMAIN و trusted proxies را تنظیم کنید.
راهحل
دسترسی به packagist از داخل ایران پایدار نیست. دیپلوی را در خوشهی آلمان اجرا کنید.
راهحل
مرحلهی build فرانت اجرا نشده یا کش کانفیگ مانده است. npm run build و config:cache را اضافه کنید.
در هاست اشتراکی PHP فقط برای پاسخ به یک درخواست وب اجرا میشود و ورکر دائمی جایی ندارد. هاست لاراول امکان اجرای همیشگی صف، زمانبند و دستورهای artisan را میدهد.
ریپازیتوری را وصل کنید، متغیرها را وارد کنید و اولین دیپلوی را ببینید. سابدامین و SSL رایگان از همان ابتدا فعال است.
شروع دیپلوی لاراول