چرا نباید در لیارا از PM2 و یا Nodemon و Forever استفاده کنیم!
۲۳ اسفند ۱۳۹۷
احتمالا شما هم مانند سایر برنامهنویسهای JavaScript از یکی از ابزارهای بروزرسانی خودکار برنامهیتان استفاده میکنید. این ابزار ها در اجرای برنامههای NodeJS در سمت کاربر یا سرور نقشی اساسی دارند. اما در سرویس ابری لیارا اکیدا توصیه میکنیم که از هیچکدام از این ابزارها استفاده نکنید. شاید سادگی زیباتر است 🙂
node app.js
خب، پس از این مقدمه کوتاه بیایید نگاهی دقیقتر به کاربردهای این ابزارهای محبوب بیندازیم. بیشترین استفاده های این ابزار ها برای موارد زیر است:
- بروزرسانی خودکار مرورگر
- بروزرسانی برنامه پس از تغییر کدهای برنامه
- تلاش برای اجرای دوباره برنامه پس از دریافت خطا و بستهشدن ناگهانی آن
- استفاده برای مانیتور کردن منابع مصرفی برنامه
- کلاسترکردن برنامه و افزایش سرعت
همانطور که مشاهده میکنید، اکثر این کاربریها در زمان توسعهی نرمافزار کاربردی هستند و در زمان اجرای برنامه برای کاربران نهاییمان و یا همان نسخهی production برنامه، نیازی به این امکانات نداریم و بیشتر باعث کندشدن برنامه میشوند.
هر بار که برنامهیتان را روی سرورهای لیارا مستقر میکنید، بهصورت خودکار بهروز شده و restart میشود. نکتهی جذابتر این است که هر زمان برنامهیتان با یک خطای کنترل نشده مواجه شود و اصطلاحا crash کند، لیارا به صورت خودکار برنامه را ریاستارت میکند تا برنامهیتان پاسخگوی کاربرانتان باشد. در این زمان میتوانید با خیال راحت لاگهای برنامه را از داشبورد لیارا مشاهده کنید و خطا را رفع کنید. ضمنا لیارا گزارشات منابع مصرفی برنامهیتان را در اختیارتان قرار میدهد. بهزودی هم قابلیت کلاسترکردن برنامه به پنل لیارا اضافه میشود.
با این شرایط، همیشه بهتر است که اسکریپت start تان، یک node app.js
ساده باشد.
اما برای محیط توسعه چه کنیم؟ در هر حال، در محیط توسعه به این ابزارها نیاز داریم. برای حل این مشکل، میتوانید یک اسکریپت دیگر با نام دلخواهتان به لیست اسکریپتها در فایل package.json
برنامهیتان اضافه کنید و از ابزار دلخواهتان برای سرو کردن برنامه استفاده کنید.
// package.json
{
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
}
}
در مثال بالا مشاهده میکنید که از ۲ اسکریپت برای اجرای برنامه در محیطهای توسعه و پروداکشن استفاده شدهاست. لیارا از دستور npm start
برای اجرای برنامه استفاده خواهد کرد و شما برای محیط توسعهیتان میتوانید از npm run dev
استفاده کنید که برنامه را با Nodemon اجرا خواهد کرد.