مقدمة: لماذا VPS هو الحل الأمثل لتطبيق Node.js الخاص بك؟
\nلقد كتبت تطبيقًا رائعًا بلغة JavaScript (Node.js)، واختبرته محليًا، والآن تريد أن يكون متاحًا على الإنترنت 24/7. غالبًا ما تكون الاستضافة المشتركة غير مناسبة لـ Node.js بسبب القيود، كما أن الخدمات السحابية (Heroku, Railway) قد تكون باهظة الثمن أو غير متوقعة من حيث الأداء. الخادم الخاص الافتراضي (VPS) هو الحل الوسط المثالي: تحكم كامل، أداء عالٍ، وسعر معقول.
\nفي هذا الدليل التفصيلي، سنشرح عملية نشر تطبيق JavaScript (Node.js) على VPS من الصفر. ستتعلم كيفية إعداد الخادم، تثبيت البرامج اللازمة، تشغيل التطبيق بأمان، وجعله متاحًا عبر نطاق. جميع أمثلة الأكواد عملية ومختبرة.
\n\n1. إعداد الخادم: التهيئة الأولية لـ VPS
\nللبدء، ستحتاج إلى استئجار VPS من أي مزود (DigitalOcean, Vultr, Timeweb, Selectel). الحد الأدنى من المواصفات: 1 vCPU، 1-2 GB RAM، 20-30 GB SSD. نظام التشغيل: Ubuntu 22.04 LTS (الإصدار الأكثر استقرارًا).
\n\n1.1. الاتصال بالخادم عبر SSH
\nبعد الحصول على عنوان IP وكلمة المرور، نتصل بالخادم عبر الطرفية (Mac/Linux) أو PuTTY (Windows):
\nssh root@عنوان_IP_الخادم_الخاص_بك\nنقوم فورًا بتغيير كلمة المرور وإنشاء مستخدم جديد (العمل كـ root ممارسة سيئة):
\nadduser deploy_user\nusermod -aG sudo deploy_user\nsu - deploy_user\n\n1.2. تحديث النظام وتثبيت الحزم الأساسية
\nsudo apt update && sudo apt upgrade -y\nsudo apt install -y curl git ufw build-essential\nنقوم بإعداد جدار الحماية الأساسي UFW (نترك فقط SSH والمنافذ التي سنستخدمها):
\nsudo ufw allow OpenSSH\nsudo ufw allow 80/tcp\nsudo ufw allow 443/tcp\nsudo ufw enable\n\n2. تثبيت Node.js ومدير العمليات PM2
\nلتشغيل تطبيق JavaScript على الخادم، نحتاج إلى Node.js. نستخدم مدير الإصدارات الرسمي NodeSource لتثبيت أحدث إصدار LTS:
\n\n2.1. تثبيت Node.js (v20 LTS)
\ncurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -\nsudo apt install -y nodejs\nنتحقق من التثبيت:
\nnode -v # v20.x.x\nnpm -v # 10.x.x\n\n2.2. تثبيت وإعداد PM2
\nPM2 هو مدير عمليات متقدم لـ Node.js. يقوم تلقائيًا بإعادة تشغيل التطبيق عند تعطله، ويدير السجلات، ويسمح بتشغيل نسخ متعددة (التجميع).
\nsudo npm install -g pm2\nنقوم بإعداد التشغيل التلقائي لـ PM2 عند إعادة تشغيل الخادم:
\npm2 startup systemd\nsudo env PATH=$PATH:/usr/bin pm2 startup systemd -u deploy_user --hp /home/deploy_user\n\n3. نشر التطبيق وتشغيله عبر PM2
\nالآن نحن جاهزون لنقل تطبيق JavaScript الخاص بك إلى الخادم. هناك طريقتان شائعتان: عبر Git (موصى به) أو عبر SCP/FileZilla.
\n\n3.1. استنساخ المستودع (Git)
\ncd /home/deploy_user\ngit clone https://github.com/اسم_المستخدم_خاصتك/اسم_المستودع_خاصتك.git myapp\ncd myapp\nنقوم بتثبيت التبعيات وبناء المشروع (إذا لزم الأمر):
\nnpm install\n# إذا كان هناك سكريبت بناء: npm run build\n\n3.2. إنشاء ملف التكوين .env
\nلا تقم أبدًا بتخزين الأسرار في الكود. قم بإنشاء ملف .env في مجلد المشروع:
\nnano .env\nمثال على المحتوى:
\nPORT=3000\nNODE_ENV=production\nDATABASE_URL=mongodb://localhost:27017/myapp\nJWT_SECRET=مفتاحك_السري_الفائق\n\n3.3. تشغيل التطبيق عبر PM2
\nلنفترض أن نقطة الدخول لتطبيقك هي app.js أو server.js. نقوم بالتشغيل:
pm2 start app.js --name "myapp"\nنتحقق من الحالة:
\npm2 status\npm2 logs myapp