نقل استضافة Node.js يكتمل عندما يعمل التطبيق بعد انقطاع جلسة الإدارة وإعادة تشغيل الخدمة، وتبقى البيانات والتكاملات والاتصالات تحت سيطرة واضحة. نجاح تشغيله بأمر يدوي لا يثبت أن مدير العمليات أو الإقلاع التلقائي أو الوكيل مضبوطة. اطلب اختباراً يغطي بناء المشروع وتشغيله بهوية الخدمة الصحيحة وتصريف الطلبات ومراقبة الأخطاء، ثم تحويل الزيارات بخطة للبيانات والرجوع.
ثبت إصدار التشغيل وطريقة البناء
احصر إصدار Node.js ومدير الحزم وملف القفل وأوامر البناء والتشغيل ومتغيرات البيئة. راجع تبعيات native التي قد تختلف بحسب المعمارية ونظام التشغيل؛ نسخ node_modules من جهاز آخر ليس ضماناً لتوافقها مع الوجهة. حدد إن كنت تنقل مصدراً يحتاج بناء أم مخرجات جاهزة من خط نشر موثوق.
توضح وثائق npm ci دور التثبيت المعتمد على ملف القفل وشروط توافق إعداداته. استخدم مسار بناء قابل لإعادة الإنتاج وفق مدير الحزم وإصداره، وراجع السكربتات التي قد تعمل أثناء التثبيت. لا تجعل النقل فرصة لتحديث جميع التبعيات دون اختبار أثرها أو توثيق ما تغير.
انقل عقد التشغيل وليس اسم العملية فقط
وثق أمر بدء التطبيق ومجلد العمل والمنفذ وعنوان الاستماع ومستخدم الخدمة وحدود الذاكرة وطريقة حفظ السجلات. قد يعمل الأمر في shell يحمّل إعدادات المستخدم ثم يفشل عند تشغيله من systemd أو PM2 ببيئة مختلفة. تحقق من مسار Node.js والصلاحيات الفعلية للوصول إلى الأسرار والملفات المطلوبة.
لا تشغل التطبيق بصلاحيات واسعة لتجاوز خطأ ملكية ملف، ولا تكشف منفذه الداخلي للعامة لمجرد نجاح الاختبار. اجعل مرور الطلبات عبر المسار المقصود مع سياسة الجدار الناري والوكيل. وإذا كانت البنية تستخدم حاويات، وثق الصورة وحجوم البيانات والصحة وإعادة التشغيل بدلاً من افتراض أن PM2 هو الخيار اللازم لكل مشروع.
راجع مدير العمليات والإقلاع التلقائي
إذا استخدمت PM2، احفظ تعريف التطبيقات المطلوب واستعده تحت الحساب المناسب، وراجع تكامل الإقلاع. تشرح وثائق PM2 للتشغيل عند الإقلاع حفظ قائمة العمليات وضرورة تحديث إعداد البدء عند تغيير مسار إصدار Node.js. قائمة محفوظة قد تشير إلى مسار لم يعد موجوداً على السيرفر الجديد.
اختبر توقف جلسة الإدارة ثم استمرار الخدمة، واختبر إعادة تشغيل الخدمة في البيئة التجريبية. أما إعادة تشغيل السيرفر بالكامل فتجرى ضمن نافذة معتمدة عندما تكون جزءاً من قبول الإقلاع. راجع ألا يوجد مدير آخر يشغل نسخة إضافية على المنفذ نفسه، وأن تكرار إعادة تشغيل العملية يولد تنبيهاً بدلاً من إخفائه خلف حالة «online» عابرة.
ضع مصفوفة قبول للتطبيق والعمال
| المكون | ما يجب نقله | ما يجب إثباته |
|---|---|---|
| عملية الويب | أمر التشغيل والبيئة والوكيل | طلب ممثل بصلاحياته ونتيجته الصحيحة |
| عامل المهام | الموصل والطابور وسياسة التكرار | إنجاز مهمة آمنة مرة وفق التصميم |
| الملفات والجلسات | المخزن والصلاحيات ومفاتيح التوقيع | قراءة وكتابة وسلوك دخول متوقع |
| المجدول | المهام ومالك تشغيلها والتوقيت | عدم ازدواج التنفيذ بين البيئتين |
| WebSocket | المسار والمهل وتبادل الحالة | اتصال وإعادة اتصال واسترجاع صحيح |
| المراقبة | السجلات والمؤشرات والتنبيه | رؤية فشل حقيقي بطريقة آمنة |
نجاح health check بسيط يثبت جزءاً محدوداً من الجاهزية. حدد متى تقبل العملية الطلبات: هل اتصلت بالخدمات الضرورية وحملت ما تحتاجه؟ لا تجعل فحص الصحة ينفذ عمليات مكلفة أو يرسل رسائل حقيقية، ولا تربط كل فحص باعتمادية غير أساسية فتتسبب في إخراج جميع العقد أثناء عطلها.
اختبر الإيقاف التدريجي قبل التحويل
تحتاج العملية إلى التوقف عن قبول عمل جديد ثم إنهاء الجاري ضمن مهلة مناسبة، مع إغلاق الاتصالات وحفظ الحالة اللازمة. توضح وثائق PM2 للبدء والتوقف التدريجي إشارات الإغلاق والجاهزية والمهل المرتبطة بها. اضبطها مع سلوك التطبيق والمشرف بدلاً من إيقاف قسري قبل اكتمال المهمة.
اختبر طلباً جارياً أثناء استبدال العملية في بيئة معزولة، وراجع ماذا يرى العميل إذا انتهت المهلة. وجود أمر reload لا يثبت أن كل اتصال طويل سيبقى حياً أو أن كل أثر سيكتمل مرة واحدة. يلزم تصميم لإعادة الاتصال ومعرفة نتيجة العمليات الحساسة عند انقطاع الرد.
لا تضاعف العمليات قبل فهم الحالة
نقل التطبيق من عملية واحدة إلى cluster يغير توزيع الطلبات والتزامن واستهلاك اتصالات القاعدة. إن حفظ التطبيق جلسات أو ملفات مؤقتة أو عدادات مهمة داخل ذاكرة العملية، فقد تختلف النتائج بين العمال. راجع ما يجب مشاركته وما يجب عزله، ولا تفترض أن زيادة النسخ تتوافق تلقائياً مع الكود.
تشدد وثائق PM2 لوضع cluster على التعامل مع الحالة المشتركة عند التوسع. خطط لتبادل الأحداث وحالة المستخدمين حسب المكتبات الفعلية. كذلك احسب مجموع تجمعات القاعدة عبر العمال الجدد كي لا يتحول تحسين قدرة الويب إلى خطأ كثرة الاتصالات.
انقل البيانات والتكاملات مع مصدر كتابة واضح
حدد طريقة نسخ القاعدة والملفات والمزامنة الأخيرة، ومن يشغل العمال والمجدول في كل مرحلة. اعزل النسخة التجريبية عن الطوابير والدفع والبريد الفعلي حتى لا تنفذ أعمال إنتاجية. راجع عناوين الخروج المسموح بها وأسرار API وwebhooks وأسماء النطاقات وTLS قبل فتح الخدمة الجديدة.
في مثال افتراضي، API يعمل بعد النقل لكن ملفات الرفع تختفي بعد إعادة نشر الحاوية لأنها حفظت داخلها دون مخزن دائم. وفي مثال آخر، يعمل الويب وتبقى المهام القديمة تستهلكها نسخة مختلفة من العامل. خريطة الحالة واختبار دورة عمل كاملة يكشفان المشكلتين قبل تسليم المشروع.
حدد قرار التحويل والرجوع
ابدأ بالتحويل بعد اجتياز اختبارات الوظائف والتشغيل، وراقب الأخطاء والذاكرة وتأخر Event Loop والطوابير. احتفظ بالنسخة السابقة وفق خطة، وحدد عتبات عملية تستدعي إيقاف التوسع أو الرجوع. لا يكفي تغيير DNS للخلف إذا كانت الوجهة استقبلت بيانات أو نفذت عمليات خارجية؛ يلزم حفظها ومصالحتها.
يربط دليل نقل الاستضافة هذه الخطوات بإدارة النطاق والتحويل، ويبين مقال أخطاء النسخ الاحتياطي ضرورة اختبار استعادة البيانات. لا تستخدم الرجوع البرمجي بديلاً عن حماية الحالة المستمرة، ولا تغلق المصدر قبل التأكد من أن أي أعمال متأخرة أصبحت تحت إدارة الوجهة.
أسئلة شائعة عن نقل Node.js
هل أنسخ ملف PM2 القديم كما هو؟
استخدمه مرجعاً ثم راجع المسارات والحساب والبيئة وأوامر البناء على الوجهة. لا تنقل أسراراً أو أسماء مخازن تجريبية إلى الإنتاج دون تدقيق.
هل أغير إصدار Node.js أثناء النقل؟
اختر إصداراً مدعوماً ومتوافقاً مع المشروع. إذا لزم تغييره، اختبر التبعيات والبناء والسلوك، ووثق الترقية ضمن نطاق المشروع.
متى أحتاج موارد أعلى؟
عندما يظهر اختبار حمل ممثل اختناقاً محلياً بعد ضبط التشغيل والحالة. فشل الإقلاع أو مسار Node.js الخاطئ لا يعالج بزيادة RAM.
اطلب تسليماً يشمل إعادة التشغيل والاتصالات
أرسل إصدار Node.js وطريقة التشغيل وعدد العمال وخريطة البيانات والتكاملات عبر طلب عرض نقل Node.js. اطلب ضمن استضافة Node.js بناءً قابلاً للتكرار واختباراً لمدير العمليات والإقلاع والنشر والاتصالات، مع خطة بيانات واضحة قبل التحويل.