Hvordan sette opp en Koa.js Node-applikasjon på Ubuntu 16.04 LTS

I denne opplæringen skal vi lære hvordan du setter opp en Koa.js-nettapplikasjon for produksjon ved å bruke Node.js. Vi vil også koble et eksempeldomene, med en omvendt proxy, ved hjelp av Apache, og lære hvordan du administrerer det med en riktig prosessleder. Uten videre, la oss komme i gang.

Kort beskrivelse av Node.js, Koa.js og Apache

Node.js er et raskt JavaScript-rammeverk på tvers av plattformer basert på Chromes V8-motor. Den brukes i både skrivebords- og serverapplikasjoner og er kjent for sin entrådede hendelsesløkkehåndtering. Node.js har et pakkeregister kalt Node Package Manager (NPM), som er vert for over en halv million pakker. NPM-pakker (eller moduler) er kjerneryggen i Node.js, siden de er fellesskapsdrevet kode som kan være nyttig i Node.js-applikasjonen din. I vår Koa.js-app er Node.js kjernedelen av funksjonen.

Koa.js er et minimalistisk nettrammeverk, bygget på Node.js-plattformen. Laget av det samme teamet bak det populære Express.js-rammeverket, er målet å minimere det allerede minimalistiske Express.js-rammeverket ytterligere ved å ekskludere mellomvare fra kjernen. Et hovedtrekk ved Koa.js er det faktum at det ikke er noen tilbakeringinger. Koa.js er bygget på ES6-baserte generatorer og ES6-funksjoner, for eksempel Promises.

Apache er en populær åpen kildekode-webserver, brukt som et veldig grunnleggende utgangspunkt for webservere. I denne opplæringen vil vi bruke Apache som en omvendt proxy, som lar oss koble applikasjonen vår til et eksempeldomene. Hvis du ikke har et domene, vil denne opplæringen fortsatt fungere for deg, med den eneste forskjellen at nettstedet vil kjøre på din VPS IP, i stedet for et domene.

Setter opp Node.js

Som med alle Node.js-rammeverk, må du installere Node.js på din VPS. Av hensyn til denne veiledningen vil jeg anta at du allerede har Node.js installert på systemet ditt. Hvis ikke, kan du ganske enkelt følge instruksjonene her .

Sette opp vår applikasjonskatalog

Vi må opprette en mappe som vil inneholde programmets kjernefiler.

mkdir site

Erstatt gjerne sitemed et hvilket som helst annet navn du ønsker for katalogen. Deretter må vi initialisere Node.js-pakkefilen. Bytt til katalogen du nettopp har opprettet, og kjør npm init, og fullfør ledetekstene. Til slutt skal det se omtrent slik ut:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Koa.js Site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "yourname",
  "license": "ISC"
}

Installerer Koa.js

Nå som vi har satt opp katalogen vår, kan vi fortsette å installere Koa.js. I gjeldende arbeidskatalog, /site, skriv inn følgende.

npm install koa

Dette vil laste ned Koa.js-modulen fra NPM og installere den i vår prosjektkatalog for fremtidig bruk. Deretter vil vi lage vår eksempelapplikasjonsfil som vil inneholde appkoden vår. For å gjøre det, lag en index.jsfil.

nano index.js

Når du er inne i filen, oppretter du et eksempelprogram.

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
     ctx.body = 'Hello World';
 });

app.listen(3000);
console.log('Website is live!')

Lagre og lukk filen. CTRL+ X.

Vi vil sørge for at applikasjonen vår kjører som den skal. For å starte den, kjør node index.js, og du vil se Website is livei konsollen.

Installerer Apache

Nå som vi vet at nettstedet vårt er funksjonelt, kan vi fortsette å installere Apache og dets avhengigheter.

sudo apt install -y libapache2-mod-proxy-html libxml2-dev

For å bruke den omvendte proxy-funksjonen som finnes i Apache, må vi aktivere de nødvendige modulene.

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

Noen av disse modulene kan allerede være aktivert, men det er alltid lurt å dobbeltsjekke dem.

Nå må vi redigere standard konfigurasjonsfilen for Apache.

sudo nano /etc/apache2/sites-enabled/000-default.conf

Her må vi legge til en blokk for søknaden vår.

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://0.0.0.0:3000/
    ProxyPassReverse / http://0.0.0.0:3000

    ServerName localhost
</VirtualHost>

Lagre filen, CTRL+ X.

Du vil kanskje legge merke til at vi bruker port 3000som port for vår ProxyPassog ProxyPassReverseIP. Siden det er den samme porten som vi kjører Koa.js-applikasjonen vår på, er det viktig at vi legger inn riktig port.

Når endringene er på plass, må vi starte Apache på nytt og starte vår Koa.js-applikasjon på nytt.

sudo systemctl restart apache2

Dette vil sikre at vår konfigurasjonsfil er aktiv og klar til å fungere når vi starter vår Koa.js-applikasjon. Når Apache er startet på nytt, naviger tilbake til nettstedskatalogen din og start Koa.js-applikasjonen som vi gjorde tidligere. Fra nettleseren din, naviger til http://yourdomain, eller http://yourip:, og du vil se "Hello World".

Administrere applikasjonen vår med systemd

Nå som vi har dekket det grunnleggende om å lage et eksempel på en Koa.js-applikasjon, innser vi at i et produksjonsmiljø er det upraktisk å starte applikasjonen slik vi er nå. En prosessleder er definitivt et krav. Det er der systemd kommer inn i bildet. Enkelt sagt består systemd av programvare som gir byggesteiner for et Linux-system. I likhet med "init", gir det et system for å administrere brukerprosesser etter systemoppstart. Når det gjelder applikasjonen vår, lar systemd oss ​​automatisk starte nettstedet vårt etter at systemet har blitt startet på nytt, i tilfelle det er en hendelse som forstyrrer systemets oppetid. Det gir også et sett med verktøy som kan komme godt med når du administrerer applikasjonen vår. Det beste er det faktum at det er innebygd i Ubuntu 16.04 LTS, så vi trenger ikke å installere ekstra programvare.

Opprett systemtjeneste

Alt vi trenger for å starte applikasjonen vår, finnes i en fil som heter service. Den inneholder detaljer om appen vår, for eksempel navn, katalog, miljø og mer. Åpne et tekstredigeringsprogram for å opprette systemfilen vår.

sudo nano /lib/systemd/system/site.service

Rediger og lagre filen slik.

[Unit]
Description=desc here
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3000
Type=simple
User=youruser
ExecStart=/usr/bin/node /home/[youruser]/site/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Erstatt yourusermed brukernavnet til serveren din. Her er en rask oversikt over de viktige feltene:

  • After - Dette informerer systemd om å vente til nettverksgrensesnittet er klart før du starter vår applikasjon.
  • Environment– Her kan vi spesifisere miljøvariabler for vår applikasjon. Node.js-porten vår er en av dem.
  • Type – Dette informerer systemd om at appen vår bare kan startes opp, uten å forkaste brukerprivilegier og slikt.
  • User– Dette forteller systemd at vi ønsker å kjøre applikasjonen under vår brukerkonto, noe som anbefales. Å kjøre applikasjoner som root-bruker kan føre til mange sikkerhetskompromitteringer.
  • ExecStart - I hovedsak kommandoen som systemd vil kjøre for å starte applikasjonen vår, på samme måte som vi startet den manuelt før.
  • Restart- Forteller systemd under hvilke forhold applikasjonen vår skal startes på nytt. I dette tilfellet ønsker vi at nettstedet vårt skal startes på nytt i tilfelle feil.

Start systemd-tjenesten

Vi er nå klare til å starte vår systemd-tjeneste.

sudo systemctl daemon-reload

Dette er nødvendig når en systemd-tjenestefil endres for at systemd skal registrere eventuelle nye endringer som er gjort.

Start deretter søknaden din.

sudo systemctl start site

Naviger til nettstedet i nettleseren din igjen for å bekrefte at alt fungerer.

Viktige systemadministrerende funksjoner

  • stop - Stopper applikasjonen helt.
  • restart - Stopper applikasjonen, og starter den på nytt under en ny prosess.
  • enable - Ber systemd starte applikasjonen hver gang du starter datamaskinen.
  • status - Viser informasjon om programmet som kjører for øyeblikket, for eksempel oppetid, programstatus og mer.

For å bruke noen av disse funksjonene, kjør følgende.

systemctl <function> site

Konklusjon

Vi har satt opp en Koa.js-applikasjon og lært hvordan vi kan reversere proxy den, samt administrere den med systemd. Du er nå klar til å utvide søknaden din og bygge videre på dette eksemplet. Hvis du vil lære mer om Koa.js, og flere ting du kan gjøre med, kan du besøke nettstedet deres for mer nyttig informasjon. I tillegg til det, hvis du ønsker å lære mer om systemds prosessbehandler, kan du lese dokumentasjonen for det her . Til slutt, hvis du ønsker å lære mer om Apaches omvendte proxy, kan du gjerne sjekke dem ut her .


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