قم بإعداد خادم Keystone.js باستخدام وكيل Nginx Reverse على Ubuntu 16.04

في هذا البرنامج التعليمي ، سنقوم بإعداد خادم ويب باستخدام وكيل عكسي. CMS الذي سنستخدمه هو Keystone.js ، وهو إطار عمل تطبيق ويب معروف يعتمد على Express.js. الوكيل العكسي الذي سنستخدمه هو Nginx ، وهو وكيل عكسي مجاني ومفتوح المصدر ، بالإضافة إلى خادم HTTP. قاعدة البيانات التي سنستخدمها هي MongoDB ، وهي قاعدة بيانات مستندات NoSQL. سيتطلب هذا أن يكون لديك مجال مع إعداد السجلات. إذا لم يكن لديك هذه المجموعة ، فانتقل إلى ذلك واعتن بنفسك ، وعد إلى هذا البرنامج التعليمي.

تثبيت العقدة

أولاً ، سنقوم بتثبيت Node.js ، وهو مترجم جافا سكريبت يعتمد على محرك Chrome V8 Javascript.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

تثبيت Nginx

بعد ذلك ، سنقوم بتثبيت Nginx ، وكيلنا العكسي.

sudo apt update
sudo apt install nginx

سيؤدي ذلك إلى تحديث قوائم الحزم وتثبيت Nginx. بمجرد الانتهاء من التثبيت ، سنقوم بإعداد مشروع العقدة الخاص بنا.

بدء مشروع Keystone الخاص بنا

إنشاء مشروع عقدة لدينا. للقيام بذلك ، ما عليك سوى إنشاء مجلد جديد.

mkdir website

ثم سننشئ package.jsonملفنا. للقيام بذلك ، ما عليك سوى تشغيل npm initجهازك ، ثم املأ الحقول ، ثم قم بالرد " yes" للتأكيد. بمجرد إنشاء package.jsonالملف ، سنقوم بتثبيت وحدات العقدة التالية.

sudo npm install -g generator-keystone
sudo npm install -g yo

بمجرد الانتهاء من التنزيل ، قم بتشغيل ما يلي.

yo keystone

املأ الحقول المطلوبة. وسوف يطلب منك ل project name، و template engine، emailلوحة التحكم، وهلم جرا. إذا كنت لا تعرف ماذا تختار ، فستكون الإعدادات الافتراضية جيدة. بعد تكوين إعداد Keystone ، يمكننا اختبار لمعرفة ما إذا كان خادمنا يعمل عن طريق الكتابة node keystoneلبدء تشغيل التطبيق الخاص بك. بشكل افتراضي ، سيتم تشغيل التطبيق الخاص بك localhost، على المنفذ 3000. لاحظ أنه إذا لم يكن لديك MongoDB مثبتًا ، فلن تكون قاعدة البيانات متاحة لك على الفور. يمكنك معرفة كيفية تثبيته لاحقًا في البرنامج التعليمي.

فيما يلي تخطيط الدليل الأساسي لـ Keystone.js:

  • /lib - هذا هو المكان الذي ستقوم فيه بتخزين مكتباتك المخصصة والرموز الأخرى.

  • /models- هذا هو المكان الذي ستخزن فيه نماذج قاعدة بيانات التطبيق الخاص بك. يستخدم KeystoneJS MongoDB كموفر قاعدة بيانات.

  • /public - هذا هو المكان الذي سيتم فيه تخزين ملفاتك الثابتة (CSS ، JS ، الصور ، وما إلى ذلك).

  • /routes/api - هذا هو المكان الذي سيتم فيه تخزين وحدات تحكم API الخاصة بالتطبيق.

  • /routes.views - سيتم تخزين وحدات تحكم عرض التطبيق هنا.

  • /templates - هذا هو المكان الذي سيتم فيه تخزين جميع ملفات النموذج الخاصة بالتطبيق.

  • /updates - هذا هو المكان الذي سيتم فيه تخزين البرامج النصية للترحيل.

  • package.json - هذا هو ملف تكوين npm الذي أنشأه المولد لنا.

  • keystone.js - ملف البداية الرئيسي لدينا ، نقوم بتشغيل هذا عند بدء تشغيل الموقع.

تهيئة قاعدة البيانات الخاصة بنا

كما ذكرنا سابقًا ، فإن قاعدة بياناتنا التي سنستخدمها هي MongoDB ، وهي قاعدة بيانات موثوقة NoSQL وقائمة على المستندات. إذا كنت قد قمت بالفعل بتثبيت MongoDB ، فيمكنك تخطي هذا القسم. إذا لم يكن كذلك ، فإليك كيفية تثبيته على Ubuntu 16.04.

قم باستيراد المفتاح العام المستخدم لحزمة mongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

قم بإنشاء ملف القائمة المستخدم لتثبيت الحزمة.

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

تحديث قوائم الحزمة الخاصة بك باستخدام apt.

sudo apt update

أخيرًا ، قم بتثبيت MongoDB.

sudo apt install mongodb-org -y

عندما ينتهي هذا التثبيت ، ابدأ MongoDB.

sudo service mongod start

سيبدأ هذا عملية MongoDB على المنفذ 27017.

سيتم استخدام MongoDB في جميع أنحاء التطبيق ، وسيتم استخدامه لتخزين المعلومات التي نستخدمها لنماذجنا ، على سبيل المثال Userنموذج. تستخدم Keystone قاعدة البيانات المفضلة لديها ، وفي الوقت الحالي لا يمكنك استخدام موردي قواعد البيانات الآخرين.

تثبيت PM2

الآن حان الوقت لتثبيت PM2 (مدير العمليات 2.) PM2 هو مدير عمليات لتطبيقات Node.js ، في شكل وحدة npm. يوفر لك طريقة سهلة لإدارة تطبيقاتك وتشغيلها في الخلفية. لأنه في NPM ، كل ما علينا فعله لتثبيته هو تشغيل ما يلي.

sudo npm install pm2 -g

هذا يخبر npm بتثبيته عالميًا ، حتى نتمكن من استخدامه في أي مكان في نظامنا.

تشغيل / إدارة تطبيق على PM2

في وقت سابق ، قمنا بتشغيل تطبيق الويب الخاص بنا مع node keystone. مع PM2 ، الأمر مختلف قليلاً. نقوم الآن بتشغيل تطبيق العقدة لدينا مع ما يلي.

pm2 start keystone.js

سيؤدي هذا إلى إضافة تطبيق PM2 الخاص بنا إلى قائمة العمليات الخاصة بنا ، وسيتم عرض مربع صغير حتى تتمكن من رؤية أنه موجود بالفعل على الإنترنت. لاحظ المربع المسمى idللعملية الخاصة بك. حافظ على هذا قريبًا ، لأننا سنقدم العديد من المراجع لهذا لاحقًا.

لرؤية سجلات التطبيق الخاص بك.

pm2 logs [id]

على سبيل المثال ، pm2 logs 0إذا كان هذا هو أول تطبيق PM2.

لإيقاف تطبيق الويب الخاص بك في أي وقت.

pm2 stop [id]

لحذف التطبيق الخاص بك تماما.

pm2 delete [id]

يحتوي PM2 حتى على لوحة تحكم للمراقبة إذا كنت ترغب في رؤية بعض الإحصائيات الأساسية لتطبيقك ، ويمكنك الوصول إليها باستخدام هذا.

pm2 monit

سيعرض هذا بعض المعلومات الأساسية مثل استخدام ذاكرة الوصول العشوائي واستخدام وحدة المعالجة المركزية ووقت التشغيل.

ميزة رائعة يقدمها PM2 watching. من حيث الجوهر ، تتم المشاهدة عندما يكتشف PM2 تلقائيًا التغييرات التي تطرأ على أي من الملفات الموجودة في نفس الدليل كملف البدء ، وستتم إعادة تشغيل التطبيق تلقائيًا. لتمكينه ، ما عليك سوى إعادة تشغيل التطبيق الخاص بك ، ولكن تمريره علامة مراقبة.

pm2 restart [id] --watch

لتعطيل المشاهدة بعد تمكينها ، قم بتشغيل الأمر نفسه مرة أخرى ، وسيتم تعطيل المشاهدة.

في هذا البرنامج التعليمي ، سنترك المراقبة.

إعداد وكيلك العكسي

تأكد من تثبيت Nginx. إذا لم يكن الأمر كذلك لسبب ما ، فارجع إلى الخطوات أعلاه.

اضبط إعدادات جدار الحماية. على أوبونتو ، ufwهو جدار الحماية الرسمي. افتراضيًا ، يتم حظر الاتصالات على المنفذ 80. نحتاج إلى إضافة استثناء لـ Nginx على المنفذ 80، والذي سيتم تشغيل تطبيق الويب الخاص بنا عليه.

sudo ufw allow 'Nginx HTTP'

تحقق من تشغيل خادم Nginx.

systemctl status nginx

تحت Activeالقسم ، إذا رأيت active (running)، فأنت جاهز تمامًا. إذا لم يكن الأمر كذلك ، فيمكنك محاولة إعادة تشغيل الخدمة.

systemctl restart nginx

احذف ملف التكوين Nginx الافتراضي.

sudo rm /etc/nginx/sites-available/default

قم بإنشاء واحدة جديدة ، واسمها ببساطة node.

sudo nano /etc/nginx/sites-available/node

قم بلصق التالي في الملف واستبداله example.comبنطاق موقع الويب الخاص بك.

listen 80;

server_name example.com;

    location / {

        proxy_set_header   X-Forwarded-For $remote_addr;

        proxy_set_header   Host $http_host;

        proxy_pass         "http://127.0.0.1:3000";
    }
}

لاحظ أن proxy_passالرمز يشير إلى IP الذي يعمل عليه تطبيق Keystone محليًا ، وهو موجود localhostعلى المنفذ 3000. listen 80هو المنفذ الذي نريد أن يتم توجيه التطبيق إليه ، وهو في هذه الحالة منفذ 80.

بعد ذلك ، نحتاج إلى إنشاء ارتباط رمزي ، أو ارتباط رمزي إلى مجلد يسمى sites-enabled. الفرق بين sites-enabledو sites-availableهو أنه sites-enabledيتم تحميله بالفعل بواسطة Nginx.

sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node

الآن sites-availableسيكون ملف التكوين الخاص بك جاهزًا للاستخدام ، وسيتم تحميله من sites-enabled. لتطبيق التهيئة حتى تصبح نافذة المفعول ، ما عليك سوى إعادة تشغيل Nginx.

sudo systemctl restart nginx

أخيرًا ، أعد تشغيل تطبيق PM2

pm2 restart [id]

الآن يمكنك الانتقال إلى نطاقك في متصفح ، وسترى Welcome to Keystoneشاشة ، مع لوحة لتتمكن من تسجيل الدخول.

إذا رأيت ذلك ، فقد قمت بإعداد خادم ويب إنتاج Node.js بنجاح. إذا لم يكن الأمر كذلك ، فربما تكون قد قمت بخطوة غير صحيحة ، وقد ترغب في العودة واتباع كل خطوة بعناية.

يمكنك معرفة المزيد عن Nginx من خلال زيارة موقع الويب الخاص بهم .

آمل أن تكون قد استمتعت بهذا البرنامج التعليمي ، وآمل أن يكون هذا قد ساعدك في إعداد خادم الويب الخاص بك للإنتاج على Vultr VPS.



كيفية تثبيت Neos CMS على FreeBSD 12

كيفية تثبيت Neos CMS على FreeBSD 12

استخدام نظام مختلف؟ Neos عبارة عن منصة تطبيق محتوى مع CMS وإطار تطبيق في جوهرها. سيوضح لك هذا الدليل كيفية التثبيت

كيفية تثبيت Omeka Classic 2.4 CMS على Fedora 26 LAMP VPS

كيفية تثبيت Omeka Classic 2.4 CMS على Fedora 26 LAMP VPS

استخدام نظام مختلف؟ Omeka Classic 2.4 CMS هو نظام نشر رقمي مجاني ومفتوح المصدر ونظام إدارة المحتوى (CMS) لمشاركة الصور الرقمية

كيفية تثبيت BlogoText CMS على Ubuntu 16.04 LAMP VPS

كيفية تثبيت BlogoText CMS على Ubuntu 16.04 LAMP VPS

استخدام نظام مختلف؟ BlogoText CMS هو نظام إدارة محتوى (CMS) بسيط وخفيف الوزن ومفتوح المصدر ومحرك مدونة بسيط

كيفية تثبيت WonderCMS على Fedora 29

كيفية تثبيت WonderCMS على Fedora 29

استخدام نظام مختلف؟ WonderCMS هو ملف CMS مفتوح المصدر وسريع وصغير مكتوب بلغة PHP. يتم استضافة كود مصدر WonderCMS على جيثب. فيل هذا الدليل

كيفية تثبيت Neos CMS على دبيان 9

كيفية تثبيت Neos CMS على دبيان 9

استخدام نظام مختلف؟ Neos عبارة عن منصة تطبيق محتوى مع CMS وإطار تطبيق في جوهرها. سيوضح لك هذا الدليل كيفية التثبيت

كيفية تثبيت Directus 6.4 CMS على Fedora 26 LAMP VPS

كيفية تثبيت Directus 6.4 CMS على Fedora 26 LAMP VPS

استخدام نظام مختلف؟ Directus 6.4 CMS هو نظام إدارة محتوى بلا محتوى قوي ومرن ومفتوح المصدر ومفتوح المصدر يوفر للمطورين

كيفية تثبيت ProcessWire CMS 3.0 على FreeBSD 11 FAMP VPS

كيفية تثبيت ProcessWire CMS 3.0 على FreeBSD 11 FAMP VPS

استخدام نظام مختلف؟ ProcessWire CMS 3.0 هو نظام إدارة محتوى بسيط ومرن وقوي ومجاني ومفتوح المصدر (CMS). ProcessWire CMS 3.

كيفية تثبيت dotCMS على CentOS 7

كيفية تثبيت dotCMS على CentOS 7

استخدام نظام مختلف؟ dotCMS هو نظام إدارة محتوى من فئة مفتوحة المصدر مفتوح بلغة جافا. أنه يحتوي تقريبا على كل ميزة مطلوبة ر

كيفية تثبيت Automad CMS على CentOS 7

كيفية تثبيت Automad CMS على CentOS 7

استخدام نظام مختلف؟ Automad هو نظام إدارة محتوى مفتوح المصدر (CMS) ومحرك قوالب مكتوب بلغة PHP. كود مصدر أوتوماد i

كيفية تثبيت PyroCMS على FreeBSD 11

كيفية تثبيت PyroCMS على FreeBSD 11

استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل ، تمشي جيدًا عبر الكل

كيفية تثبيت ProcessWire CMS 3.0 على CentOS 7 LAMP VPS

كيفية تثبيت ProcessWire CMS 3.0 على CentOS 7 LAMP VPS

استخدام نظام مختلف؟ ProcessWire CMS 3.0 هو نظام إدارة محتوى بسيط ومرن وقوي ومجاني ومفتوح المصدر (CMS). ProcessWire CMS 3.

قم بتثبيت Tiki Wiki CMS Groupware على Ubuntu 18.04 LTS

قم بتثبيت Tiki Wiki CMS Groupware على Ubuntu 18.04 LTS

استخدام نظام مختلف؟ مقدمة Tiki Wiki CMS Groupware ، والمعروف أيضًا باسم Tiki ، هو نظام إدارة محتوى ويكي مجاني ومفتوح المصدر. ميزة Tikis

كيفية تثبيت BoltWire على أوبونتو 18.04

كيفية تثبيت BoltWire على أوبونتو 18.04

استخدام نظام مختلف؟ مقدمة BoltWire هو نظام إدارة محتوى مجاني وخفيف الوزن مكتوب بلغة PHP. مقارنة بمعظم إدارة المحتوى الأخرى

كيفية تثبيت Omeka Classic 2.4 CMS على CentOS 7 LAMP VPS

كيفية تثبيت Omeka Classic 2.4 CMS على CentOS 7 LAMP VPS

استخدام نظام مختلف؟ Omeka Classic 2.4 CMS هو نظام نشر رقمي مجاني ومفتوح المصدر ونظام إدارة المحتوى (CMS) لمشاركة الصور الرقمية

كيفية تثبيت PyroCMS على Fedora 28

كيفية تثبيت PyroCMS على Fedora 28

استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل تمشي جيدًا عبر الكل

كيفية تثبيت PyroCMS على دبيان 9

كيفية تثبيت PyroCMS على دبيان 9

استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل تمشي جيدًا عبر الكل

كيفية تثبيت ProcessWire CMS 3.0 على Debian 9 LAMP VPS

كيفية تثبيت ProcessWire CMS 3.0 على Debian 9 LAMP VPS

استخدام نظام مختلف؟ ProcessWire CMS 3.0 هو نظام إدارة محتوى بسيط ومرن وقوي ومجاني ومفتوح المصدر (CMS). ProcessWire CMS 3.

كيفية تثبيت Microweber على CentOS 7

كيفية تثبيت Microweber على CentOS 7

استخدام نظام مختلف؟ Microweber هو سحب مفتوح المصدر وإفلات CMS ومتجر عبر الإنترنت. يتم استضافة شفرة مصدر Microweber على GitHub. هذا الدليل سيظهر لك

تثبيت Microweber على أوبونتو 16.04

تثبيت Microweber على أوبونتو 16.04

استخدام نظام مختلف؟ Microweber هو سحب مفتوح المصدر وإفلات CMS ومتجر عبر الإنترنت. يتم استضافة شفرة مصدر Microweber على GitHub. هذا الدليل سيظهر لك

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد