اگر از Next.js استفاده می کنید، و اپلیکیشن خودتان را می خواهید روی یک سرور اختصاصی اجرا و Deploy کنید، ممکن است به این مساله برخورده باشید که یک زمان Downtime کوچکی برای اپلیکیشن، هنگام بهروزرسانیها خواهید داشت.
مهمترین بخش این Downtime به خاطر این است که باید کد شما یکبار روی محل انتشار پروژه Build شود و این مورد اگر پروژه ی شما بزرگ باشد، طول میکشد و کاربر در این زمان نمی تواند از اپلیکیشن و سایت شما استفاده شود. اگر در سایت پرداخت الکترونیک داشته باشید هم این مشکل بیشتر خودش را نشان میدهد و نارضایتی کاربران را به دنبال خواهد داشت.
اما راه حل:
ابتدا کد خود (Branch نهایی) را آپلود کنید (یا اگر امکان نصب git روی هاست وجود دارد، با command های مرتبط کد را روی سرور به روز کنید)
تنظیمات Next.js به شما اجازه می دهد که شاخه ای که قرار است Build در آن انجام شود را تغییر دهید. این خط را در فایل next.config.js خود بیفزایید:
distDir: process.env.BUILD_DIR || '.next'
با این خط به Builder میگوییم که شاخه ی Build همان پیش فرض خودش است، مگر اینکه من در command یک چیزی با پارامتر BUILD_DIR برای تو بفرستم.
از این به بعد هر وقت خواستید Build انجام دهید با این command انجام دهید.
BUILD_DIR=tempbuild npm run build
بعد از بیلد شدن در شاخه ی tempbuild می توانید شاخه ی next را پاک کنید و اسم این شاخه را به next تغییر دهید.
rm -rf .next
mv tempbuild .next
بعد از این کار می توانید pm2 یا از هر چیزی که استفاده می کنید را ریستارت کنید تا تغییرات شما اعمال شوند.
در بدترین حالت ۱ الی ۲ ثانیه Downtime خواهید داشت.