إنشاء تطبيق ويب Hapi.js باستخدام Node.js على أوبونتو 16.04

يعد Hapi.js إطار عمل Node.js ثريًا وقويًا وقويًا مصممًا لبناء تطبيقات الويب في النظام البيئي Node.js. تصميمه البسيط يجعل من السهل البدء به. يستخدم Hapi العديد من أحدث ميزات JavaScript ES6 في جوهرها ، مثل وعود ES6. بالنسبة لأولئك منكم الذين استخدموا Express من قبل ، يتيح لك Hapi تجربة شيء جديد ، وتجربة جميع ميزات JavaScript الأخيرة.

في هذا البرنامج التعليمي ، سيكون هدفنا هو إعداد صفحة ويب Hapi.js الأساسية ، والتي يتم استضافتها من Vultr VPS ، على Ubuntu 16.04 LTS. بالنسبة لأولئك الذين لديهم مجال لموقعهم ، سوف نستخدم وكيل عكسي لربط نطاقنا بموقعنا. أخيرًا ، سنتعلم كيفية إدارتها باستخدام مدير العمليات. الآن بعد أن ابتعدنا عن الطريق ، فلنبدأ.

تثبيت Node.js

سنحتاج إلى تثبيت Node.js. للقيام بذلك على Ubuntu 16.04 LTS ، اتبع هذه التعليمات.

إضافة المستودع

سنحتاج إلى إضافة مستودع NodeSource APT ، الذي يحتوي على أحدث إصدار LTS من Node.js.

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

نقوم بتنزيل برنامج نصي سنستخدمه لإضافة المستودع إلى قائمة مصادرنا ، بالإضافة إلى تثبيت Node.js من مستودع NodeSource.

تثبيت أدوات البناء

بالإضافة إلى تثبيت Node.js نفسه ، سنحتاج أيضًا إلى تثبيت بعض أدوات البناء الضرورية ، والتي ستساعد في بناء أي وحدات قد نحتاج إلى تثبيتها.

sudo apt-get install -y build-essential

يؤدي هذا ببساطة إلى تنزيل أدوات الإنشاء وتثبيتها من المستودع.

إعداد دليل التطبيق

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

mkdir site

بمجرد الانتهاء من إنشاء المجلد ، يمكننا الآن تغييره. تأكد من أنك في الدليل الذي أنشأته للتو ، ابدأ تشغيل معالج حزمة NPM.

npm init

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

{
  "name": "site",
  "version": "1.0.0",
  "description": "Hapi.js site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "rich",
  "license": "MIT"
}

بمجرد أن تكون راضيًا عن النتيجة ، انقر ENTERلحفظ الملف.

تثبيت Hapi.js

الآن بعد أن تم إنشاء الدليل الخاص بك بنجاح ، يمكننا الآن المتابعة لتثبيت Hapi.js. كما ذكرنا سابقًا ، سوف نستخدم NPM لتنزيل Hapi.js ، فضلاً عن تبعياته ، لمشروعنا. في دليل المشروع ، قم بتشغيل ما يلي.

npm install hapi.js

يؤدي هذا إلى تنزيل Hapi.js من NPM وتثبيته في دليل مشروعنا. في نفس التشغيل ، يتم أيضًا تنزيل أي تبعيات قد يعتمد عليها Hapi.js لراحتنا.

إنشاء تطبيق عينة لدينا

حان الوقت الآن لإعداد ملف تطبيق Hapi.js الأساسي. سيحتوي هذا على جميع التعليمات البرمجية الخاصة بالتطبيق. أبعد من ذلك ، يمكننا التوسع في رمز التطبيق الخاص بنا ، وإضافة المزيد من الأشياء إليه ، كما نراه مناسبًا.

بعد ذلك ، سنقوم بإنشاء ملف البداية. ارجع إلى mainقسم package.jsonالملف ، لتحديد كيفية تسمية الملف بالضبط. نظرًا لأنني استخدمت نظام التسمية الافتراضي ، فسيتم استدعاء ملفنا index.js.

nano index.js

بمجرد أن تكون داخل محرر نص nano ، قم بإنشاء كود التطبيق الأساسي الخاص بك ، مثل ذلك.

const Hapi=require('hapi');
const server=Hapi.server({
    host:'localhost',
    port: 3000
});

server.route({
    method:'GET',
    path:'/',
    handler:((request,h)) => {
        return 'Sample Hapi.js Application';
    }
});
async function start() {

    try {
        await server.start();
    } catch (err) {
        console.log(err);
        process.exit(1);
    }
    console.log(`Our server is running! ${server.info.uri}`);
};

start();

أولاً ، نقوم باستيراد وحدة Hapi. بعد ذلك ، نقوم بتهيئة مُنشئ الخادم الخاص بنا ، والذي يحتوي على المضيف الذي نريد تشغيل الخادم عليه ، وكذلك المنفذ ، 3000لهذا البرنامج التعليمي. بعد ذلك ، قمنا بإعداد جهاز توجيه أساسي ، والذي يشير إلى أنه عندما يقوم شخص ما بزيارة الموقع ، فسيتم استقباله برسالة بسيطة. على رأس كل شيء ، لدينا وظيفة غير متزامنة ، لبدء تشغيل خادمنا ، والذي سيتم تسجيل الدخول إلى وحدة التحكم التي يعمل عليها الخادم الخاص بنا. عند الانتهاء ، احفظ وأغلق الملف ( CTRL+ X)

الآن بعد أن تم إعداد ملفنا الرئيسي ، نحن على استعداد لبدء تطبيقنا.

node index.js

إذا رأيت " Our server is running!" في وحدة التحكم ، فعندئذ بدأ تشغيل الخادم بنجاح.

قم بتثبيت Nginx

نظرًا لأن Nginx متوفر في مستودعات Ubuntu الافتراضية ، فإن التثبيت بسيط. ما عليك سوى تحديث قوائم حزمك وتثبيتها.

sudo apt update
sudo apt install nginx -y 

بعد تحديث قوائم الحزم ، سيتم تثبيت Nginx وتبعياته.

تكوين Nginx

لكي يقوم Nginx بعكس الخادم الوكيل لتطبيقنا ، سنحتاج إلى إنشاء ملف تكوين. سيحتوي ملف التكوين هذا على معلومات حول تطبيقنا ، والتي ستستخدمها Nginx للوكيل العكسي.

احذف التهيئة الافتراضية التي أنشأها Nginx ، حيث سنقوم باستبدالها بتكويننا فيما بعد.

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

قم بإنشاء ملف جديد في sites-availableالمجلد. أما بالنسبة للتسمية ، فيمكننا الالتزام ببساطة من siteأجل البساطة.

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

في الملف ، الصق ما يلي ، ثم احفظه.

server {
    listen 80;
    location / {
          proxy_set_header X-Real-IP 
          $remote_addr;
          proxy_set_header 
          X-Forwarded-For 
          $proxy_add_x_forwarded_for;
          proxy_set_header Host 
          $http_host;
          proxy_set_header 
        X-NginX-Proxy true; proxy_pass 
       http://127.0.0.1:3000/;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade 
     $http_upgrade;
    proxy_set_header Connection 
    "upgrade";
    proxy_redirect off;
    proxy_set_header 
   X-Forwarded-Proto $scheme;
    }
}

في هذا الملف ، نطلب من Nginx الاستماع على المنفذ 80. نقوم أيضًا بتعيين مرور الوكيل على localhostالعنوان والمنفذ 3000، وهو نفس المنفذ مثل تطبيق Hapi الخاص بنا.

الآن يمكنك العودة إلى دليل التطبيق الخاص بك ، وبدء الموقع. بمجرد بدء الموقع ، انتقل ببساطة إلى http://yourdomain.comأو http://yourip، وسترى النص " Hello World".

تثبيت PM2

يمكن العثور على PM2 في مستودع NPM ، ويمكنك تثبيته عالميًا بحيث يمكن الوصول إليه من أي مكان ، مثل ذلك.

sudo npm install pm2 -g

تشير -gالعلامة في النهاية إلى أننا نريد تثبيت الوحدة النمطية في مجلد الوحدات النمطية العامة ، مما سيسمح لنا باستخدامها خارج دليل مشروعنا. يتم استخدام هذا من أجل أن يتصرف مشروعنا مثل تطبيق النظام العادي.

بدء تطبيقنا مع PM2

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

pm2 start index.js --name site

نحن نستخدم وظيفة بدء PM2 ، التي تقوم بشكل أساسي بإنشاء ملف تعريف لتطبيقنا ، تحت الاسم site. بعد تشغيل هذا الأمر ، سيبدأ موقع الويب الخاص بك ، ولكن ستلاحظ أن السجلات لن تظهر. ذلك لأن طريقة عرض السجلات الآن مختلفة.

pm2 logs site

يمكنك أيضًا تحديد عدد سطور السجلات التي تريد رؤيتها باستخدام --linesالوسيطة.

استنتاج

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



Leave a Comment

كيفية تثبيت منصة عربة التسوق LiteCart على أوبونتو 16.04

كيفية تثبيت منصة عربة التسوق LiteCart على أوبونتو 16.04

LiteCart عبارة عن منصة سلة تسوق مجانية ومفتوحة المصدر مكتوبة بلغة PHP و jQuery و HTML 5. وهي عبارة عن برنامج بسيط وخفيف الوزن وسهل الاستخدام للتجارة الإلكترونية

قم بإعداد NFS Share على دبيان

قم بإعداد NFS Share على دبيان

NFS هو نظام ملفات قائم على الشبكة يسمح لأجهزة الكمبيوتر بالوصول إلى الملفات عبر شبكة الكمبيوتر. يوضح هذا الدليل كيف يمكنك فضح المجلدات عبر NF

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

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

استخدام نظام مختلف؟ Matomo (Piwik سابقًا) هو نظام أساسي مفتوح المصدر للتحليلات ، وهو بديل مفتوح لبرنامج Google Analytics. مصدر Matomo مستضاف

قم بإعداد خادم TeamTalk على Linux

قم بإعداد خادم TeamTalk على Linux

TeamTalk هو نظام مؤتمرات يتيح للمستخدمين إجراء محادثات صوتية / مرئية عالية الجودة ، والدردشة النصية ، ونقل الملفات ، ومشاركة الشاشات. أنا

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

استخدام نظام مختلف؟ مقدمة تعد CyberPanel واحدة من أولى لوحات التحكم في السوق مفتوحة المصدر وتستخدم OpenLiteSpeed. ما هذا

كيفية تثبيت وتكوين روبي مع Rbenv و Rails و MariaDB و Nginx و SSL و Passenger على Ubuntu 17.04

كيفية تثبيت وتكوين روبي مع Rbenv و Rails و MariaDB و Nginx و SSL و Passenger على Ubuntu 17.04

Ruby on Rails هو إطار عمل شهير لـ Ruby تم تطويره لزيادة إنتاجية المبرمجين. ومع ذلك ، الحصول على الجواهر والتبعيات المختلفة ر

كيفية الوصول إلى Vultr VPS الخاص بك

كيفية الوصول إلى Vultr VPS الخاص بك

يوفر Vultr عدة طرق مختلفة للوصول إلى VPS لتكوين وتثبيت واستخدام. بيانات اعتماد الوصول بيانات اعتماد الوصول الافتراضية لـ VPS الخاص بك

كيفية بناء Brotli من المصدر على Ubuntu 18.04 LTS

كيفية بناء Brotli من المصدر على Ubuntu 18.04 LTS

استخدام نظام مختلف؟ Brotli هو طريقة ضغط جديدة مع نسبة ضغط أفضل من GZIP. تتم استضافة رمز المصدر الخاص به علنًا على Githu هذا

كيفية تثبيت OpenNMS على Ubuntu 16.04 LTS

كيفية تثبيت OpenNMS على Ubuntu 16.04 LTS

استخدام نظام مختلف؟ OpenNMS عبارة عن منصة إدارة شبكة مفتوحة المصدر على مستوى المؤسسات يمكن استخدامها لمراقبة وإدارة العديد من الأجهزة

نشر WebDAV على دبيان 10 باستخدام WsgiDAV

نشر WebDAV على دبيان 10 باستخدام WsgiDAV

مقدمة: التأليف والإصدار الموزع على الويب (WebDAV) هو امتداد HTTP يوفر إطار عمل لإنشاء الملفات وتعديلها عن بُعد على

استخدام طرق عرض MySQL على دبيان 7

استخدام طرق عرض MySQL على دبيان 7

مقدمة يتميز MySQL بميزة رائعة تعرف باسم طرق العرض. المشاهدات هي استعلامات مخزنة. اعتبرها اسمًا مستعارًا لاستعلام طويل. في هذا الدليل ،

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

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

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

كيفية تثبيت DokuWiki على Ubuntu 16.04 LTS

كيفية تثبيت DokuWiki على Ubuntu 16.04 LTS

استخدام نظام مختلف؟ DokuWiki هو برنامج ويكي مفتوح المصدر مكتوب بلغة PHP ولا يتطلب قاعدة بيانات. يقوم بتخزين البيانات في ملفات نصية. DokuWik

إنشاء Chroot على دبيان

إنشاء Chroot على دبيان

ستعلمك هذه المقالة كيفية إعداد سجن سريع على دبيان. أفترض أنك تستخدم Debian 7.x. إذا كنت تقوم بتشغيل دبيان 6 أو 8 ، فقد يعمل هذا ، ولكن

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

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

مقدمة طريقة سهلة لإعداد خادم VPN على دبيان هي PiVPN. PiVPN هو أداة تثبيت وغلاف لـ OpenVPN. يخلق أوامر بسيطة لك

كيفية تثبيت CyberPanel وتكوينه على Ubuntu 18.04 LTS

كيفية تثبيت CyberPanel وتكوينه على Ubuntu 18.04 LTS

استخدام نظام مختلف؟ مقدمة تعد CyberPanel واحدة من أولى لوحات التحكم في السوق مفتوحة المصدر وتستخدم OpenLiteSpeed. ما هذا

كيفية نشر Ghost v0.11 LTS على Fedora 25

كيفية نشر Ghost v0.11 LTS على Fedora 25

استخدام نظام مختلف؟ Ghost هي منصة تدوين مفتوحة المصدر اكتسبت شعبية بين المطورين والمستخدمين العاديين منذ عام 201

قم بتثبيت RockMongo على CentOS 7

قم بتثبيت RockMongo على CentOS 7

RockMongo هي أداة إدارة MongoDB على الويب تشبه أداة إدارة MySQL: phpMyAdmin. سيغطي هذا البرنامج التعليمي عملية التثبيت

كيفية نشر Lets Chat Server على CentOS 7

كيفية نشر Lets Chat Server على CentOS 7

Lets Chat هو تطبيق دردشة مفتوح المصدر مصمم لتوفير خدمة الرسائل ذاتية الاستضافة للفرق الصغيرة. يعتمد Lets Chat على NodeJS و MongoDB

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

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

نظرة ثاقبة على 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. قراءة هذه المادة لمعرفة المزيد