Opret en Hapi.js-webapplikation ved hjælp af Node.js på Ubuntu 16.04

Hapi.js er en rig, robust og kraftfuld Node.js-ramme designet til at bygge webapplikationer i Node.js-økosystemet. Dens enkle design gør den nem at komme i gang med. Hapi bruger mange af de nyeste JavaScript ES6-funktioner i sin kerne, såsom ES6-løfter. For dem af jer, der har brugt Express før, giver Hapi dig mulighed for at prøve noget nyt og opleve alle de nyeste JavaScript-funktioner.

I denne tutorial vil vores mål være at oprette en grundlæggende Hapi.js-webside, som hostes fra vores Vultr VPS, på Ubuntu 16.04 LTS. For dem, der har et domæne til deres websted, vil vi bruge en omvendt proxy til at linke vores domæne til vores websted. Til sidst vil vi lære at styre det med en procesleder. Nu hvor vi har fået det af vejen, lad os komme i gang.

Installerer Node.js

Vi bliver nødt til at installere Node.js. For at gøre det på Ubuntu 16.04 LTS skal du følge disse instruktioner.

Tilføjelse af repository

Vi bliver nødt til at tilføje NodeSource APT-lageret, som indeholder den seneste LTS-udgivelse af Node.js.

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

Vi er ved at downloade et script, som vi vil bruge til at tilføje depotet til vores kildeliste, samt installere Node.js fra NodeSource-depotet.

Installation af byggeværktøjer

Udover at installere selve Node.js, skal vi også installere nogle nødvendige byggeværktøjer, som vil hjælpe med at bygge de moduler, som vi måtte have brug for at installere.

sudo apt-get install -y build-essential

Dette downloader og installerer blot byggeværktøjerne fra depotet.

Opsætning af applikationsmappe

Det er god praksis at udpege en mappe, som vi vil bruge til vores applikation, som vil indeholde alle vores applikations data, såsom konfigurationsfiler og opstartsscripts. Opret en mappe, og giv den et navn, hvad du vil. Af hensyn til denne tutorial antager jeg, at du har navngivet den site.

mkdir site

Når du har lavet mappen, kan vi nu skifte til den. Sørg for, at du er i den mappe, du lige har oprettet, og start NPM-pakkeguiden.

npm init

Det vil bede dig om at indtaste et par forskellige ting, såsom dit programnavn, startfil, licens og så videre. De fleste felter kan du lade være som standard, bortset fra de mere oplagte felter, såsom navnet på din ansøgning. I sidste ende vil det se sådan ud:

{
  "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"
}

Når du er tilfreds med resultatet, skal du klikke for ENTERat gemme filen.

Installation af Hapi.js

Nu hvor din mappe er blevet konstrueret, kan vi nu fortsætte med at installere Hapi.js. Som nævnt før vil vi bruge NPM til at downloade Hapi.js, såvel som dets afhængigheder, til vores projekt. Kør følgende i projektbiblioteket.

npm install hapi.js

Dette downloader Hapi.js fra NPM og installerer det i vores projektmappe. I samme kørsel downloades alle afhængigheder, som Hapi.js kan stole på, også for vores bekvemmelighed.

Opsætning af vores eksempelapplikation

Nu er det tid til at konfigurere vores grundlæggende Hapi.js-applikationsfil. Dette vil indeholde al vores kode til applikationen. Længere hen ad vejen kan vi udvide vores ansøgningskode og tilføje flere ting til den, som vi finder passende.

Dernæst vil vi oprette vores startfil. Gå tilbage til mainsektionen af ​​din package.jsonfil for at bestemme præcist, hvordan filen skal navngives. Da jeg brugte standardnavneskemaet, vil vores fil hedde index.js.

nano index.js

Når du er inde i nano-teksteditoren, skal du oprette din basisapplikationskode som sådan.

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();

Først importerer vi Hapi-modulet. Derefter initialiserer vi vores serverkonstruktør, som indeholder den vært, vi ønsker at køre serveren på, samt porten, som er 3000til denne tutorial. Dernæst opsætter vi en grundlæggende router, som indikerer, at når nogen besøger webstedet, vil de blive mødt med en simpel besked. For at toppe det hele, har vi en async funktion, til at starte vores server, som vil logge på konsollen, som vores server kører. Når du er færdig, skal du gemme og lukke filen ( CTRL+ X)

Nu hvor vores hovedfil er sat op, er vi klar til at starte vores applikation.

node index.js

Hvis du ser " Our server is running!" i konsollen, starter serveren med succes.

Installer Nginx

Da Nginx er tilgængelig i standard Ubuntu-lagre, er installationen ligetil. Du skal blot opdatere dine pakkelister og installere det.

sudo apt update
sudo apt install nginx -y 

Efter at have opdateret pakkelisterne, vil Nginx og dets afhængigheder blive installeret.

Konfigurer Nginx

For at Nginx kan omvendt proxy vores applikation, skal vi oprette en konfigurationsfil. Denne konfigurationsfil vil indeholde oplysninger om vores applikation, som Nginx vil bruge til den omvendte proxy.

Slet standardkonfigurationen, som Nginx oprettede, da vi senere vil erstatte den med vores egen.

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

Lav en ny fil i sites-availablemappen. Hvad angår navngivning, kan vi sitefor nemheds skyld holde os til ganske enkelt.

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

Indsæt følgende i filen, og gem.

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;
    }
}

I denne fil fortæller vi Nginx at lytte på port 80. Vi indstiller også proxy-passthrough til localhostadressen og porten 3000, som er den samme port som vores Hapi-applikation.

Nu kan du navigere tilbage til din applikationsmappe og starte siden. Når siden er startet, skal du blot navigere til http://yourdomain.comeller http://yourip, og du vil se teksten " Hello World".

Installer PM2

PM2 kan findes i NPM-lageret, og du kan installere det globalt for at være tilgængeligt hvor som helst, som sådan.

sudo npm install pm2 -g

Den -gflaget i slutningen indikerer, at vi ønsker at installere modulet til globale moduler mappe, som vil give os mulighed for at bruge det uden for vores projekt mappe. Dette bruges for at vores projekt kan opføre sig som en normal systemapplikation.

Starter vores app med PM2

Når du har installeret PM2, skal du navigere tilbage til dit projektbibliotek. Syntaksen for at starte vores applikation vil være lidt anderledes nu. Sådan vil vi gøre det med PM2.

pm2 start index.js --name site

Vi bruger PM2 startfunktionen, som grundlæggende opretter en profil til vores applikation, under navnet site. Efter at have kørt denne kommando, starter dit websted, men du vil bemærke, at logfilerne ikke vises. Det er fordi den måde, vi ser logfiler på nu, er anderledes.

pm2 logs site

Du kan endda angive, hvor mange linjer med logfiler du vil se, med --linesargumentet.

Konklusion

Du har med succes opsat en Hapi.js-webserver, omvendt proxy med Nginx og lært, hvordan du bedre kan administrere den med PM2. Med denne viden kan du udvide denne tutorial yderligere og lave en meget avanceret Hapi.js-applikation. For at lære mere om mulighederne ved Hapi, besøg deres officielle dokumentation . Hvis du gerne vil lære mere om mulighederne ved PM2, se deres hurtigstartguide .


Opsæt Cacti på Debian Jessie

Opsæt Cacti på Debian Jessie

Introduktion Cacti er et open source overvågnings- og grafværktøj, som er fuldt baseret på RRD-data. Gennem Cacti kan du overvåge næsten enhver type enhed

Installer Lets Encrypt SSL på One-Click WordPress App

Installer Lets Encrypt SSL på One-Click WordPress App

Introduktion Lets Encrypt er en certifikatmyndighedstjeneste, der tilbyder gratis TLS/SSL-certifikater. Installationsprocessen forenkles af Certbot,

Konfigurer iRedMail på Debian Wheezy

Konfigurer iRedMail på Debian Wheezy

Bruger du et andet system? Denne vejledning viser dig, hvordan du installerer groupware iRedMail på en ny installation af Debian Wheezy. Du bør bruge en serve

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Introduktion Lighttpd er en forgrening af Apache, der sigter mod at være meget mindre ressourcekrævende. Den er let, deraf navnet, og den er ret enkel at bruge. Installer

Tre gratis serverkontrolpaneler (hurtig installation)

Tre gratis serverkontrolpaneler (hurtig installation)

1. Virtualmin/Webmin Virtualmin er et kraftfuldt og fleksibelt webhotel kontrolpanel til Linux og UNIX systemer baseret på den velkendte Open Source web-base

Opsætning af en Yii-applikation på Ubuntu 14.04

Opsætning af en Yii-applikation på Ubuntu 14.04

Yii er en PHP-ramme, der giver dig mulighed for at udvikle applikationer hurtigere og nemmere. Installation af Yii på Ubuntu er ligetil, da du vil lære nøjagtigt

Brug af skærm på Ubuntu 14.04

Brug af skærm på Ubuntu 14.04

Screen er et program, der tillader flere terminalsessioner inden for et vindue. Dette giver dig mulighed for at simulere flere terminalvinduer, hvor det ma

Brug af Logrotate til at administrere logfiler

Brug af Logrotate til at administrere logfiler

Introduktion Logrotate er et Linux-værktøj, der forenkler administrationen af ​​logfiler. Det kører typisk en gang om dagen via et cron-job og administrerer logbasen

Konfiguration af statisk netværk og IPv6 på CentOS 7

Konfiguration af statisk netværk og IPv6 på CentOS 7

VULTR har for nylig foretaget ændringer i deres ende, og alt skulle nu fungere fint ud af boksen med NetworkManager aktiveret. Skulle du ønske at deaktivere

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 er et kraftfuldt overvågningssystem, og når det bruges i en master-klient-model, kan det erstatte behovet for NRPE-baserede overvågningstjek. Mester-klienten

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

I denne artikel vil vi se, hvordan du kompilerer og installerer Nginx mainline fra de officielle kilder til Nginx med PageSpeed-modulet, som giver dig mulighed for at

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Bruger du et andet system? Apache Cassandra er et gratis og open source NoSQL-databasestyringssystem, der er designet til at give skalerbarhed, høj

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Kanboard på Debian 9

Sådan installeres Kanboard på Debian 9

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Gitea på Debian 9

Sådan installeres Gitea på Debian 9

Bruger du et andet system? Gitea er et alternativt open source, selvhostet versionskontrolsystem drevet af Git. Gitea er skrevet på Golang og er

Sådan installeres Gitea på Ubuntu 18.04

Sådan installeres Gitea på Ubuntu 18.04

Bruger du et andet system? Gitea er et alternativt open source, selv-hostet versionskontrolsystem drevet af git. Gitea er skrevet på Golang og er

Sådan installeres Thelia 2.3 på Debian 9

Sådan installeres Thelia 2.3 på Debian 9

Bruger du et andet system? Thelia er et open source-værktøj til at skabe e-business-websteder og administrere onlineindhold skrevet i PHP. Thelia kildekode i

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hvad er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheden udnyttes gennem, hvordan Linux behandler kode. Det giver en uprivilegeret bruger mulighed for at gai

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Det kan være farligt at have kun én bruger, som er root. Så lad os ordne det. Vultr giver os friheden til at gøre som vi vil med vores brugere og vores servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et letvægtsalternativ til phpMyAdmin. Til sammenligning er dens samlede pakkestørrelse 400KB mod 4,2 MB phpMyAdmin. I modsætning til phpMyAdmin, som

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere