تشغيل مشاريع Node.js في الإنتاج باستخدام PM2: دليل اللوحة
لوضع مشاريع Node.js وExpress الخاصة بك في مرحلة الإنتاج على VPS، قم بتعيين وضع مجموعة PM2 وإعادة التشغيل التلقائي وحد الذاكرة وإعدادات تدوير السجل على اللوحة.
#node.js
#pm2
#deploy
#express
#nestjs
VDS Panel Ekibi
Ürünü geliştiren ekip
~8 dk
okuma
النشر
kategori
Node.js هو وقت تشغيل يعمل مع حلقة حدث في موضوع واحد. تتمتع هذه البنية بأداء هائل لخوادم API، ولكن لها حدودان: في حالة حدوث عطل، تموت العملية، ولا تعمل بالتوازي مثل العديد من نوى وحدة المعالجة المركزية. PM2 هو مدير عمليات مصمم للتغلب على هذين الحدين. إنها إحدى الأدوات الرائدة المستخدمة لنشر Production Node.js.
في هذا الدليل، سنشرح ما يفعله PM2 في الإنتاج، وما هي الإعدادات التي تهمك ولماذا، وكيف يمكنك إدارة هذه الإعدادات من خلال الواجهة مع لوحة VDS.
Bir bakışta
99.9%
هدف وقت التشغيل
4-8×
الإنتاجية مع الكتلة
<1 ثانية
إعادة التشغيل التلقائي
0
إعادة تحميل وقت التوقف عن العمل
ماذا يفعل PM2؟
PM2 “يشيطن” عمليات Node.js الخاصة بك. حسنًا:
إعادة تشغيل العملية عند تعطلها
فتح أكثر من عملية وتوزيع الحمل (وضع المجموعة)
يكتب السجلات إلى الملف ويقوم بتدويرها
يدير حركة المرور دون انقطاع بين عمليات إعادة التشغيل
يراقب الذاكرة/وحدة المعالجة المركزية، ويعيد تشغيل العملية التي تتجاوز الحدود
من الممكن أيضًا تشغيل Node.js باستخدام systemd، لكنك تحتاج إلى تثبيت الميزات المذكورة أعلاه واحدة تلو الأخرى.
ما أهمية وضع المجموعة؟
يقوم Node.js بتشغيل مؤشر ترابط واحد بشكل افتراضي. إذا كنت تقوم بتشغيل عملية Node على خادم VPS رباعي النواة، فستظل سعة وحدة المعالجة المركزية لديك بنسبة 75% خاملة. يفتح وضع المجموعة PM2 العديد من العمليات المنفذة مثل مراكز وحدة المعالجة المركزية ويوزع الحمل فيما بينها:
ص0
4-8×
المزيد من الإنتاجية
وضع المجموعة مقارنةً بوضع المثيل الفردي على VPS رباعي النواة.
التثبيت الكلاسيكي مقابل اللوحة
الكلاسيكية
دليل PM2 مع المحطة
تثبيت npmpm2 -g (تثبيت عالمي)
اكتب النظام البيئي.config.js
تعلم أوامر تشغيل/إيقاف/إعادة تحميل PM2
تتبع السجل مع سجلات PM2
البدء عند التمهيد مع حفظ PM2 + بدء تشغيل PM2
SSH + إعادة التحميل اليدوي للتحديث
واجهة
مع لوحة VDS
أضف مشروعًا، وحدد Node.js
قم بتعيين عدد مثيلات المجموعة باستخدام شريط التمرير
حد الذاكرة، إعادة التشغيل التلقائي، دوران السجل تلقائيًا
بث السجل المباشر على اللوحة
التشغيل التلقائي عند التمهيد (مثبت بالفعل)
Git Push → إعادة التحميل التلقائي بدون توقف
التثبيت خطوة بخطوة باستخدام اللوحة
01
أضف مشروع Node.js
قم بربط أو ضغط مستودع GitHub. تكتشف اللوحة package.json، وتستخدم "scripts.start" أو نقطة الإدخال التي تحددها.
02
إعداد الكتلة
شريط تمرير لعدد المثيلات: 1 (وضع الشوكة) لعدد وحدات المعالجة المركزية (CPU) الخاصة بخادم VPS الخاص بك. بالنسبة لمعظم واجهات برمجة التطبيقات، يعتبر 2-4 مثاليًا.
03
ضبط حد الذاكرة
مثل 256 ميجابايت، 512 ميجابايت، 1 جيجابايت. سيتم إعادة تشغيل العامل الذي يتجاوز هذا الحد تلقائيًا. يتم التسامح مع تسرب الذاكرة، ويستمر التطبيق في العمل.
04
أدخل متغيرات البيئة
NODE_ENV=الإنتاج، DATABASE_URL، مفاتيح واجهة برمجة التطبيقات. لا تتم كتابته إلى Git، بل يتم تخزينه في القبو السري للوحة ويتم إدخاله في وقت التشغيل.
05
ربط المجال
اسم المجال المخصص أو المجال الفرعي. تحصل اللوحة تلقائيًا على شهادة Let's Encrypt وتوجه الوكيل العكسي nginx إلى منفذ 3000 الخاص بك.
06
اضغط على نشر
سيتم تفعيل تطبيقك خلال 90 ثانية تقريبًا. عند إجراء دفعة git، يتم تشغيل إعادة التحميل بدون توقف.
إعادة التحميل بدون توقف
إحدى أقوى ميزات PM2 هي إعادة التحميل الرائعة. عند نشر التعليمات البرمجية الجديدة:
يبدأ PM2 العمال الجدد
يبدأ العمال الجدد بالاستماع
ينتظر العمال القدامى لإنهاء طلباتهم الحالية (الإغلاق السلس)
العمال القدامى يغلقون أبوابهم
ولا يشعر المستخدم بأي انقطاع. تقوم لوحة VDS بإجراء كل عملية نشر باستخدام هذه الإستراتيجية.
إشارة الاغلاق رشيقة
إذا كان تطبيق Node.js الخاص بك يستمع لإشارة SIGINT أو SIGTERM، فعند إيقاف تشغيل PM2، فإنه يمنح تطبيقك 10 ثوانٍ لتنفيذ مهام التنظيف مثل إغلاق اتصالات قاعدة البيانات المفتوحة ومسح ذاكرة التخزين المؤقت. تقوم اللوحة بتعيين هذه المرة بشكل افتراضي.
الدفاع ضد تسرب الذاكرة
يعد تسرب ذاكرة Node.js أمرًا شائعًا؛ خاصة عندما يتم نسيان مستمع الحدث وتنمو ذاكرة التخزين المؤقت العالمية. يوفر إعداد P0 لـ PM2 الحل:
ص1
في واجهة اللوحة، تكون هذه القيمة عبارة عن شريط تمرير. إذا حددت 512M، فسيقوم PM2 بإعادة تشغيل العامل بصمت عندما يتجاوز 512 ميجابايت. ويواصل العمال الآخرون التعامل مع حركة المرور.
تبعيات DEV في الإنتاج
يتم تثبيته باستخدام اللوحة P0، ولم يتم تثبيت تبعيات التطوير. إذا قمت باستيراد حزمة في P1 في وقت التشغيل، فسوف يفشل بناء الإنتاج. ستشاهد هذه الأخطاء في سجل إنشاء اللوحة.
إدارة السجل
يكتب PM2 P0 وP1 لكل عامل. ومع مرور الوقت، تصبح هذه الملفات ممتلئة. تقوم اللوحة تلقائيًا بتنشيط تدوير السجل:
التدوير عندما يصل حجم الملف إلى 100 ميجابايت
يتم الاحتفاظ بـ 5 ملفات قديمة
يتم بث السجلات مباشرة من لوحة واجهة المستخدم (بدون فتح محطة طرفية)
الرصد والتنبيهات
لكل عملية PM2، تقوم اللوحة بما يلي:
يتدفق الرسم البياني لوحدة المعالجة المركزية والذاكرة بشكل مباشر
تتم مراقبة عدد مرات إعادة التشغيل (عدد مرات إعادة التشغيل = إشارة خطأ)
قياس وقت الاستجابة عن بعد (إذا تمت إضافة شاشة الحالة السريعة أو ما شابه ذلك)
إطلاق البرنامج الخفي cpulimit تلقائيًا عند تجاوز حد وحدة المعالجة المركزية (حماية المشاريع المجاورة)
أطر عمل Node.js
تم اختبار لوحة VDS باستخدام الأطر التالية واكتشافها تلقائيًا:
Express، شائع، سريع، بسيط
NestJS، على مستوى المؤسسات، مع التركيز على TypeScript
Fastify، التحقق من صحة مخطط JSON المدمج والسريع للغاية
Koa.js، الوريث الحديث لمبدعي Express
Hapi، نظام بيئي واسع النطاق وموجه نحو التكوين
AdonisJS، MVC يشبه Laravel
تقرأ اللوحة P0 الخاص بك، وتكتشف إطار العمل الصحيح، وتحدد برنامج التشغيل المناسب.
خاتمة
PM2 أمر لا بد منه لإنتاج Node.js. وضع المجموعة، وإعادة التشغيل التلقائي، وحد الذاكرة، وتدوير السجل، وإعادة التحميل بدون توقف، كلها تأتي مع برنامج خفي واحد. تسمح لك لوحة VDS بإدارة هذه الإعدادات من الواجهة دون حفظ أمر المحطة الطرفية.
لبدء تشغيل مشروع Node.js الخاص بك، يمكنك إكمال إعداد اللوحة في 8 دقائق ورؤية مشروعك الأول عن طريق طلب عرض توضيحي من نموذج الاتصال.