Koa.js-solmusovelluksen määrittäminen Ubuntu 16.04 LTS:ssä

Tässä opetusohjelmassa opimme määrittämään Koa.js-verkkosovelluksen tuotantoa varten Node.js:n avulla. Linkitämme myös esimerkkiverkkotunnuksen käänteisellä välityspalvelimella Apachen avulla ja opimme hallitsemaan sitä asianmukaisen prosessinhallinnan avulla. Pidemättä puhetta, aloitetaan.

Lyhyt kuvaus Node.js-, Koa.js- ja Apachesta

Node.js on nopea, monialustainen JavaScript-kehys, joka perustuu Chromen V8-moottoriin. Sitä käytetään sekä työpöytä- että palvelinsovelluksissa, ja se on kuuluisa yksisäikeisestä tapahtumasilmukan käsittelystään. Node.js sisältää pakettirekisterin nimeltä Node Package Manager (NPM), joka isännöi yli puoli miljoonaa pakettia. NPM-paketit (tai moduulit) ovat Node.js:n ydinrunko, koska ne ovat yhteisölähtöisiä koodeja, joista voi olla hyötyä Node.js-sovelluksessasi. Koa.js-sovelluksessamme Node.js on sen toiminnan ydin.

Koa.js on minimalistinen verkkokehys, joka on rakennettu Node.js-alustalle. Sen on tehnyt sama tiimi suositun Express.js-kehyksen takana, ja sen tavoitteena on minimoida entisestään jo ennestään minimalistinen Express.js-kehys sulkemalla väliohjelmistot pois sen ytimestä. Koa.js:n tärkein ominaisuus on se, että takaisinsoittoja ei ole. Koa.js on rakennettu ES6-pohjaisille generaattoreille ja ES6-ominaisuuksille, kuten Promises.

Apache on suosittu avoimen lähdekoodin verkkopalvelin, jota käytetään web-palvelimien peruslähtökohtana. Tässä opetusohjelmassa käytämme Apachea käänteisenä välityspalvelimena, jonka avulla voimme linkittää sovelluksemme esimerkkiverkkotunnukseen. Jos sinulla ei ole verkkotunnusta, tämä opetusohjelma toimii edelleen sinulle, sillä ainoa ero on, että verkkosivusto toimii VPS-IP-osoitteellasi verkkotunnuksen sijaan.

Node.js:n määrittäminen

Kuten missä tahansa Node.js-kehyksessä, sinun on asennettava Node.js VPS:ään. Tämän opetusohjelman vuoksi oletan, että Node.js on jo asennettu järjestelmääsi. Jos ei, voit seurata ohjeita täällä .

Sovellushakemistomme määrittäminen

Meidän on luotava kansio, joka sisältää sovelluksemme ydintiedostot.

mkdir site

Voit vapaasti korvata sitesen millä tahansa muulla nimellä, jonka haluat hakemistoon. Seuraavaksi meidän on alustettava Node.js-pakettitiedostomme. Vaihda juuri luomaasi hakemistoon, suorita npm initja täytä kehotteet. Loppujen lopuksi sen pitäisi näyttää suunnilleen tältä:

{
  "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:n asentaminen

Nyt kun hakemistomme on määritetty, voimme jatkaa Koa.js:n asentamista. Kirjoita nykyiseen työhakemistoon /siteseuraava.

npm install koa

Tämä lataa Koa.js-moduulin NPM:stä ja asentaa sen projektihakemistoomme tulevaa käyttöä varten. Seuraavaksi luomme mallisovellustiedoston, joka sisältää sovelluskoodimme. Voit tehdä tämän luomalla index.jstiedoston.

nano index.js

Kun olet tiedoston sisällä, luo mallisovellus.

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

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

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

Tallenna ja sulje tiedosto. CTRL+ X.

Haluamme varmistaa, että sovelluksemme toimii oikein. Käynnistä se suorittamalla node index.js, ja näet Website is livekonsolissa.

Apachen asennus

Nyt kun tiedämme, että verkkosivustomme toimii, voimme jatkaa Apachen ja sen riippuvuuksien asentamista.

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

Jotta voisimme käyttää Apachesta löytyvää käänteistä välityspalvelinta, meidän on otettava käyttöön tarvittavat moduulit.

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

Jotkut näistä moduuleista voivat olla jo käytössä, mutta on aina hyvä tarkistaa ne uudelleen.

Nyt meidän on muokattava Apachen oletusasetustiedostoa.

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

Täällä meidän on lisättävä lohko sovelluksellemme.

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

    ServerName localhost
</VirtualHost>

Tallenna tiedosto, CTRL+ X.

Saatat huomata, että käytämme 3000porttia meidän ProxyPassja ProxyPassReverseIP: n porttina . Koska kyseessä on sama portti, jossa käytämme Koa.js-sovellustamme, on välttämätöntä syöttää oikea portti.

Kun muutokset on tehty, meidän on käynnistettävä Apache uudelleen ja käynnistettävä Koa.js-sovellus uudelleen.

sudo systemctl restart apache2

Tämä varmistaa, että määritystiedostomme on aktiivinen ja valmis toimimaan, kun käynnistämme Koa.js-sovelluksen. Kun Apache on käynnistetty uudelleen, siirry takaisin sivustohakemistoosi ja käynnistä Koa.js-sovellus kuten teimme aiemmin. Siirry verkkoselaimessa kohtaan http://yourdomain, tai http://yourip:ja näet "Hello World".

Sovelluksemme hallinta systemd:llä

Nyt kun olemme käsitelleet Koa.js-mallisovelluksen luomisen perusteet, ymmärrämme, että tuotantoympäristössä sovelluksen käynnistäminen nykyisellään on epäkäytännöllistä. Prosessipäällikkö on ehdottomasti edellytys. Siinä systemd tulee peliin. Yksinkertaisesti sanottuna systemd koostuu ohjelmistoista, jotka tarjoavat rakennuspalikoita Linux-järjestelmälle. Kuten "init", se tarjoaa järjestelmän käyttäjien prosessien hallintaan järjestelmän käynnistyksen jälkeen. Sovelluksemme tapauksessa systemd antaa meille mahdollisuuden käynnistää verkkosivustomme automaattisesti järjestelmän uudelleenkäynnistyksen jälkeen, jos jokin tapahtuma häiritsee järjestelmän käytettävyyttä. Se tarjoaa myös joukon työkaluja, jotka voivat olla hyödyllisiä sovelluksemme hallinnassa. Parasta on, että se on sisäänrakennettu Ubuntu 16.04 LTS:ään, joten meidän ei tarvitse asentaa lisäohjelmistoja.

Luo järjestelmäpalvelu

Kaikki mitä tarvitsemme sovelluksemme käynnistämiseen, on tiedostossa nimeltä service. Se sisältää tietoja sovelluksestamme, kuten sen nimen, hakemiston, ympäristön ja paljon muuta. Luo järjestelmätiedostomme avaamalla tekstieditori.

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

Muokkaa ja tallenna tiedosto näin.

[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

Korvaa youruserpalvelimesi käyttäjätunnuksella. Tässä on lyhyt yhteenveto tärkeistä kentistä:

  • After - Tämä kehottaa systemdiä odottamaan, kunnes verkkoliitäntä on valmis ennen sovelluksemme käynnistämistä.
  • Environment- Täällä voimme määrittää ympäristömuuttujat sovelluksellemme. Node.js-porttimme on yksi niistä.
  • Type - Tämä ilmoittaa systemdille, että sovelluksemme voidaan vain käynnistää ilman käyttöoikeuksia ja vastaavia.
  • User- Tämä kertoo systemdille, että haluamme suorittaa sovelluksen käyttäjätunnuksellamme, mikä on suositeltavaa. Sovellusten käyttäminen pääkäyttäjänä voi johtaa moniin tietoturvariskeihin.
  • ExecStart - Pohjimmiltaan komento, jota systemd suorittaa käynnistääkseen sovelluksemme, samalla tavalla kuin käynnistimme sen manuaalisesti aiemmin.
  • Restart- Kertoo systemdille, millä ehdoilla sovelluksemme on käynnistettävä uudelleen. Tässä tapauksessa haluamme käynnistää verkkosivustomme uudelleen virheen sattuessa.

Käynnistä järjestelmäpalvelu

Olemme nyt valmiita käynnistämään järjestelmäpalvelumme.

sudo systemctl daemon-reload

Tämä on tarpeen aina, kun systemd-palvelutiedosto muuttuu, jotta systemd rekisteröi uudet muutokset.

Aloita sitten hakemuksesi.

sudo systemctl start site

Siirry sivustolle selaimessasi uudelleen ja varmista, että kaikki toimii.

Tärkeimmät järjestelmän hallintatoiminnot

  • stop - Pysäyttää sovelluksen kokonaan.
  • restart - Pysäyttää sovelluksen ja käynnistää sen uudelleen uudessa prosessissa.
  • enable - Käskee systemdiä käynnistämään sovelluksen aina, kun käynnistät tietokoneen.
  • status - Näyttää tietoja parhaillaan käynnissä olevasta sovelluksesta, kuten käytettävyyden, sovelluksen tilan ja paljon muuta.

Jos haluat käyttää jotakin näistä toiminnoista, suorita seuraava.

systemctl <function> site

Johtopäätös

Olemme onnistuneesti määrittäneet Koa.js-sovelluksen ja oppineet kääntämään sen välityspalvelimen takaisin sekä hallitsemaan sitä systemd:llä. Olet nyt valmis laajentamaan hakemustasi ja tukemaan tätä esimerkkiä. Jos haluat tietää lisää Koa.js:sta ja muista asioista, joita voit tehdä, vieraile heidän verkkosivustollaan saadaksesi hyödyllistä tietoa. Tämän lisäksi, jos haluat oppia lisää systemd:n ​​prosessinhallinnasta, lue sen dokumentaatio täältä . Lopuksi, jos haluat lisätietoja Apachen käänteisestä välityspalvelimesta, tutustu niihin täällä .


Docker CE:n asentaminen Ubuntuun 16.04

Docker CE:n asentaminen Ubuntuun 16.04

Käytätkö erilaista järjestelmää? Docker on sovellus, jonka avulla voidaan ottaa käyttöön säilöinä ajettavia ohjelmia. Se kirjoitettiin suositulla Go-ohjelmalla

Dirty Cow Exploitin korjaus CentOS:ssä

Dirty Cow Exploitin korjaus CentOS:ssä

Mikä on Dirty Cow (CVE-2016-5195)? Dirty Cow -haavoittuvuutta hyödynnetään siinä, miten Linux käsittelee koodia. Se mahdollistaa etuoikeutettujen käyttäjien gai:n

Aseta aikavyöhyke ja NTP Ubuntuun 14.04

Aseta aikavyöhyke ja NTP Ubuntuun 14.04

Vultr-palvelimia ei välttämättä oteta käyttöön palvelimellasi tarvitsemallasi aikavyöhykkeellä/päivämäärällä/-ajalla. Onneksi voimme asettaa aikavyöhykkeen manuaalisesti ongelmien estämiseksi

Ota Meteor-sovellus käyttöön Ubuntussa

Ota Meteor-sovellus käyttöön Ubuntussa

Tämä artikkeli opastaa sinua Meteor-sovelluksen käyttöönotossa Vultr VPS:ssä, jossa on Ubuntu 14.04. Se voi toimia myös muissa Linux-jakeluissa (yritä a

Kuinka asentaa osTicket FreeBSD 12:een

Kuinka asentaa osTicket FreeBSD 12:een

Käytätkö erilaista järjestelmää? osTicket on avoimen lähdekoodin asiakastuen lippujärjestelmä. osTicket-lähdekoodia isännöidään julkisesti Githubissa. Tässä opetusohjelmassa

Korkea käytettävyys käyttämällä yksityistä verkkoa Ubuntu 16.04:ssä Keepalivedin kanssa

Korkea käytettävyys käyttämällä yksityistä verkkoa Ubuntu 16.04:ssä Keepalivedin kanssa

Jotkut korkean käytettävyyden arkkitehtuurit vaativat kelluvan IP-osoitteen. Tämä toiminto on käytettävissä Vultr-alustalla, kun yksityinen verkko on toiminut

Määritä vain SFTP-käyttäjätilit Ubuntu 14:ssä

Määritä vain SFTP-käyttäjätilit Ubuntu 14:ssä

Johdanto Tietyt skenaariot edellyttävät, että luot käyttäjiä, joilla on luku- ja kirjoitusoikeudet yhteen hakemistoon vain FTP:n kautta. Tämä kirjoitus näyttää sinulle, kuinka t

Pysyvien Node.js-sovellusten määrittäminen Ubuntu 16.04:ssä

Pysyvien Node.js-sovellusten määrittäminen Ubuntu 16.04:ssä

Node.js-sovellukset ovat suosittuja skaalautumiskykynsä vuoksi. Useiden samanaikaisten prosessien suorittaminen useilla palvelimilla tuottaa pienemmän viiveen ja pidemmän käytettävyyden

Kuinka estää samanaikaiset yhteydet Linuxissa IPTablesin avulla

Kuinka estää samanaikaiset yhteydet Linuxissa IPTablesin avulla

iptables on palomuuriohjelmisto, joka löytyy monista jakeluista, mukaan lukien CentOS ja Ubuntu. Tässä asiakirjassa näet, kuinka voit estää samanaikaisuuden

How to Install BookStack on Ubuntu 16.04

How to Install BookStack on Ubuntu 16.04

Using a Different System? BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information. BookStack is fully free and open

Tietojen palauttaminen SFTP:n kautta

Tietojen palauttaminen SFTP:n kautta

Tietojen palauttaminen SFTP:n kautta Tapauksissa, joissa asennettu käyttöjärjestelmä kohtaa virheen, joka ei salli käyttöjärjestelmän käynnistymistä normaalisti, data voi olla tarpeen noutaa

OpenVPN-palvelimen luominen Ubuntu 16.04:ssä

OpenVPN-palvelimen luominen Ubuntu 16.04:ssä

Johdanto OpenVPN on suojattu VPN, joka käyttää SSL:ää (Secure Socket Layer) ja tarjoaa laajan valikoiman ominaisuuksia. Tässä oppaassa on hyvä kattaa prosessi

Node.js:n asentaminen lähteestä Ubuntu 14.04:ään

Node.js:n asentaminen lähteestä Ubuntu 14.04:ään

Asenna rakennustyökalut Tarvitaan useita työkaluja. Suorita seuraava komento: apt-get install make g++ libssl-dev git Lataa Node.js lähde Se i

Bro IDS:n asentaminen Ubuntu 16.04:ään

Bro IDS:n asentaminen Ubuntu 16.04:ään

Käytätkö erilaista järjestelmää? Johdanto Bro on tehokas avoimen lähdekoodin verkkoanalyysikehys. Bros keskittyy ensisijaisesti verkkoturvallisuuden valvontaan. Br

Devtoolsin käyttäminen Arch Linuxissa

Devtoolsin käyttäminen Arch Linuxissa

Devtools-paketti tehtiin alun perin luotettaville käyttäjille, jotta he voivat luoda paketteja oikein virallisiin tietovarastoihin. Tavallinen käyttäjä voi kuitenkin käyttää sitä

Makepkg:n käyttäminen Arch Linuxissa

Makepkg:n käyttäminen Arch Linuxissa

Jos käytät makepkg:a suoraan, se saastuttaa järjestelmääsi jonkin verran. Peruskehityksen pakettiryhmä on asennettava. Tällä tavalla oletusarvoisesti riippuvuuksia tarvitaan vain

Päivitä Linux-ydin ilman uudelleenkäynnistystä LivePatchilla Ubuntu 16.04:ssä

Päivitä Linux-ydin ilman uudelleenkäynnistystä LivePatchilla Ubuntu 16.04:ssä

Vultr VPS:n pitäminen ajan tasalla on tärkeää turvallisuuden ja suorituskyvyn kannalta. Tämän prosessin ydin on varmistaa, että järjestelmäsi toimii uusimpien versioiden kanssa

Prosessin mukavuuden (ensisijainen) säätäminen useimmissa Linux-jakeluissa

Prosessin mukavuuden (ensisijainen) säätäminen useimmissa Linux-jakeluissa

GNU/Linux-järjestelmissä hienoutta käytetään määrittämään prosessin suorittimen prioriteetti. Pohjimmiltaan se on prioriteetin vastakohta. Joten mitä mukavampi prosessi on, th

Kuinka asentaa PM2 Ubuntu 16.04:ään

Kuinka asentaa PM2 Ubuntu 16.04:ään

PM2 on erittäin suosittu Node-prosessinhallinta, joka tekee NodeJS-sovellusten suorittamisesta helppoa. PM2 helpottaa sovellusten uudelleenkäynnistämistä, käynnistää kaatumisen automaattisesti uudelleen

How to Install OpenMeetings on Ubuntu 16.04

How to Install OpenMeetings on Ubuntu 16.04

Using a Different System? Apache OpenMeetings is an open source web conferencing application. It is written in Java and supports multiple database servers. I

Koneiden nousu: tekoälyn todelliset sovellukset

Koneiden nousu: tekoälyn todelliset sovellukset

Tekoäly ei ole tulevaisuudessa, se tässä nykyisyydessä Tässä blogissa Lue kuinka tekoälysovellukset ovat vaikuttaneet eri sektoreihin.

DDOS-hyökkäykset: lyhyt katsaus

DDOS-hyökkäykset: lyhyt katsaus

Oletko myös DDOS-hyökkäysten uhri ja hämmentynyt ehkäisymenetelmistä? Lue tämä artikkeli ratkaistaksesi kysymyksesi.

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Oletko koskaan miettinyt, kuinka hakkerit ansaitsevat rahaa?

Olet ehkä kuullut, että hakkerit ansaitsevat paljon rahaa, mutta oletko koskaan miettinyt, kuinka he ansaitsevat tuollaista rahaa? keskustellaan.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Googlen vallankumouksellisia keksintöjä, jotka helpottavat elämääsi.

Haluatko nähdä Googlen vallankumouksellisia keksintöjä ja kuinka nämä keksinnöt muuttivat jokaisen ihmisen elämää nykyään? Lue sitten blogia nähdäksesi Googlen keksinnöt.

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Essential perjantai: Mitä tekoäly-ohjatuille autoille tapahtui?

Konsepti itseohjautuvista autoista lähteä tielle tekoälyn avulla on ollut haaveena jo jonkin aikaa. Mutta useista lupauksista huolimatta niitä ei näy missään. Lue tämä blogi saadaksesi lisätietoja…

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Teknologinen singulaarisuus: ihmissivilisaation kaukainen tulevaisuus?

Kun tiede kehittyy nopeasti ja ottaa haltuunsa suuren osan ponnisteluistamme, myös riskit altistaa itsemme selittämättömälle singulariteetille kasvavat. Lue, mitä singulaarisuus voisi tarkoittaa meille.

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen tallennuksen evoluutio – Infografiikka

Tietojen säilytystavat ovat kehittyneet mahdollisesti Datan syntymästä lähtien. Tämä blogi käsittelee tiedon tallennuksen kehitystä infografian pohjalta.

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Big Datan referenssiarkkitehtuurikerrosten toiminnot

Blogista saat tietää Big Data -arkkitehtuurin eri kerroksista ja niiden toiminnoista yksinkertaisimmalla tavalla.

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

6 uskomatonta etua älykkäiden kotilaitteiden käyttämisestä elämässämme

Tässä digitaalisessa maailmassa kodin älylaitteista on tullut tärkeä osa elämää. Tässä on muutamia älykkäiden kodin laitteiden hämmästyttäviä etuja, joiden avulla ne tekevät elämästämme elämisen arvoista ja yksinkertaisempaa.

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

macOS Catalina 10.15.4 -täydennyspäivitys aiheuttaa enemmän ongelmia kuin ratkaiseminen

Apple julkaisi äskettäin macOS Catalina 10.15.4 -lisäpäivityksen ongelmien korjaamiseksi, mutta näyttää siltä, ​​että päivitys aiheuttaa lisää ongelmia, jotka johtavat mac-koneiden tiilikaamiseen. Lue tämä artikkeli saadaksesi lisätietoja