Hoe een Koa.js-knooppunttoepassing op Ubuntu 16.04 LTS in te stellen

In deze zelfstudie leren we hoe we een Koa.js-webtoepassing voor productie kunnen instellen met Node.js. We zullen ook een voorbeelddomein, met een omgekeerde proxy, koppelen met behulp van Apache en leren hoe we dit kunnen beheren met een goede procesmanager. Laten we beginnen zonder verder oponthoud.

Korte beschrijving van Node.js, Koa.js en Apache

Node.js is een snel, platformonafhankelijk JavaScript-framework gebaseerd op de V8-engine van Chrome. Het wordt gebruikt in zowel desktop- als servertoepassingen en staat bekend om zijn single-threaded event loop handling. Node.js heeft een pakketregister genaamd Node Package Manager (NPM), dat meer dan een half miljoen pakketten host. NPM-pakketten (of modules) vormen de kernruggengraat van Node.js, omdat het community-gestuurde code is die nuttig kan zijn in uw Node.js-toepassing. In onze Koa.js-app is Node.js het belangrijkste onderdeel van zijn functie.

Koa.js is een minimalistisch webraamwerk, gebouwd op het Node.js-platform. Gemaakt door hetzelfde team achter het populaire Express.js-framework, het doel is om het toch al minimalistische Express.js-framework verder te minimaliseren door middleware uit te sluiten van de kern. Een belangrijk kenmerk van Koa.js is het feit dat er geen terugbelverzoeken zijn. Koa.js is gebouwd op ES6-gebaseerde generatoren en ES6-functies, zoals Promises.

Apache is een populaire open-source webserver, die wordt gebruikt als een zeer eenvoudig startpunt voor webservers. In deze tutorial gebruiken we Apache als een reverse proxy, waardoor we onze applicatie kunnen linken aan een voorbeelddomein. Als je geen domein hebt, zal deze tutorial nog steeds voor je werken, met het enige verschil dat de website draait op je VPS IP, in plaats van een domein.

Node.js instellen

Zoals met elk Node.js-framework, moet je Node.js op je VPS installeren. In het belang van deze tutorial ga ik ervan uit dat je Node.js al op je systeem hebt geïnstalleerd. Zo niet, volg dan gewoon de instructies hier .

Het opzetten van onze applicatiedirectory

We zullen een map moeten maken met de kernbestanden van onze applicatie.

mkdir site

Voel je vrij om te vervangen sitedoor een andere naam die je wilt voor de directory. Vervolgens moeten we ons Node.js-pakketbestand initialiseren. Ga naar de map die u zojuist hebt gemaakt, voer deze uit npm initen voltooi de aanwijzingen. Uiteindelijk zou het er ongeveer zo uit moeten zien:

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

Koa.js installeren

Nu we onze directory hebben ingesteld, kunnen we doorgaan met het installeren van Koa.js. /siteTyp het volgende in de huidige werkdirectory .

npm install koa

Hiermee wordt de Koa.js-module van NPM gedownload en in onze projectdirectory geïnstalleerd voor toekomstig gebruik. Vervolgens maken we ons voorbeeldtoepassingsbestand met onze app-code. Maak hiervoor een index.jsbestand aan.

nano index.js

Eenmaal in het bestand, maak een voorbeeldtoepassing.

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

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

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

Sla het bestand op en sluit het. CTRL+ X.

We willen ervoor zorgen dat onze applicatie goed werkt. Om het te starten, voer node index.jsje uit en je zult zien Website is livein de console.

Apache installeren

Nu we weten dat onze website functioneel is, kunnen we doorgaan met het installeren van Apache en zijn afhankelijkheden.

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

Om de reverse proxy-functie van Apache te kunnen gebruiken, moeten we de benodigde modules inschakelen.

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

Sommige van deze modules zijn mogelijk al ingeschakeld, maar het is altijd goed om ze nogmaals te controleren.

Nu moeten we het standaard configuratiebestand voor Apache bewerken.

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

Hier moeten we een blok toevoegen voor onze applicatie.

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

    ServerName localhost
</VirtualHost>

Sla het bestand op, CTRL+ X.

U merkt misschien dat we poort gebruiken 3000als poort voor ons ProxyPassen ProxyPassReverseIP. Aangezien het dezelfde poort is waarop we onze Koa.js-applicatie uitvoeren, is het absoluut noodzakelijk dat we de juiste poort invoeren.

Zodra de wijzigingen zijn aangebracht, moeten we Apache opnieuw opstarten en onze Koa.js-toepassing opnieuw starten.

sudo systemctl restart apache2

Dit zorgt ervoor dat ons configuratiebestand actief is en klaar is om te werken wanneer we onze Koa.js-applicatie starten. Zodra Apache opnieuw is opgestart, navigeert u terug naar uw sitemap en start u de Koa.js-applicatie zoals we eerder deden. Navigeer vanuit uw webbrowser naar http://yourdomain, of http://yourip:en u ziet "Hallo wereld".

Beheer van onze applicatie met systemd

Nu we de basis hebben behandeld voor het maken van een voorbeeld van een Koa.js-applicatie, beseffen we dat het in een productieomgeving onpraktisch is om de applicatie te starten zoals we nu zijn. Een procesmanager is zeker een vereiste. Dat is waar systemd in het spel komt. Simpel gezegd, systemd bestaat uit software die bouwstenen biedt voor een Linux-systeem. Net als bij "init" biedt het een systeem om gebruikersprocessen te beheren na het opstarten van het systeem. In het geval van onze applicatie stelt systemd ons in staat om onze website automatisch te starten nadat het systeem opnieuw is opgestart, voor het geval er een gebeurtenis is die de uptime van het systeem verstoort. Het biedt ook een set tools die van pas kunnen komen bij het beheer van onze applicatie. Het beste is dat het is ingebouwd in Ubuntu 16.04 LTS, dus we hoeven geen extra software te installeren.

Maak een systemd-service

Alles wat we nodig hebben om onze applicatie te starten, staat in een bestand met de naam service. Het bevat details over onze app, zoals de naam, directory, omgeving en meer. Open een teksteditor om ons systeembestand te maken.

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

Bewerk en sla het bestand als volgt op.

[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

Vervang youruserdoor de gebruikersnaam van uw server. Hier volgt een kort overzicht van de belangrijke velden:

  • After - Dit informeert systemd om te wachten tot de netwerkinterface gereed is voordat we onze applicatie starten.
  • Environment- Hier kunnen we omgevingsvariabelen voor onze applicatie specificeren. Onze Node.js-poort is daar een van.
  • Type - Dit informeert systemd dat onze app gewoon kan worden opgestart, zonder gebruikersrechten en dergelijke op te offeren.
  • User- Dit vertelt systemd dat we de applicatie willen uitvoeren onder ons gebruikersaccount, wat wordt aanbevolen. Toepassingen uitvoeren als rootgebruiker kan leiden tot veel beveiligingsproblemen.
  • ExecStart - In wezen de opdracht die systemd zal uitvoeren om onze applicatie te starten, vergelijkbaar met hoe we deze eerder handmatig hebben gestart.
  • Restart- Vertelt onder welke voorwaarden onze applicatie opnieuw moet worden opgestart. In dit geval willen we dat onze website opnieuw wordt opgestart in het geval van een fout.

Start de systemd-service

We zijn nu klaar om onze systeemdienst te starten.

sudo systemctl daemon-reload

Dit is nodig wanneer een systemd-servicebestand verandert, zodat systemd nieuwe wijzigingen kan registreren.

Start vervolgens uw aanvraag.

sudo systemctl start site

Navigeer nogmaals naar de site in uw browser om te controleren of alles werkt.

Belangrijkste systeembeheerfuncties

  • stop - Stopt de applicatie volledig.
  • restart - Stopt de applicatie en start deze opnieuw onder een nieuw proces.
  • enable - Vertelt systemd om de applicatie te starten wanneer u uw computer opstart.
  • status - Toont informatie over de momenteel actieve applicatie, zoals uptime, applicatiestatus en meer.

Voer het volgende uit om een ​​van deze functies te gebruiken.

systemctl <function> site

Gevolgtrekking

We hebben met succes een Koa.js-applicatie opgezet en geleerd hoe we de proxy kunnen omkeren en beheren met systemd. U bent nu klaar om uw toepassing uit te breiden en voort te bouwen op dit voorbeeld. Als je meer wilt weten over Koa.js en meer dingen die je ermee kunt doen, bezoek dan hun website voor meer nuttige informatie. Daarnaast, als u meer wilt weten over de procesmanager van systemd, lees dan de documentatie ervoor hier . Als je tenslotte meer wilt weten over de reverse proxy van Apache, kun je ze hier bekijken .



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.