استضافة Node.js: تطبيقك يعمل باستمرار على كل أنوية السيرفر، ويعود تلقائيًا إن توقف
تطبيق Node.js عملية واحدة تستخدم نواة واحدة، وإن توقفت بخطأ غير معالج توقف معها كل شيء. نشغّله بمدير عمليات يوزعه على كل الأنوية، ويعيده فور توقفه، ويعيد تشغيله دون قطع الاتصالات عند كل نشر. وخلفه Nginx مع SSL، وRedis للطوابير والجلسات، على سيرفرات داخل المملكة.
- Node.js LTS
- PM2 بوضع Cluster
- WebSockets
ما يحتاجه تطبيق Node.js في الإنتاج
- Process Managerمدير العمليات
PM2 أو systemd يشغّل التطبيق كخدمة، ويعيده عند توقفه أو إعادة تشغيل السيرفر، ويحفظ سجلاته.
- Clusterكل الأنوية
نسخة من التطبيق لكل نواة، فيستفيد من قوة السيرفر كاملة بدل نواة واحدة.
- Reverse ProxyNginx في الأمام
SSL وضغط الملفات وتقديم الملفات الثابتة وتحديد المعدل، قبل أن يصل الطلب لتطبيقك.
- Zero-downtime Reloadإعادة دون انقطاع
عند النشر تُستبدل النسخ واحدة تلو الأخرى، فلا تنقطع الطلبات الجارية.
- WebSocketsالاتصال اللحظي
Socket.io أو ws خلف الوكيل، مع Redis لمشاركة الاتصالات بين النسخ.
- Background Jobsالمهام الخلفية
BullMQ أو Agenda للمهام الطويلة، بعمال منفصلين عن خادم الويب.
Redis- Memoryمراقبة الذاكرة
حد أعلى للذاكرة لكل نسخة، وإعادة تشغيل آمنة عند تجاوزه، وتنبيه لاكتشاف التسرب مبكرًا.
- Secretsالأسرار
متغيرات البيئة مشفرة وخارج المستودع، وتختلف بين Staging والإنتاج.
الأطر المدعومة
- بناء TypeScript أثناء النشر
- طوابير Bull وRedis
- PostgreSQL مع Prisma أو TypeORM
- واجهات REST وGraphQL
- Cluster على كل الأنوية
- تحديد المعدل على Nginx
النشر من Git
ادفع إلى الفرع، ونبني ونختبر وننشر دون أن تنقطع الطلبات.
- تثبيت الحزم بـ npm أو pnpm أو yarn حسب ملف القفل
- بناء TypeScript والواجهة
- تشغيل الترحيلات قبل التحويل
- إعادة تحميل النسخ واحدة تلو الأخرى
- رجوع للإصدار السابق بأمر واحد
name: "api",
script: "dist/main.js",
instances: "max",
exec_mode: "cluster",
max_memory_restart: "700M",
env_production: { NODE_ENV: "production" }
خطط استضافة Node.js
Node أساسي
خدمة واحدة بحمل متوسط.
- السيرفر2 vCPU و4 GB
- PM2 Cluster✓
- Redisعلى السيرفر
- النشر من Git✓
Node أعمال
منتج بمستخدمين نشطين ومهام خلفية.
- السيرفر4 vCPU و8 GB
- العمالمنفصلون
- قاعدة البياناتمُدارة
- Staging✓
Node موسع
WebSockets وآلاف الاتصالات المتزامنة.
- السيرفراتمتعددة خلف موازن
- Redisلمشاركة الاتصالات
- المراقبةالذاكرة والحلقة
- مهندسمخصص
أسئلة مطوري Node.js
نراجع تطبيقك ونقترح الإعداد والنشر.
لماذا يتوقف تطبيقي فجأة؟
غالبًا خطأ غير معالج يُسقط العملية، أو تجاوز للذاكرة. مدير العمليات يعيده فورًا، وسجلاته تكشف السبب لإصلاحه في الكود.
هل أستخدم PM2 أم Docker؟
كلاهما مناسب. PM2 أبسط لتطبيق واحد على سيرفر. وDocker أفضل لعدة خدمات أو بيئات متطابقة بين التطوير والإنتاج. ندعم الاثنين.
هل WebSockets تعمل مع أكثر من نسخة؟
نعم، مع محول Redis لمشاركة الأحداث بين النسخ، وتثبيت الاتصال على الموازن.
أي إصدار Node.js أستخدم؟
إصدارًا مدعومًا طويل الأمد (LTS). الإصدارات الفردية قصيرة العمر ولا تناسب الإنتاج. نساعدك في الترقية إن كان إصدارك قديمًا.
هل أحصل على SSH؟
نعم، لفحص السجلات وتشغيل الأوامر. وفي الخطط المُدارة نتولى النظام نفسه.
أين تُستضاف التطبيقات؟
داخل المملكة في الرياض وجدة.
اطلب بيئة لتطبيق Node.js
أخبرنا بالإطار والإصدار ومكونات تطبيقك ومستودعه، ونجهز البيئة والنشر.
- رد من مختص خلال ساعات العمل نفسها
- تقييم مجاني لبنيتك الحالية إن وُجدت
- عرض مكتوب بالمواصفات والتكلفة
- نقل مجاني من مزودك الحالي