Opprett en Hapi.js-nettapplikasjon ved å bruke Node.js på Ubuntu 16.04

Hapi.js er et rikt, robust og kraftig Node.js-rammeverk designet for å bygge nettapplikasjoner i Node.js-økosystemet. Den enkle designen gjør den enkel å komme i gang med. Hapi bruker mange av de nyeste JavaScript ES6-funksjonene i kjernen, slik som ES6-løfter. For de av dere som har brukt Express før, lar Hapi deg prøve noe nytt og oppleve alle de nyeste JavaScript-funksjonene.

I denne opplæringen vil målet vårt være å sette opp en grunnleggende Hapi.js-nettside, som er vert fra vår Vultr VPS, på Ubuntu 16.04 LTS. For de som har et domene for nettstedet deres, vil vi bruke en omvendt proxy for å koble domenet vårt til nettstedet vårt. Til slutt skal vi lære å håndtere det med en prosessleder. Nå som vi har fått det ut av veien, la oss komme i gang.

Installerer Node.js

Vi må installere Node.js. For å gjøre det på Ubuntu 16.04 LTS, følg disse instruksjonene.

Legger til depotet

Vi må legge til NodeSource APT-depotet, som inneholder den siste LTS-utgivelsen av Node.js.

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

Vi laster ned et skript som vi skal bruke for å legge til depotet til kildelisten vår, samt installere Node.js fra NodeSource-depotet.

Installere byggeverktøy

I tillegg til å installere selve Node.js, må vi også installere noen nødvendige byggeverktøy, som vil hjelpe til med å bygge eventuelle moduler som vi trenger å installere.

sudo apt-get install -y build-essential

Dette laster bare ned og installerer byggeverktøyene fra depotet.

Sette opp applikasjonskatalog

Det er god praksis å angi en mappe som vi skal bruke for applikasjonen vår, som vil inneholde alle applikasjonens data, for eksempel konfigurasjonsfiler og oppstartsskript. Opprett en mappe, og navngi den hva du vil. For denne veiledningens skyld antar jeg at du kalte den site.

mkdir site

Når du har laget mappen, kan vi nå bytte til den. Sørg for at du er i katalogen du nettopp har opprettet, start opp NPM-pakkeveiviseren.

npm init

Den vil be deg om å legge inn noen forskjellige ting, for eksempel programmets navn, startfil, lisens og så videre. De fleste feltene kan du la stå som standard, bortsett fra de mer åpenbare feltene, for eksempel navnet på programmet. Til slutt vil det se slik ut:

{
  "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 fornøyd med resultatet, klikker du for ENTERå lagre filen.

Installerer Hapi.js

Nå som katalogen din har blitt konstruert, kan vi nå fortsette å installere Hapi.js. Som nevnt før, vil vi bruke NPM til å laste ned Hapi.js, så vel som dets avhengigheter, for prosjektet vårt. Kjør følgende i prosjektkatalogen.

npm install hapi.js

Dette laster ned Hapi.js fra NPM og installerer det i vår prosjektkatalog. I samme kjøring blir alle avhengigheter som Hapi.js kan stole på, også lastet ned for enkelhets skyld.

Setter opp vår eksempelapplikasjon

Nå er det på tide å sette opp vår grunnleggende Hapi.js-applikasjonsfil. Dette vil inneholde all vår kode for applikasjonen. Lenger ned i veien kan vi utvide søknadskoden vår, og legge til flere ting til den, ettersom vi finner det passende.

Deretter lager vi startfilen vår. Se tilbake til maindelen av package.jsonfilen din for å finne ut nøyaktig hvordan du skal navngi filen. Siden jeg brukte standard navneskjema, vil filen vår hete index.js.

nano index.js

Når du er inne i nano-tekstredigeringsprogrammet, oppretter du basisapplikasjonskoden din, som så.

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-modulen. Deretter initialiserer vi serverkonstruktøren vår, som inneholder verten vi ønsker å kjøre serveren på, samt porten, som er 3000for denne opplæringen. Deretter setter vi opp en grunnleggende ruter, som indikerer at når noen besøker nettstedet, vil de bli møtt med en enkel melding. For å toppe det hele har vi en async-funksjon, for å starte serveren vår, som vil logge på konsollen som serveren vår kjører. Når du er ferdig, lagre og lukk filen ( CTRL+ X)

Nå som hovedfilen vår er satt opp, er vi klare til å starte applikasjonen vår.

node index.js

Hvis du ser " Our server is running!" i konsollen, startet serveren vellykket.

Installer Nginx

Siden Nginx er tilgjengelig i standard Ubuntu-lagre, er installasjonen enkel. Bare oppdater pakkelistene dine og installer den.

sudo apt update
sudo apt install nginx -y 

Etter å ha oppdatert pakkelistene, vil Nginx og dets avhengigheter bli installert.

Konfigurer Nginx

For at Nginx skal reversere proxy-applikasjonen vår, må vi opprette en konfigurasjonsfil. Denne konfigurasjonsfilen vil inneholde informasjon om applikasjonen vår, som Nginx vil bruke for omvendt proxy.

Slett standardkonfigurasjonen som Nginx opprettet, siden vi vil erstatte den med vår egen senere.

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

Lag en ny fil i sites-availablemappen. Når det gjelder navngivning, kan vi holde oss til ganske enkelt site, for enkelhets skyld.

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

I filen limer du inn følgende og lagrer.

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 filen ber vi Nginx om å lytte på port 80. Vi setter også proxy-passthrough til localhostadressen og porten 3000, som er den samme porten som vår Hapi-applikasjon.

Nå kan du navigere tilbake til applikasjonskatalogen din og starte siden. Når siden har startet, naviger ganske enkelt til http://yourdomain.comeller http://yourip, og du vil se teksten " Hello World".

Installer PM2

PM2 kan bli funnet i NPM-depotet, og du kan installere det globalt for å være tilgjengelig fra hvor som helst, som så.

sudo npm install pm2 -g

Den -gflagget på slutten indikerer at vi ønsker å installere modulen til globale moduler mappen, som vil tillate oss å bruke den utenfor vårt prosjekt katalogen. Dette brukes for at prosjektet vårt skal oppføre seg som en vanlig systemapplikasjon.

Starter appen vår med PM2

Når du har installert PM2, naviger tilbake til prosjektkatalogen. Syntaksen for å starte applikasjonen vår vil være litt annerledes nå. Slik skal vi gjøre det med PM2.

pm2 start index.js --name site

Vi bruker PM2-startfunksjonen, som i utgangspunktet oppretter en profil for applikasjonen vår, under navnet site. Etter å ha kjørt denne kommandoen, vil nettstedet ditt starte, men du vil legge merke til at loggene ikke vises. Det er fordi måten vi ser på logger nå er annerledes.

pm2 logs site

Du kan til og med spesifisere hvor mange linjer med logger du vil se, med --linesargumentet.

Konklusjon

Du har satt opp en Hapi.js-nettserver, reversert proxy med Nginx og lært hvordan du bedre kan administrere den med PM2. Med denne kunnskapen kan du utvide denne opplæringen ytterligere og lage en svært avansert Hapi.js-applikasjon. For å lære mer om mulighetene til Hapi, besøk deres offisielle dokumentasjon . Hvis du vil lære mer om mulighetene til PM2, se hurtigstartguiden deres .


Sett opp Cacti på Debian Jessie

Sett opp Cacti på Debian Jessie

Introduksjon Cacti er et åpen kildekode overvåkings- og grafverktøy som er fullt basert på RRD-data. Gjennom Cacti kan du overvåke nesten alle typer enheter

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Introduksjon Lets Encrypt er en sertifikatmyndighetstjeneste som tilbyr gratis TLS/SSL-sertifikater. Installasjonsprosessen forenkles av Certbot,

Sett opp iRedMail på Debian Wheezy

Sett opp iRedMail på Debian Wheezy

Bruker du et annet system? Denne opplæringen viser deg hvordan du installerer gruppevaren iRedMail på en ny installasjon av Debian Wheezy. Du bør bruke en serve

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

1. Virtualmin/Webmin Virtualmin er et kraftig og fleksibelt kontrollpanel for webhotell for Linux- og UNIX-systemer basert på den velkjente Open Source-nettbasen

Bruker skjermen på Ubuntu 14.04

Bruker skjermen på Ubuntu 14.04

Skjerm er et program som tillater flere bruk av terminalsesjoner i ett vindu. Dette lar deg simulere flere terminalvinduer der det ma

Bruke Logrotate til å administrere loggfiler

Bruke Logrotate til å administrere loggfiler

Introduksjon Logrotate er et Linux-verktøy som forenkler administrasjonen av loggfiler. Den kjører vanligvis en gang om dagen via en cron-jobb, og administrerer loggbasen

Installere Docker CE på Ubuntu 16.04

Installere Docker CE på Ubuntu 16.04

Bruker du et annet system? Docker er en applikasjon som gjør det mulig å distribuere programmer som kjøres som containere. Det ble skrevet i det populære Go-programmet

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hva er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheten utnyttes gjennom hvordan Linux behandler kode. Det gjør det mulig for en uprivilegert bruker å gai

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Å ha bare én bruker, som er root, kan være farlig. Så la oss fikse det. Vultr gir oss friheten til å gjøre som vi vil med våre brukere og våre servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et lett alternativ til phpMyAdmin. Til sammenligning er dens totale pakkestørrelse 400 KB, mot 4,2 MB med phpMyAdmin. I motsetning til phpMyAdmin, som

Slik installerer du GoAccess på Ubuntu 16.04

Slik installerer du GoAccess på Ubuntu 16.04

Bruker du et annet system? GoAccess er en åpen kildekode-nettlogganalysator. Du kan bruke den til analyse av logger på sanntidsbasis i enten terminalen eller

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Denne artikkelen er en del av en todelt serie om installasjon og konfigurering av Nagios på Ubuntu 14.04. Del 1: Nagios Server Del 2: Oversikt over ekstern vert Nagio

Sett opp tidssone og NTP på Ubuntu 14.04

Sett opp tidssone og NTP på Ubuntu 14.04

Vultr-servere kan ikke distribueres med tidssonen/datoen/klokkeslettet du trenger på serveren din. Heldigvis kan vi manuelt stille inn tidssonen for å forhindre problemer

Distribuer en Meteor-applikasjon på Ubuntu

Distribuer en Meteor-applikasjon på Ubuntu

Denne artikkelen vil lede deg gjennom distribusjon av Meteor-appen din til en Vultr VPS som kjører Ubuntu 14.04. Det kan også fungere på andre Linux-distribusjoner (forsøk a

Arbeide med Linux-funksjoner

Arbeide med Linux-funksjoner

Introduksjon Linux-funksjoner er spesielle attributter i Linux-kjernen som gir prosesser og binære kjørbare spesifikke rettigheter som er normale

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Noen arkitekturer med høy tilgjengelighet krever en flytende IP-adresse. Denne funksjonaliteten er tilgjengelig på Vultr-plattformen når privat nettverk har bee

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Innledning Enkelte scenarier krever at du oppretter brukere med lese- og skrivetilgang til en enkelt katalog kun via FTP. Denne artikkelen vil vise deg hvordan t

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Node.js-applikasjoner er populære for deres evne til å skalere. Å kjøre flere samtidige prosesser på flere servere gir lavere ventetid og større oppetid

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Bruker du et annet system? LibreNMS er et fullverdig åpen kildekode-nettverksovervåkingssystem. Den bruker SNMP for å hente data fra forskjellige enheter. En variant

Stopp DHCP fra å endre resolv.conf

Stopp DHCP fra å endre resolv.conf

For DHCP-brukere kan det hende du trenger å redigere /etc/resolv.conf for å bruke andre navneservere. Deretter, etter en periode (eller etter en omstart av systemet)

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 akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer