اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

بدايةً يمكن تشغيل تطبيقات Node Js على السيرفر دون الحاجة لاستخدام Nginx بما أنك تستخدم Express فهو بحد ذاته مخدم ويب، ولكن لسهولة ربط النطاق وتوجيهه إلى ملفات المشروع وأيضاً إضافة Proxy لتحويل المنفذ 80 إلى أي منفذ port آخر تقوم باستعماله من الممكن استخدام Nginx.

الخطوات هي كالتالي (وبافتراض أن نظام التشغيل لينكس):

أولاً ، تحتاج إلى تثبيت NodeSource PPA من أجل الوصول إلى محتوياته ولتتمكن من تنفيذ الأوامر.

تأكد من أنك في المسار الرئيسي:

cd ~

 واستخدم curl  للتثبيت كالتالي:

curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh

انتظر قليلاً حتى يكتمل التحميل، ثم قم بتثبيت التحديثات إلى ملفات الخصائص configuration عن طريق الأمر التالي:

sudo bash nodesource_setup.sh

ثم قم بتحميل البكج:

sudo apt-get install nodejs

الآن وبعد اكتمال التحميل، أصبح يمكنك استخدام NPM ضمن السيرفر.

 

مثال لإنشاء تطبيق بسيط من ملف واحد وربطه:

cd ~
nano hello.js

وكتابة التالي ضمن الملف:

#!/usr/bin/env nodejs
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8080, 'localhost');
console.log('Server running at http://localhost:8080/');

ملاحظة: يمكنك تغيير 8080 في حال كنت تستخدم منفذ آخر.

الآن يمكنك تجربة الخطوات السابقة أنها تخلو من أي مشكلة ببساطة عن طريق جعل الملف السابق ملف تنفيذي كالتالي:

تأكد من أنك ضمن نفس المجلد الذي يحوي الملف وقم بتفيذ الأمر التالي:

chmod +x ./hello.js

فسيطبع لك الناتج التالي:

Output
Server running at http://localhost:8080/

أي أن السيرفر يعمل ويستمع للطلبات على المنفذ 8080 أو أي منفذ آخر قمت باختياره.

 

ملاحظة: في حال أردت إبقاء سيرفر Node يعمل في الخلفية بشكل دائم، سوف تحتاج أن تستخدم PM2 لإدارة العمليات

ويجب عليك تحميله عن طريق الأمر التالي:

sudo npm install -g pm2

ثم توجه مجدداً إلى المجلد الذي يحوي ملف تشغيل التطبيق واكتب التالي:

pm2 start hello.js

وأخيراً أصبح تطبيقك يعمل ضمن العمليات التي يديرها PM2 وسيطبع لك الناتج التالي:

Output
[PM2] Spawning PM2 daemon
[PM2] PM2 Successfully daemonized
[PM2] Starting hello.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid  │ status │ restart │ uptime │ memory      │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ hello    │ 0  │ fork │ 3524 │ online │ 0       │ 0s     │ 21.566 MB   │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────────────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

يمكنك قراءة العمليات التي يدعمها PM2 كإعادة التشغيل وحذف العملية وغيرها من العمليات عبر الموقع الرسمي له.

 

وأما ضمن Nginx، فقط قم بتعديل محتوى location التالي لتحويل المنفذ كما شرحت مسبقاً:

location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

بالتوفيق

والمسار (الافتراضي) للدخول وتعديل الخصائص ضمن Nginx هو:

/etc/nginx/sites-available/default

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...