مقدمة

يُعدّ PM2 Resurrect الحل الأمثل لاستعادة تطبيقات Node.js تلقائيًا بعد إعادة تشغيل السيرفر. فكثيرًا ما يفاجأ المطورون بأن تطبيقاتهم التي كانت تعمل عبر PM2 اختفت تمامًا بعد أول إعادة تشغيل أو تحديث للخادم، ما يسبّب توقف الخدمة وفقدان الزيارات.

في هذا الدليل الشامل سنشرح كيف يعمل PM2 Resurrect وملف dump.pm2، وكيف تضبط تطبيقاتك لتُستعاد تلقائيًا بعد كل إقلاع خطوة بخطوة، مع حلّ أشهر المشاكل وأفضل الممارسات.

لماذا تختفي تطبيقات Node.js بعد إعادة تشغيل السيرفر؟

عند تشغيل تطبيق Node.js عبر PM2 فإنه يعمل كعملية (Process) في الذاكرة. وعند إعادة تشغيل السيرفر تُنهى كل العمليات، ولا يعرف النظام أنه يجب إعادة تشغيل تطبيقاتك ما لم تُخبره بذلك مسبقًا. هنا يأتي دور حفظ القائمة واستعادتها.

وإذا ظهر خطأ 502 بعد إعادة التشغيل بسبب توقف التطبيق الخلفي، راجع: حل مشكلة 502 Bad Gateway بعد إعادة تشغيل السيرفر (NGINX وPHP-FPM وNode.js): الدليل الكامل للتشخيص والإصلاح في 2026.

ما هو PM2؟

PM2 هو مدير عمليات (Process Manager) شهير لتطبيقات Node.js، يتيح تشغيل التطبيقات في الخلفية، وإعادة تشغيلها تلقائيًا عند الأعطال، ومراقبة استهلاكها، وتوزيع الأحمال عبر وضع Cluster. لكنه لا يستعيد التطبيقات بعد إعادة تشغيل النظام إلا بعد إعداد بسيط.

ما هو PM2 Resurrect؟

PM2 Resurrect هو الأمر الذي يعيد تشغيل قائمة التطبيقات التي حفظتها مسبقًا في ملف dump.pm2. فبدلًا من إعادة تشغيل كل تطبيق يدويًا بعد الإقلاع، يقرأ PM2 هذا الملف ويستعيد جميع التطبيقات بحالتها السابقة دفعةً واحدة.

ويمكنك الاطّلاع على التوثيق الرسمي لهذه الميزة من صفحة PM2 Startup الرسمية.

ما هو ملف dump.pm2؟

ملف dump.pm2 هو لقطة (Snapshot) لقائمة تطبيقاتك التي تعمل حاليًا، تحفظها عبر الأمر pm2 save. يحتوي على أسماء التطبيقات ومساراتها وإعداداتها، وهو ما يعتمد عليه PM2 Resurrect لإعادة بنائها بعد الإقلاع.

كيف تعمل الاستعادة التلقائية؟

تعتمد الاستعادة التلقائية على ثلاثة عناصر متكاملة: حفظ القائمة (pm2 save)، وإنشاء خدمة إقلاع عبر النظام (pm2 startup)، ثم استعادة القائمة تلقائيًا عند بدء التشغيل. النتيجة أن تطبيقاتك تعود للعمل دون أي تدخل يدوي.

كيف يحل PM2 Resurrect فقدان تطبيقات Node.js بعد إعادة التشغيل
المشكلة والحل في صورة واحدة

الخطوة 1: تثبيت PM2

ثبّت PM2 عالميًا عبر npm:

npm install -g pm2
pm2 --version

الخطوة 2: تشغيل تطبيقات Node.js بـ PM2

شغّل تطبيقك وأعطِه اسمًا واضحًا لتسهيل إدارته:

pm2 start app.js --name my-api
pm2 list

ولربط الدومين بتطبيقك عبر NGINX، راجع: شرح NGINX Reverse Proxy: كيف يربط الدومين بتطبيقك الداخلي باستخدام proxy_pass؟ الدليل الكامل 2026.

الخطوة 3: حفظ القائمة بـ pm2 save

بعد تشغيل كل تطبيقاتك، احفظ القائمة الحالية لإنشاء ملف dump.pm2:

pm2 save

الآن أصبحت لديك لقطة يعتمد عليها PM2 Resurrect لاحقًا.

الخطوة 4: إعداد الإقلاع بـ pm2 startup

أنشئ خدمة نظام تُشغّل PM2 عند الإقلاع (يعتمد على systemd في معظم توزيعات Linux):

pm2 startup systemd
# نفّذ الأمر الذي يظهر لك (يبدأ بـ sudo env ...)

ولفهم كيفية عمل خدمات الإقلاع، راجع: شرح systemd في Linux: كيفية إنشاء Service تعمل تلقائيًا عند إقلاع السيرفر باستخدام systemctl (Enable وDisable) – الدليل الكامل 2026.

الخطوة 5: استعادة التطبيقات بـ PM2 Resurrect

بعد الإقلاع تُستعاد التطبيقات تلقائيًا. ولاستعادتها يدويًا في أي وقت من ملف dump.pm2، استخدم:

أوامر PM2 الأساسية لاستخدام PM2 Resurrect
أهم أوامر PM2 التي ستحتاجها
pm2 resurrect
pm2 list

بهذا يكتمل إعداد PM2 Resurrect وتعود تطبيقاتك للعمل بعد أي إعادة تشغيل.

الفرق بين pm2 save و startup و resurrect

  • pm2 save: يحفظ القائمة الحالية في dump.pm2.
  • pm2 startup: ينشئ خدمة نظام تُشغّل PM2 عند الإقلاع.
  • pm2 resurrect: يعيد بناء التطبيقات من ملف dump.pm2.

أين يُخزَّن ملف dump.pm2؟

يُخزَّن الملف عادةً في مجلد المستخدم ضمن ~/.pm2/dump.pm2. احرص على تشغيل الأوامر بنفس المستخدم الذي تعمل به التطبيقات، وإلا لن يجد PM2 Resurrect القائمة الصحيحة.

اختبار الاستعادة بعد إعادة التشغيل

للتأكد أن كل شيء يعمل، أعد تشغيل الخادم ثم تحقق من عودة التطبيقات:

sudo reboot
# بعد الإقلاع:
pm2 list

حل مشكلة عدم استعادة التطبيقات

  • تأكد أنك نفّذت pm2 save بعد آخر تعديل.
  • تأكد أن pm2 startup اكتمل بصلاحيات sudo.
  • استخدم نفس المستخدم في كل الأوامر.
  • تحقق من حالة الخدمة: systemctl status pm2-USER.

وللفحص الشامل لصحة الخادم، راجع: الدليل الكامل لفحص صحة السيرفر (Server Health Check): أهم أوامر Linux لتشخيص الأعطال ومراقبة الأداء في 2026.

PM2 Resurrect مع NGINX Reverse Proxy

في الإنتاج يعمل تطبيق Node.js على منفذ داخلي خلف NGINX. باستخدام PM2 Resurrect يعود التطبيق للعمل على منفذه بعد الإقلاع، فيستمر NGINX في تمرير الطلبات إليه دون ظهور 502.

سير عمل PM2 Resurrect من pm2 save إلى الاستعادة التلقائية
الدورة الكاملة للاستعادة التلقائية

PM2 مقابل systemd لتطبيقات Node.js

يمكن تشغيل Node.js مباشرة كخدمة systemd، لكن PM2 يوفّر ميزات إضافية مثل المراقبة وإعادة التشغيل عند الأعطال ووضع Cluster وإدارة السجلات، مع تكامله مع systemd عبر pm2 startup للحصول على أفضل ما في الاثنين.

أفضل الممارسات مع PM2 Resurrect

  • نفّذ pm2 save بعد أي إضافة أو تعديل تطبيق.
  • استخدم أسماء واضحة للتطبيقات.
  • فعّل pm2 startup مرة واحدة على كل خادم.
  • راقب التطبيقات عبر pm2 monit.
  • خذ نسخة من ملف dump.pm2 ضمن نسخك الاحتياطية.

أخطاء شائعة يجب تجنبها

  • نسيان pm2 save بعد التعديل (فلا يجد resurrect التحديث).
  • تشغيل الأوامر بمستخدم مختلف عن مستخدم التطبيقات.
  • تجاهل صلاحيات sudo عند pm2 startup.
  • الاعتماد على PM2 دون مراقبة الموارد.

لماذا مرام هوست لتشغيل Node.js؟

توفّر مرام هوست خوادم VPS وDedicated بصلاحيات Root كاملة وموارد قوية على AMD EPYC وNVMe، مثالية لتشغيل تطبيقات Node.js مع PM2 وضبط PM2 Resurrect بحرية، مع دعم فني عربي 24/7.

الخلاصة

باختصار، يضمن لك PM2 Resurrect عودة تطبيقات Node.js تلقائيًا بعد أي إعادة تشغيل: شغّل تطبيقاتك، ثم pm2 save، ثم pm2 startup، ويتكفّل PM2 Resurrect بالباقي. بهذا لا تتوقف خدمتك بعد أي إقلاع أو تحديث للخادم.

تبحث عن VPS قوي لتطبيقات Node.js؟

مرام هوست على AMD EPYC وNVMe بشبكة Premium ودعم عربي 24/7

اكتشف خطط VPS ←