تشحن مستودعات APT في Ubuntu إصدار Node.js متأخرًا بسنة أو أكثر. للنشر في الإنتاج، قم بتثبيت Node.js 20 LTS مباشرة من NodeSource — هي نفس الحزمة التي يوقعها مشروع Node ويستخدمها معظم مزودي CI.
المتطلبات المسبقة
- Ubuntu 22.04 أو 24.04 مع
sudo. - اتصال خارجي TCP/443 إلى
deb.nodesource.com. - معرفة بإصدار Node الذي تحتاجه فعلاً — 20 LTS للحالي، 18 LTS فقط إذا اضطررت.
الخطوة 1: إزالة أي إصدار Node أقدم من مستودع التوزيعة
sudo apt remove -y nodejs npm libnode-dev 2>/dev/null || true
sudo apt autoremove -y
الخطوة 2: إضافة مستودع NodeSource
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
| sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" \
| sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
الخطوة 3: تثبيت Node.js 20
sudo apt install -y nodejs
node --version # v20.x
npm --version
npm يأتي ضمن حزمة nodejs — لا حاجة لتثبيت منفصل.
الخطوة 4: إعداد دليل global بدون root
افتراضيًا يضع npm install -g الحزم في /usr/lib/node_modules مما يفرض استخدام sudo. أعد توجيهه إلى المجلد الشخصي.
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
npm install -g pnpm yarn pm2
الخطوة 5: استخدام pm2 لإبقاء التطبيقات قيد التشغيل
لخدمات Node البسيطة، pm2 هو أخف طريق لإبقاء التطبيق يعمل بعد تسجيل الخروج.
cd /var/www/myapp
pm2 start npm --name myapp -- start
pm2 save
pm2 startup systemd # اتبع سطر sudo المطبوع
التحقق
node -e 'console.log("Node " + process.version + " is alive")'
npm doctor
pm2 ls
الخاتمة
يمنحك NodeSource نفس ثنائيات Node من المشروع الأصلي، مع تدفق تحديث apt المألوف. أضف pm2 (أو وحدة systemd) فوقه وستحصل على مضيف Node جاهز للإنتاج.
الخطوات التالية
- ضع التطبيق خلف Nginx كوكيل عكسي.
- قم بتقييد حركة المرور الواردة عبر UFW لمنافذ محددة.
- للنشر القائم على الحاويات راجع Docker + Compose على Ubuntu.
Comments
0 total · 0 threads