راهاندازی پروژههای لاراول روی سرور مجازی و ابری

راهاندازی پروژههای لاراول روی سرور مجازی و ابری
انتخاب زیرساخت مناسب و پیکربندی صحیح سرور برای اپلیکیشنهای لاراول، فراتر از یک نیاز فنی ساده است؛ این موضوع مستقیما با تجربه کاربری، رتبه سئو و آینده کسبوکارتان گره خورده است. بسیاری از توسعهدهندگان، لاراول را به خاطر سینتکس زیبا و امکانات گستردهاش انتخاب میکنند، اما زمانی که نوبت به مرحله اجرا (Deployment) میرسد، با چالشهای ناشناختهای روبرو میشوند. کندی سرعت، خطاهای ۵۰۰ مکرر، یا عدم توانایی در مدیریت ترافیک همزمان، اغلب ناشی از کدنویسی بد نیست، بلکه ریشه در پیکربندی نامناسب سرور دارد.
در این مطلب طولانی و مرجع، ما قدمبهقدم از نقطه صفر یعنی انتخاب معماری سرور شروع میکنیم و تا پیشرفتهترین مباحث مقیاسپذیری و امنیت پیش میرویم. هدف این است که پس از مطالعه این مطلب، شما دانش کافی برای تبدیل شدن به یک DevOps تخصصی برای پروژههای لاراول را داشته باشید.
فصل اول: تحلیل و انتخاب معماری سرور
اولین سوالی که هر مدیر فنی یا توسعهدهندهای باید از خود بپرسد این است: «پروژه من در حال حاضر چه نیازهایی دارد و تا ۶ ماه آینده به چه سمتی میرود؟» پاسخ به این سوال، نوع سرور انتخابی شما را تعیین میکند. بیایید گزینهها را با دقت بررسی کنیم.
محدودیتهای هاست اشتراکی و راهکارهای مدیریت شده
برای پروژههای بسیار کوچک، نمونه کارها یا وبسایتهای شخصی که ترافیک چندانی ندارند، هاستهای اشتراکی سنتی ممکن است گزینه ارزانی باشند. اما لاراول یک فریمورک مدرن است که نیاز به دسترسی به خط فرمان (Terminal)، مدیریت وابستگیها (Composer) و تنظیمات خاص وبسرور دارد. در هاستهای اشتراکی، شما معمولا دسترسی SSH محدود دارید یا اصلا ندارید. صفها (Queues) که قلب تپنده پردازشهای پسزمینه لاراول هستند، روی هاست اشتراکی به سختی مدیریت میشوند و اغلب با محدودیت زمانی اجرای اسکریپت مواجه میشوید.
در این میان، سرویسهایی تحت عنوان هاست لاراول وجود دارند که در واقع نسخههای بهینهشدهای از هاستینگ هستند که پیشنیازهای این فریمورک را آماده کردهاند. این سرویسها برای کسانی که نمیخواهند درگیر پیچیدگیهای مدیریت سرور شوند گزینه مناسبی است، اما همچنان از نظر منابع و انعطافپذیری (مانند نصب اکستنشنهای خاص PHP یا تغییر کانفیگ Nginx) محدودیتهایی دارند. اگر پروژه شما یک فروشگاه اینترنتی جدی یا یک استارتاپ در حال رشد است، احتمالا خیلی زود از این محیط عبور خواهید کرد.
سرور مجازی (VPS): تعادل میان هزینه و قدرت
نقطه شیرین (Sweet Spot) برای اکثر پروژههای لاراولی، سرور مجازی است. در این معماری، یک سرور فیزیکی قدرتمند با استفاده از تکنولوژیهای مجازیسازی به چندین سرور کوچکتر تقسیم میشود که هر کدام سیستمعامل و منابع اختصاصی خود را دارند.
زمانی که شما اقدام به خرید سرور مجازی میکنید، در واقع کلید یک خانه خالی را دریافت کردهاید. شما مسئولیت کامل نصب سیستمعامل، تامین امنیت و پیکربندی را بر عهده دارید. این موضوع اگرچه ترسناک به نظر میرسد، اما قدرت بینهایتی به شما میدهد. شما میتوانید نسخه دقیق PHP مورد نیازتان را کامپایل کنید، دیتابیس را تیون (Tune) کنید و فایروال را دقیقا مطابق نیازهای امنیتی خود ببندید. همچنین هزینه آن نسبت به آزادی عملی که دریافت میکنید، بسیار مقرونبهصرفه است.
سرور اختصاصی: قدرت بیپایان برای مقیاسهای بزرگ
وقتی پروژه شما به ترافیکهای بسیار سنگین میرسد (مثلا چندین هزار درخواست در ثانیه) یا پردازشهای بسیار سنگینی روی دادهها انجام میدهد، لایههای مجازیسازی میتوانند باعث سربار (Overhead) شوند. در این شرایط، مسئله اشتراک منابع با دیگران، حتی به مقدار کم هم قابل قبول نیست.
اینجاست که گزینه خرید سرور اختصاصی روی میز میآید. در این حالت، تمام سختافزار فیزیکی، از CPU و RAM گرفته تا دیسکهای پرسرعت NVMe، تماما در اختیار اپلیکیشن شماست. این معماری بالاترین سطح پایداری و پرفورمنس را ارائه میدهد اما هزینه نگهداری و اجاره آن بالاست و نیازمند دانش فنی عمیقتری برای مدیریت سختافزار و شبکه است.
زیرساخت ابری (Cloud Infrastructure)
زیرساختهای ابری مدرن ترکیبی از انعطافپذیری VPS و قدرت سرورهای اختصاصی را ارائه میدهند. ویژگی کلیدی ابر، مقیاسپذیری آنی است. شما میتوانید منابع سرور را در لحظه کم یا زیاد کنید. هرچند در این مقاله تمرکز ما بر روی کانفیگ دستی سرورهای لینوکسی (که پایه و اساس VPS و Cloud است) خواهد بود، اما تمامی مفاهیم مطرح شده روی سرورهای ابری نیز دقیقا قابل اجرا هستند.
فصل دوم: آمادهسازی سیستمعامل و ایمنسازی اولیه
فرض میکنیم شما یک سرور با سیستمعامل Ubuntu 22.04 یا 24.04 (نسخههای LTS که پایداری طولانیمدت دارند) تهیه کردهاید. اولین باری که وارد سرور میشوید، معمولا با کاربر root است. استفاده مداوم از روت خطرناک است.
۱. بهروزرسانی و ایجاد کاربر جدید
ابتدا مخازن سیستم را آپدیت کنید تا از نصب آخرین پچهای امنیتی مطمئن شوید:
apt update && apt upgrade -y
سپس یک کاربر جدید بسازید و به آن دسترسی sudo بدهید. ما نام این کاربر را مثلا laravel_admin میگذاریم:
adduser laravel_admin usermod -aG sudo laravel_admin
از این پس، تمام کارها را با این کاربر انجام دهید.
۲. پیکربندی فایروال (UFW)
اوبونتو ابزار سادهای به نام UFW برای مدیریت فایروال دارد. به صورت پیشفرض همه پورتهای ورودی باید بسته باشند، مگر آنهایی که صریحا باز میکنیم (SSH، HTTP و HTTPS).
ufw allow OpenSSH ufw allow 'Nginx Full' ufw enable
نکته مهم: اگر پورت SSH خود را تغییر دادهاید (که توصیه میشود)، حتما پورت جدید را قبل از فعالسازی فایروال باز کنید، وگرنه دسترسی خود به سرور را قطع خواهید کرد.
۳. تنظیم محدوده زمانی (Timezone)
برای اینکه لاگهای سرور و زمان ثبت رکوردها در دیتابیس (created_at) با زمان محلی یا زمان مورد نظر شما هماهنگ باشد، تایمزون سرور را تنظیم کنید:
dpkg-reconfigure tzdata
فصل سوم: نصب استک LEMP (Linux, Nginx, MySQL, PHP)
لاراول برای اجرا نیاز به یک وبسرور، یک پایگاه داده و مفسر PHP دارد. ما از Nginx استفاده میکنیم زیرا کارایی بسیار بالاتری در مدیریت کانکشنهای همزمان نسبت به Apache دارد.
۱. نصب Nginx
sudo apt install nginx
پس از نصب، سرویس را فعال کنید تا بعد از ریستارت سرور به صورت خودکار روشن شود:
sudo systemctl enable nginx sudo systemctl start nginx
۲. نصب پایگاه داده MySQL
شما میتوانید از MySQL یا MariaDB استفاده کنید. در اینجا MySQL سرور را نصب میکنیم:
sudo apt install mysql-server
بعد از نصب، اسکریپت امنیتی معروف مایاسکیوال را اجرا کنید. این اسکریپت از شما میپرسد که آیا میخواهید پلاگین اعتبارسنجی پسورد را فعال کنید، دسترسی روت از راه دور را ببندید و دیتابیس تست را حذف کنید یا خیر. پاسخ مثبت به این موارد امنیت دیتابیس شما را تضمین میکند.
sudo mysql_secure_installation
نکته مهم برای لاراول: در فایل تنظیمات MySQL، مطمئن شوید که کاراکتر ست پیشفرض روی utf8mb4 تنظیم شده باشد تا بتوانید از ایموجیها و کاراکترهای خاص زبان فارسی بدون مشکل استفاده کنید.
۳. نصب PHP و اکستنشنهای مورد نیاز
لاراول به اکستنشنهای خاصی از PHP نیاز دارد. نسخه PHP باید متناسب با نسخه لاراول پروژه شما باشد (مثلا PHP 8.2 یا 8.3). برای داشتن جدیدترین نسخهها، معمولا مخزن ondrej/php را اضافه میکنیم:
sudo add-apt-repository ppa:ondrej/php sudo apt update
حالا PHP و تمامی اکستنشنهای ضروری را نصب میکنیم:
sudo apt install php8.2-fpm php8.2-mysql php8.2-common php8.2-cli php8.2-gd php8.2-curl php8.2-xml php8.2-mbstring php8.2-bcmath php8.2-zip php8.2-intl php8.2-tokenizer
۴. پیکربندی PHP-FPM
در معماری Nginx، درخواستهای PHP به سرویس PHP-FPM فرستاده میشوند. باید مطمئن شوید که تنظیمات php.ini برای محیط پروداکشن بهینه شده است. فایل تنظیمات معمولا در مسیر /etc/php/8.2/fpm/php.ini قرار دارد. مقادیر زیر را بررسی و تغییر دهید:
upload_max_filesize: افزایش دهید (مثلا به 64M) تا کاربران بتوانند فایل آپلود کنند.post_max_size: باید کمی بیشتر از مقدار آپلود باشد (مثلا 68M).memory_limit: برای اجرای اسکریپتهای سنگین لاراول، مقدار 128M پیشفرض ممکن است کم باشد. آن را به 256M یا 512M تغییر دهید.max_execution_time: اگر پردازشهای طولانی دارید، این عدد را از ۳۰ ثانیه افزایش دهید.
بعد از اعمال تغییرات، سرویس را ریستارت کنید:
sudo systemctl restart php8.2-fpm
۵. نصب Composer
کامپوزر مدیر بسته استاندارد PHP است و بدون آن عملا نمیتوانید پروژه لاراول را دیپلوی کنید، چرا که مسئول مدیریت تمامی وابستگیها و پکیجهای پروژه است. نصب کامپوزر شامل دو مرحله است که باید به صورت مستقل و پشت سر هم اجرا شوند.
۱. دانلود و اجرای اسکریپت نصب
این دستور، اسکریپت نصب را با استفاده از curl دانلود کرده و آن را از طریق | (پایپ) مستقیما به مفسر php میفرستد تا اجرا شود. این کار فایل اجرایی composer.phar را در پوشه فعلی شما ایجاد میکند:
curl -sS https://getcomposer.org/installer | php
۲. انتقال فایل اجرایی به مسیر سیستمی
پس از اتمام موفقیتآمیز دستور اول، باید فایل اجرایی ایجاد شده را به یک مسیر سراسری منتقل کنید تا بتوانید در هر نقطه از سرور از آن استفاده کنید. این دستور باید جداگانه و با استفاده از sudo اجرا شود:
sudo mv composer.phar /usr/local/bin/composer
پس از اجرا، با دستور composer --version از نصب صحیح و کامل آن مطمئن شوید.
فصل چهارم: استراتژیهای دیپلوی و مدیریت فایلها
پس از اینکه زیرساخت سرور آماده شد، نوبت به حساسترین مرحله یعنی انتقال کد یا همان Deploy میرسد. در روشهای سنتی، بسیاری از افراد از FTP برای آپلود فایلها استفاده میکردند، اما این روش برای پروژههای لاراول که شامل هزاران فایل و وابستگی هستند، عملا منسوخ و خطرناک است. آپلود ناقص فایلها میتواند کل سایت را از دسترس خارج کند.
استفاده از Git برای انتقال امن
بهترین روش، استفاده از سیستم کنترل نسخه Git است. شما باید پروژه خود را روی سرور «کلون» (Clone) کنید. این کار چند مزیت بزرگ دارد: ۱. انتقال سریع تغییرات تنها با چند دستور ساده. ۲. امکان بازگشت سریع به نسخه قبل (Rollback) در صورت بروز باگ. ۳. عدم نیاز به آپلود دستی فایلها و کاهش خطای انسانی.
پس از انتقال کدها، باید پوشههایی که لاراول برای عملکرد خود به آنها نیاز دارد را آماده کنید. لاراول نیاز دارد در برخی پوشهها مانند storage و bootstrap/cache فایلهای لاگ، سشن و کش را بنویسد. اگر دسترسی نوشتن به این پوشهها داده نشود، با خطای ۵۰۰ مواجه میشوید.
در محیط لینوکس، مالکیت فایلها بسیار مهم است. وبسرور (Nginx) معمولا با کاربری به نام www-data اجرا میشود. بنابراین، باید مالکیت پوشههای پروژه را به این کاربر تغییر دهید تا وبسرور بتواند فایلها را بخواند و در پوشههای مجاز بنویسد.
chown -R www-data:www-data /var/www/my-app
مدیریت متغیرهای محیطی (.env)
امنیت کلیدهای رمزنگاری و اتصال دیتابیس در فایل .env نهفته است. هرگز و تحت هیچ شرایطی فایل .env سیستم لوکال خود را به سرور منتقل نکنید. در سرور، یک فایل .env جدید بسازید و مقادیر مربوط به دیتابیس پروداکشن، تنظیمات ایمیل و کلید APP_KEY را در آن وارد کنید.
همچنین مطمئن شوید که مقدار APP_DEBUG در سرور روی false تنظیم شده باشد. روشن بودن دیباگ در محیط واقعی باعث میشود در صورت بروز خطا، اطلاعات حساس سرور، پسوردها و ساختار دیتابیس به کاربر نمایش داده شود که یک فاجعه امنیتی است.
فصل پنجم: مدیریت پردازشهای پسزمینه و صفها (Queues)
یکی از قدرتهای اصلی لاراول، سیستم صف یا Queue است. کارهای سنگین مثل ارسال ایمیل، پردازش تصویر یا گزارشگیری نباید در لحظه درخواست کاربر انجام شوند، زیرا باعث کندی شدید پاسخگویی میشوند. این کارها باید به «صف» سپرده شوند تا در پسزمینه پردازش شوند.
نقش Supervisor در پایداری صفها
برای اجرای صفها در سرور، از دستور php artisan queue:work استفاده میشود. اما مشکل اینجاست که اگر این دستور به هر دلیلی متوقف شود (مثلا سرور ریستارت شود یا خطایی رخ دهد)، پردازش صفها قطع میشود.
اینجاست که ابزاری به نام Supervisor وارد میدان میشود. Supervisor یک ابزار مدیریت پردازش در لینوکس است که وظیفه دارد دائما دستور صف لاراول را زیر نظر داشته باشد. اگر پروسه صف بسته شد، Supervisor بلافاصله آن را دوباره اجرا میکند. این ابزار تضمین میکند که سیستم صف شما همیشه زنده و فعال است.
انتخاب درایور مناسب برای صف
در محیط لوکال، معمولا از درایور sync یا database برای صفها استفاده میشود. اما در محیط سرور و زیر بار ترافیک بالا، استفاده از دیتابیس به عنوان محل ذخیره صفها ایده خوبی نیست، زیرا باعث درگیری بیش از حد دیتابیس اصلی و قفل شدن جداول میشود (Deadlock).
توصیه اکید این است که از Redis به عنوان درایور صف استفاده کنید. ردیس یک پایگاه داده درون حافظه (In-Memory) است که سرعت فوقالعاده بالایی دارد و میتواند هزاران وظیفه (Job) را در ثانیه مدیریت کند بدون اینکه فشاری به دیتابیس اصلی وارد شود.
برای کسب اطلاعات بیشتر و آشنایی با Redis، مقاله مورد نظر را مطالعه کنید.
فصل ششم: بهینهسازی عملکرد و کشینگ پیشرفته
وقتی کد روی سرور قرار گرفت، باید مطمئن شویم که با حداکثر سرعت اجرا میشود. لاراول ابزارهای قدرتمندی برای کش کردن کانفیگها و روتها دارد. در حالت توسعه (Development)، لاراول برای هر درخواست، تمام فایلهای کانفیگ و روتها را مجددا اسکن میکند تا تغییرات شما را ببیند. اما در سرور، فایلها ثابت هستند و نیازی به این اسکن تکراری نیست.
با اجرای دستورات کش لاراول، تمام فایلهای تنظیمات و مسیرها در یک فایل واحد کامپایل میشوند که سرعت بوت شدن فریمورک را چندین برابر میکند:
php artisan config:cache php artisan route:cache php artisan view:cache
فعالسازی OPcache
PHP یک زبان مفسری است، یعنی کدها در هر بار اجرا خط به خط ترجمه میشوند. ابزاری به نام OPcache که روی نسخههای جدید PHP نصب است، کد کامپایل شده را در رم ذخیره میکند. با فعالسازی و تنظیم صحیح OPcache در فایل php.ini، پیاچپی دیگر نیازی به ترجمه مجدد کدهای تکراری ندارد و مستقیما آنها را از حافظه اجرا میکند. این کار میتواند پرفورمنس اپلیکیشن را تا ۳۰ درصد افزایش دهد.
بهینهسازی Autoloader کامپوزر
مدیریت بسته Composer نیز نقش مهمی در سرعت دارد. هنگام نصب پکیجها روی سرور، حتما باید از فلگهای بهینهسازی استفاده کنید تا کامپوزر، نقشه کلاسها (Class Map) را بهینه کند و زمان کمتری صرف پیدا کردن فایلها شود:
composer install --optimize-autoloader --no-dev
گزینه --no-dev بسیار مهم است؛ زیرا پکیجهای توسعه (مثل ابزارهای تست یا دیباگ بار) نباید روی سرور نصب شوند چون هم فضا اشغال میکنند و هم ممکن است خطرات امنیتی داشته باشند.
فصل هفتم: استراتژیهای پشتیبانگیری و امنیت دادهها
هیچ سروری، حتی بهترین سرورهای ابری جهان، ۱۰۰ درصد تضمین شده نیستند. هارد دیسکها میسوزند، دیتاسنترها آتش میگیرند و هکرها حمله میکنند. تنها راه نجات کسبوکارتان در روز مبادا، داشتن یک استراتژی بکاپ قدرتمند است.
قانون ۱-۲-۳ در بکاپگیری
یک قانون طلایی در دنیای IT وجود دارد:
- حداقل ۳ نسخه از دادهها داشته باشید.
- آنها را روی ۲ مدیای مختلف ذخیره کنید.
- ۱ نسخه را حتما خارج از سرور اصلی (Off-site) نگه دارید.
لاراول پکیجهای عالی مانند spatie/laravel-backup دارد که میتواند به صورت خودکار از دیتابیس و فایلها نسخه پشتیبان تهیه کند و آن را مستقیما روی فضاهای ذخیرهسازی ابری (مانند S3 یا فضاهای ابری ایرانی سازگار با S3) آپلود کند. تنظیم کنید که این فرآیند هر شب انجام شود و سیستم در صورت شکست خوردن بکاپ، به شما ایمیل یا پیام اسلک ارسال کند.
ایمنسازی دسترسی SSH
یکی از رایجترین حملات به سرورها، حملات Brute-force روی پورت SSH است که رباتها سعی میکنند پسورد روت را حدس بزنند. برای مقابله با این موضوع:
- ورود با کاربر
rootرا غیرفعال کنید. - احراز هویت با پسورد را غیرفعال کرده و فقط از SSH Key استفاده کنید.
- ابزار Fail2Ban را نصب کنید. این ابزار لاگهای سیستم را بررسی میکند و اگر کسی چند بار رمز اشتباه وارد کرد، IP او را برای مدت مشخصی بلاک میکند.
فصل هشتم: مقیاسپذیری و آمادگی برای رشد
زمانی میرسد که یک سرور واحد دیگر پاسخگوی ترافیک کاربران نیست. در این مرحله باید معماری را تغییر دهید.
جداسازی سرویسها (Decoupling)
اولین قدم در مقیاسپذیری، جدا کردن سرویسهاست. به جای اینکه وبسرور، دیتابیس و ردیس همه روی یک ماشین باشند، آنها را جدا کنید:
- یک یا چند سرور فقط مسئول اجرای کد PHP (وبسرور) باشند.
- یک سرور قدرتمند فقط مخصوص دیتابیس باشد.
- یک سرور کوچکتر برای ردیس و کشینگ اختصاص دهید.
این کار باعث میشود منابع هر سرویس مستقل باشد و اگر مثلا دیتابیس تحت فشار بود، روی سرعت وبسرور تاثیر منفی مستقیم نگذارد.
استفاده از Load Balancer
وقتی چندین وبسرور دارید، نیاز به یک توزیعکننده بار (Load Balancer) دارید تا ترافیک ورودی را بین سرورها تقسیم کند. اگر یکی از سرورها از کار بیفتد، Load Balancer به هوشمندی آن را از مدار خارج کرده و ترافیک را به سرورهای سالم میفرستد. این یعنی آپتایم بالا و سرویسدهی بدون وقفه به کاربران.
جمعبندی و کلام آخر
راهاندازی پروژه لاراول روی سرور شخصی یا ابری، اگرچه نیازمند دانش فنی و صرف زمان برای پیکربندی است، اما نتیجه آن داشتن زیرساختی است که دقیقا منطبق بر نیازهای شماست. شما دیگر محدود به قوانین شرکتهای هاستینگ نیستید و میتوانید هر تکنولوژی جدیدی را که بخواهید پیادهسازی کنید.
در این مسیر طولانی، از انتخاب سیستمعامل تا تنظیمات ریز امنیتی، همواره به یاد داشته باشید که پایداری مهمتر از سرعت است و امنیت مقدم بر هر ویژگی دیگری است. با مانیتورینگ مداوم لاگها و بهروز نگه داشتن سرور، میتوانید خواب راحتی داشته باشید و مطمئن باشید که اپلیکیشن شما در بهترین شرایط ممکن در حال سرویسدهی به کاربران است.
اگر اولین بار است که این کار را انجام میدهید، پیشنهاد میکنم ابتدا روی یک سرور آزمایشی تمام این مراحل را تمرین کنید، خراب کنید و دوباره بسازید تا قبل از انتقال پروژه اصلی، اعتمادبهنفس کافی را به دست آورید.
سوالات متداول
Nginx از نظر معماری رویدادمحور (Event-Driven) است که به آن اجازه میدهد تعداد بسیار بیشتری از اتصالات همزمان (Concurrent Connections) را با مصرف منابع کمتر مدیریت کند. لاراول به دلیل ساختار خود، از طریق فایل index.php اجرا میشود و Nginx در مدیریت فایلهای استاتیک و ارسال سریع درخواستها به PHP-FPM کارایی بالاتری دارد.
لاراول باید بتواند در دو پوشه اصلی بنویسد: storage و bootstrap/cache. مالکیت این پوشهها و کل دایرکتوری پروژه باید به کاربر وبسرور (معمولا www-data) تغییر داده شود. این کار دسترسی نوشتن برای وبسرور را تضمین میکند و از خطاهای ۵۰۰ رایج که به دلیل عدم دسترسی رخ میدهند، جلوگیری مینماید. این تنظیمات باید با استفاده از دستورات مدیریت فایل لینوکس (مانند chown برای تغییر مالکیت) اعمال شوند.
استفاده از دیتابیس برای صفها باعث افزایش بار روی سرور دیتابیس اصلی و ایجاد مشکلات قفلشدگی (Locking) میشود. Redis یک انبار داده درون حافظه (In-Memory Data Store) فوقالعاده سریع است که میتواند عملیات خواندن و نوشتن صفها را بدون ایجاد سربار روی دیتابیس اصلی (MySQL/PostgreSQL) انجام دهد و عملکرد اپلیکیشن را به شدت بهبود بخشد. همچنین Redis برای ذخیره دادههای کش (Cache) بسیار موثرتر از درایور file یا database است.
پس از نصب کد با Git، ترتیب صحیح اجرای دستورات دیپلوی چیست؟
پس از دریافت آخرین تغییرات کد، باید وابستگیها را نصب، دیتابیس را بهروز کنید و در نهایت تنظیمات و روتها را کش نمایید. ترتیب صحیح این مراحل است:
- نصب وابستگیهای Composer با فلگهای بهینهسازی و حذف پکیجهای توسعه.
- اجرای مایگریشنها برای بهروزرسانی ساختار دیتابیس.
- کش کردن تنظیمات (config)، روتها (route) و نماها (view) برای افزایش سرعت بارگذاری فریمورک.
- در نهایت، ریستارت کردن سرویس PHP-FPM برای اعمال کامل تغییرات.
این متغیر برای توسعه و عیبیابی (Debugging) استفاده میشود. اگر در محیط پروداکشن فعال باشد، در صورت بروز کوچکترین خطا، فریمورک تمام جزئیات حساس فنی، شامل متغیرهای محیطی، کلیدهای امنیتی، پسورد دیتابیس و مسیر فایلها را به کاربر نهایی نمایش میدهد. این افشای اطلاعات یک آسیبپذیری امنیتی جدی است. این مقدار باید حتما در فایل .env پروداکشن روی false تنظیم شود.
Supervisor یک ابزار مدیریت پردازش (Process Manager) در لینوکس است که تضمین میکند سرویسهای حیاتی مانند صفهای لاراول همواره در حال اجرا باشند. اگر پروسه صف به دلیل خطا یا ریستارت سرور متوقف شد، Supervisor بلافاصله آن را مجددا راهاندازی میکند. این کار پایداری سیستم صف را به صورت خودکار حفظ کرده و مانع از قطع شدن پردازشهای پسزمینه میشود.































شما میتوانید دیدگاه خود را در مورد این مطلب با ما با اشتراک بگذارید.