إنشاء تطبيق ويب 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

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