ما هو PM2؟
PM2، أو “Parallel Multithreaded Machine”، هو أداة مفتوحة المصدر ومتقدمة لإدارة العمليات، خاصةً لتطبيقات Node.js. يهدف PM2 إلى تبسيط عملية نشر وصيانة تطبيقات Node.js، وضمان استمرار عملها بكفاءة وموثوقية. بالإضافة إلى ذلك، يمكن استخدام PM2 مع تطبيقات أخرى مثل Python و Java، مما يجعله أداة متعددة الاستخدامات.
الميزات الرئيسية لـ PM2:
- إدارة العمليات: يبسط PM2 إدارة تطبيقات Node.js من خلال توفير واجهة سهلة الاستخدام لبدء وإيقاف وإعادة تشغيل التطبيقات.
- المراقبة: يوفر PM2 مراقبة في الوقت الفعلي لأداء التطبيقات، مما يسمح للمطورين بتحديد المشكلات المحتملة وحلها بسرعة.
- إعادة التشغيل التلقائي: يراقب PM2 التطبيقات ويعيد تشغيلها تلقائيًا في حالة حدوث أعطال أو أخطاء غير متوقعة.
- التجميع: يدعم PM2 التجميع، مما يسمح بتشغيل تطبيقات Node.js على عدة نوى معالج لتحسين الأداء.
- مُوازن التحميل: يتضمن PM2 مُوازن تحميل مُضمّن لتوزيع حركة المرور الواردة عبر مثيلات متعددة من التطبيق، مما يزيد من التوفر وقابلية التوسع.
- النشر: يسهل PM2 عملية نشر التطبيقات عن طريق توفير أدوات لنقل التعليمات البرمجية وتحديثها على الخوادم البعيدة.
- تسجيل الدخول: يدعم PM2 تسجيل الدخول المركزي، مما يسهل تجميع وتحليل سجلات التطبيقات من مصادر متعددة.
تثبيت PM2
يمكن تثبيت PM2 بسهولة باستخدام مدير الحزم npm (Node Package Manager) المثبت مع Node.js:
npm install -g pm2
سيؤدي هذا الأمر إلى تثبيت PM2 عالميًا على نظامك، مما يجعله متاحًا من أي دليل.
استخدام PM2
بمجرد تثبيت PM2، يمكنك استخدامه لإدارة تطبيقات Node.js الخاصة بك. فيما يلي بعض الأوامر الأساسية:
- بدء تطبيق:
pm2 start app.js
سيؤدي هذا الأمر إلى بدء تطبيق Node.js المسمى “app.js” وإدارته بواسطة PM2.
pm2 stop app
سيؤدي هذا الأمر إلى إيقاف التطبيق المسمى “app” الذي يديره PM2.
pm2 restart app
سيؤدي هذا الأمر إلى إعادة تشغيل التطبيق المسمى “app” الذي يديره PM2.
pm2 delete app
سيؤدي هذا الأمر إلى حذف التطبيق المسمى “app” من قائمة العمليات التي يديرها PM2.
pm2 list
سيؤدي هذا الأمر إلى عرض قائمة بجميع التطبيقات التي يديرها PM2.
pm2 monit
سيؤدي هذا الأمر إلى فتح واجهة مراقبة تفاعلية في الوحدة الطرفية تعرض معلومات في الوقت الفعلي حول أداء التطبيقات التي يديرها PM2.
التجميع ومُوازن التحميل
يدعم PM2 التجميع، مما يسمح لك بتشغيل تطبيقات Node.js على عدة نوى معالج لتحسين الأداء. لتمكين التجميع، استخدم الأمر التالي:
pm2 start app.js -i max
سيؤدي هذا الأمر إلى بدء تطبيق “app.js” في وضع التجميع، باستخدام الحد الأقصى لعدد النوى المتاحة على نظامك. يمكنك أيضًا تحديد عدد النوى التي سيتم استخدامها يدويًا عن طريق استبدال “max” برقم. على سبيل المثال، سيستخدم الأمر التالي 4 نوى:
pm2 start app.js -i 4
عند تشغيل تطبيق في وضع التجميع، سيقوم PM2 تلقائيًا بتوزيع حركة المرور الواردة عبر مثيلات متعددة من التطبيق باستخدام مُوازن تحميل مُضمّن. يزيد هذا من التوفر وقابلية التوسع لتطبيقك.
إدارة سجلات التطبيقات
يدير PM2 سجلات التطبيقات تلقائيًا، مما يجعل من السهل تجميع وتحليل سجلات التطبيقات من مصادر متعددة. يتم تخزين السجلات افتراضيًا في الدليل ~/.pm2/logs
. يمكنك تخصيص موقع السجلات باستخدام خيارات التكوين الخاصة بـ PM2.
يمكنك عرض سجلات تطبيق معين باستخدام الأمر التالي:
pm2 logs app
سيؤدي هذا الأمر إلى عرض سجلات التطبيق المسمى “app” في الوحدة الطرفية. يمكنك أيضًا استخدام أدوات مثل `tail` و `grep` لتحليل السجلات.
ملفات التكوين
يتيح PM2 استخدام ملفات التكوين لأتمتة عملية إدارة التطبيقات. يمكن أن تحتوي ملفات التكوين على معلومات حول التطبيقات التي سيتم تشغيلها، وعدد المثيلات التي سيتم استخدامها، وخيارات التكوين الأخرى. يتم تعريف ملفات التكوين عادةً بتنسيق JSON أو YAML.
مثال على ملف تكوين JSON:
{
"apps": [
{
"name": "my-app",
"script": "app.js",
"instances": "max",
"autorestart": true,
"watch": false,
"max_memory_restart": "1G",
"env": {
"NODE_ENV": "production"
}
}
]
}
لبدء التطبيقات باستخدام ملف تكوين، استخدم الأمر التالي:
pm2 start ecosystem.config.json
سيقوم هذا الأمر بتحميل ملف التكوين “ecosystem.config.json” وبدء التطبيقات المحددة فيه.
التكامل مع أنظمة التشغيل
يمكن تهيئة PM2 للبدء تلقائيًا عند بدء تشغيل نظام التشغيل. هذا يضمن أن تطبيقاتك ستستمر في العمل حتى بعد إعادة تشغيل الخادم. يدعم PM2 التكامل مع العديد من أنظمة التشغيل، بما في ذلك Linux و macOS و Windows.
لتهيئة PM2 للبدء تلقائيًا عند بدء التشغيل، استخدم الأمر التالي:
pm2 startup
سيؤدي هذا الأمر إلى إنشاء البرنامج النصي الضروري لبدء PM2 تلقائيًا عند بدء التشغيل. اتبع التعليمات التي تظهر على الشاشة لإكمال عملية التهيئة.
التحديثات
يتم تحديث PM2 باستمرار بميزات جديدة وتحسينات وإصلاحات للأخطاء. يوصى بتحديث PM2 بانتظام للاستفادة من أحدث الميزات والتحسينات.
لتحديث PM2، استخدم الأمر التالي:
pm2 update
سيؤدي هذا الأمر إلى تنزيل أحدث إصدار من PM2 وتثبيته.
الأمان
عند استخدام PM2 في بيئة إنتاج، من المهم اتخاذ خطوات لتأمين تثبيتك. فيما يلي بعض النصائح:
- استخدم أحدث إصدار من PM2: تتضمن الإصدارات الحديثة عادةً إصلاحات أمان مهمة.
- تقييد الوصول إلى PM2: تأكد من أن المستخدمين المصرح لهم فقط هم من يمكنهم الوصول إلى PM2.
- استخدم جدار حماية: يمكن لجدار الحماية المساعدة في حماية PM2 من الوصول غير المصرح به.
- مراقبة PM2: راقب PM2 بحثًا عن أي علامات تدل على وجود نشاط مشبوه.
ميزات متقدمة
بالإضافة إلى الميزات الأساسية المذكورة أعلاه، يوفر PM2 أيضًا عددًا من الميزات المتقدمة، بما في ذلك:
- وحدات PM2: تسمح وحدات PM2 بتوسيع وظائف PM2 بوظائف إضافية، مثل المراقبة المتقدمة والتكامل مع خدمات الجهات الخارجية.
- PM2 Plus: PM2 Plus عبارة عن خدمة مراقبة وتحليلات تجارية توفر رؤى متقدمة حول أداء تطبيقاتك.
- PM2 Enterprise: PM2 Enterprise عبارة عن حل إدارة تطبيقات شامل للفرق والمؤسسات الكبيرة.
بدائل PM2
هناك عدد قليل من البدائل لـ PM2، بما في ذلك:
- Forever: Forever هو مدير عمليات بسيط لتطبيقات Node.js.
- Supervisor: Supervisor هو مدير عمليات مكتوب بلغة Python.
- Systemd: Systemd هو نظام تهيئة وإدارة نظام يستخدم على أنظمة Linux.
يعتمد اختيار مدير العمليات المناسب على احتياجاتك ومتطلباتك الخاصة.
خاتمة
PM2 هو أداة قوية ومتعددة الاستخدامات لإدارة تطبيقات Node.js. يوفر PM2 مجموعة واسعة من الميزات، بما في ذلك إدارة العمليات والمراقبة وإعادة التشغيل التلقائي والتجميع ومُوازن التحميل. يجعل PM2 من السهل نشر وصيانة تطبيقات Node.js، وضمان استمرار عملها بكفاءة وموثوقية. سواء كنت مطورًا فرديًا أو جزءًا من فريق كبير، يمكن أن يساعدك PM2 في تبسيط عملية إدارة التطبيقات وتحسين أداء تطبيقاتك.