استضافة Node.js على سيرفر VPS في 2026: PM2 وNginx وإعداد إنتاج يدوم

المنصات التي تشغّل تطبيق Node.js بالنيابة عنك مريحة، إلى أن تحتاج إلى Worker في الخلفية، أو سيرفر WebSocket، أو إصدار Node محدد، أو تكلفة شهرية يمكن توقعها. الـ VPS يمنحك كل ذلك، بشرط إعداده بشكل صحيح. يعرض هذا الدليل إعداد إنتاج لـ Node.js على سيرفر Linux VPS: تثبيت Node، وتشغيل التطبيق بـ PM2، ووضع Nginx في الواجهة، والتفاصيل التشغيلية التي تحافظ على سرعته واستمراره.
اختيار السيرفر
يشغّل Node.js الجافاسكريبت على خيط واحد لكل عملية، لذا يهم المعالج من ناحيتين: سرعة النواة لزمن الاستجابة، وعدد الأنوية لعدد العمليات التي يمكن تشغيلها بالتوازي. لـ API نموذجي أو تطبيق Next.js تُعد 2 vCPU و4 جيجابايت رام بداية جيدة. وإذا كنت تبني التطبيق على السيرفر نفسه، فامنحه ذاكرة أكبر لأن البناء غالبًا أثقل من التطبيق أثناء عمله. يحافظ Cloud VPS بمعالج مخصص بالكامل على معالجات AMD Ryzen وEPYC على ثبات زمن الاستجابة تحت الضغط، بينما يُعد Linux VPS بديلًا اقتصاديًا للخدمات الأصغر.
الخطوة 1: ثبّت Node.js بطريقة سهلة الصيانة
تجنب حزمة Node.js القديمة التي تأتي مع كثير من التوزيعات. استخدم مستودع NodeSource أو مدير إصدارات مثل nvm أو fnm، والتزم بإصدار LTS في الإنتاج. ثبّت الإصدار الرئيسي نفسه في حقل engines داخل المشروع ليتطابق التطوير مع الإنتاج.
الخطوة 2: شغّل التطبيق بـ PM2
يحافظ PM2 على عمل تطبيقك، ويعيد تشغيله عند التعطل، ويستطيع استخدام كل أنوية المعالج في وضع Cluster، ويدير السجلات. عرّف التطبيق في ملف ecosystem:
module.exports = {
apps: [{
name: "api",
script: "dist/server.js",
instances: "max",
exec_mode: "cluster",
max_memory_restart: "500M",
env: { NODE_ENV: "production", PORT: 3000 }
}]
};شغّله بالأمر pm2 start ecosystem.config.js، ثم نفّذ pm2 save وpm2 startup ليعود بعد إعادة التشغيل. وضع Cluster يشغّل عملية لكل نواة ويوزع الطلبات عليها، فاستخدمه فقط إذا كان تطبيقك لا يحتفظ بالحالة في الذاكرة، أو يحفظها في Redis أو قاعدة بيانات. أما إعداد max_memory_restart فهو صمام أمان ضد التسرب البطيء في الذاكرة.
أضف وحدة pm2-logrotate حتى لا تكبر السجلات إلى أن يمتلئ القرص.
الخطوة 3: ضع Nginx في الواجهة
لا تكشف عملية Node مباشرة على المنفذ 80 أو 443. اربطها بـ 127.0.0.1 ودع Nginx يتولى TLS والضغط والملفات الثابتة وإدارة الاتصالات:
server {
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}ترويستا Upgrade وConnection هما ما يجعل WebSockets وSocket.IO تعمل. أضف HTTPS عبر Certbot. وإذا كان التطبيق خلف Proxy، فأخبر إطار العمل بالثقة فيه، مثل app.set("trust proxy", 1) في Express، لتكون عناوين IP الخاصة بالعملاء واكتشاف HTTPS صحيحة.
الخطوة 4: انشر دون توقف
مع PM2 في وضع Cluster، يعيد الأمر pm2 reload api تشغيل العمليات واحدة تلو الأخرى، فيستمر التطبيق في خدمة الطلبات أثناء النشر. وهذه طريقة بسيطة وموثوقة:
اسحب الإصدار الجديد إلى مجلد جديد.
نفّذ
npm ciثم البناء.بدّل الرابط الرمزي إلى المجلد الجديد.
نفّذ
pm2 reload.
احتفظ بالإصدار السابق على القرص ليكون التراجع مجرد تغيير للرابط. وإذا كان البناء ثقيلًا، فابنِ في خدمة CI وانسخ الناتج فقط إلى السيرفر.
الخطوة 5: البيئة والأسرار
احفظ الإعدادات في متغيرات البيئة أو ملف .env محمي خارج المستودع، واضبط NODE_ENV=production الذي يفعّل تحسينات الأداء في كثير من أطر العمل والمكتبات.
الخطوة 6: أساسيات الأداء
قدّم الملفات الثابتة من Nginx أو شبكة CDN بدلًا من Node.
فعّل ضغط gzip أو Brotli في Nginx.
انقل المهام الثقيلة على المعالج، مثل معالجة الصور أو توليد ملفات PDF، إلى طابور بعمليات Worker منفصلة حتى لا تعطّل حلقة الأحداث.
خزّن الاستجابات المكلفة مؤقتًا في Redis.
الخطوة 7: المراقبة والأمان
استخدم
pm2 monitلنظرة سريعة، مع فحص تشغيل خارجي على رابط صحة حقيقي.راقب تأخر حلقة الأحداث والذاكرة، لا المعالج فقط.
نفّذ
npm auditبانتظام وحدّث الاعتماديات.شغّل التطبيق بمستخدم غير root، واسمح فقط بـ SSH وHTTP وHTTPS في الجدار الناري.
استضف تطبيقات Node.js على IM HOST
تمنحك خطط Cloud VPS وLinux VPS من IM HOST صلاحيات root كاملة وتخزين NVMe وعنوان IPv4 مخصصًا ودعمًا من مهندسين على مدار الساعة، في الولايات المتحدة والمملكة المتحدة وبولندا وألمانيا ومصر. كما يتضمن Cloud VPS نسخة احتياطية تلقائية مجانية كل 72 ساعة طوال مدة الاشتراك.
المزيد من مدونتنا
اكتشف المزيد من الأدلة العملية ورؤى الخدمات من فريق IM Host.
عرض كل المقالات