Si të konfiguroni një aplikacion Koa.js Node në Ubuntu 16.04 LTS

Në këtë tutorial, ne do të mësojmë se si të konfigurojmë një aplikacion ueb Koa.js për prodhim, duke përdorur Node.js. Ne gjithashtu do të lidhim një domen mostër, me një përfaqësues të kundërt, duke përdorur Apache dhe do të mësojmë se si ta menaxhojmë atë me një menaxher të duhur të procesit. Pa zgjatur më tej, le të fillojmë.

Përshkrim i shkurtër i Node.js, Koa.js dhe Apache

Node.js është një kornizë e shpejtë JavaScript ndër-platformë e bazuar në motorin V8 të Chrome. Përdoret si në aplikacionet e desktopit ashtu edhe në serverët dhe është i famshëm për trajtimin e ciklit të ngjarjeve me një fije të vetme. Node.js përmban një regjistër paketash të quajtur Node Package Manager (NPM), i cili pret mbi gjysmë milioni paketa. Paketat (ose modulet) NPM janë shtylla kryesore e Node.js, pasi ato janë kode të drejtuara nga komuniteti që mund të jenë të dobishëm në aplikacionin tuaj Node.js. Në aplikacionin tonë Koa.js, Node.js është pjesa kryesore e funksionit të tij.

Koa.js është një kornizë minimaliste ueb, e ndërtuar në platformën Node.js. Krijuar nga i njëjti ekip pas kornizës popullore Express.js, qëllimi i tij është të minimizojë më tej kornizën tashmë minimaliste Express.js duke përjashtuar programin e mesëm nga thelbi i tij. Një tipar kryesor i Koa.js është fakti se nuk ka kthime të thirrjeve. Koa.js është ndërtuar mbi gjeneratorë të bazuar në ES6 dhe veçori ES6, të tilla si Promises.

Apache është një server i njohur në internet me burim të hapur, i përdorur si një pikënisje shumë themelore për serverët në internet. Në këtë tutorial, ne do të përdorim Apache si një përfaqësues të kundërt, i cili do të na lejojë të lidhim aplikacionin tonë me një domen mostër. Nëse nuk keni një domen, ky tutorial do të vazhdojë të funksionojë për ju, me ndryshimin e vetëm që faqja e internetit do të funksionojë në IP-në tuaj VPS, në vend të një domeni.

Konfigurimi i Node.js

Ashtu si me çdo kornizë Node.js, do t'ju duhet të instaloni Node.js në VPS-në tuaj. Për hir të këtij tutoriali, unë do të supozoj se ju tashmë keni Node.js të instaluar në sistemin tuaj. Nëse jo, thjesht mund të ndiqni udhëzimet këtu .

Vendosja e drejtorisë sonë të aplikacionit

Do të na duhet të krijojmë një dosje, e cila do të përmbajë skedarët bazë të aplikacionit tonë.

mkdir site

Mos ngurroni të zëvendësoni siteme çdo emër tjetër që dëshironi për drejtorinë. Më pas, do të na duhet të inicializojmë skedarin tonë të paketës Node.js. Ndrysho në drejtorinë që sapo ke krijuar dhe ekzekuto npm initdhe plotëso kërkesat. Në fund, duhet të duket diçka si kjo:

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

Po instalon Koa.js

Tani që kemi konfiguruar drejtorinë tonë, mund të vazhdojmë të instalojmë Koa.js. Në drejtorinë aktuale të punës /site, shkruani sa vijon.

npm install koa

Kjo do të shkarkojë modulin Koa.js nga NPM dhe do ta instalojë në drejtorinë tonë të projektit për përdorim në të ardhmen. Më pas, ne do të krijojmë skedarin tonë të aplikacionit mostër që do të mbajë kodin tonë të aplikacionit. Për ta bërë këtë, krijoni një index.jsskedar.

nano index.js

Pasi të futeni në skedar, krijoni një aplikacion mostër.

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

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

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

Ruani dhe mbyllni skedarin. CTRL+ X.

Ne do të duam të sigurohemi që aplikacioni ynë të funksionojë siç duhet. Për ta nisur, ekzekutoni node index.jsdhe do ta shihni Website is livenë tastierë.

Instalimi i Apache

Tani që e dimë se faqja jonë e internetit është funksionale, mund të vazhdojmë të instalojmë Apache dhe varësitë e tij.

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

Për të përdorur funksionin e përfaqësuesit të kundërt të gjetur në Apache, do të na duhet të aktivizojmë modulet e nevojshme.

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

Disa nga këto module mund të jenë aktivizuar tashmë, por është gjithmonë mirë t'i kontrolloni ato.

Tani duhet të modifikojmë skedarin e konfigurimit të paracaktuar për Apache.

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

Këtu do të na duhet të shtojmë një bllok për aplikacionin tonë.

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

    ServerName localhost
</VirtualHost>

Ruani skedarin, CTRL+ X.

Ju mund të vini re se ne po përdorim portin 3000si port për IP-në tonë ProxyPassdhe ProxyPassReverse. Meqenëse është i njëjti port në të cilin po ekzekutojmë aplikacionin tonë Koa.js, është e domosdoshme që të futim portin e duhur.

Pasi të jenë vendosur ndryshimet, do të na duhet të rinisim Apache dhe të rihajmë aplikacionin tonë Koa.js.

sudo systemctl restart apache2

Kjo do të sigurojë që skedari ynë i konfigurimit të jetë aktiv dhe gati për të punuar kur të fillojmë aplikacionin tonë Koa.js. Pasi të riniset Apache, lundroni përsëri në direktorinë e faqes tuaj dhe filloni aplikacionin Koa.js siç bëmë më parë. Nga shfletuesi juaj i internetit, lundroni te http://yourdomain, ose http://yourip:, dhe do të shihni "Hello World".

Menaxhimi i aplikacionit tonë me systemd

Tani që kemi mbuluar bazat e krijimit të një aplikacioni model Koa.js, kuptojmë se në një mjedis prodhimi, nisja e aplikacionit siç jemi tani është jopraktike. Një menaxher procesi është padyshim një kërkesë. Këtu hyn në lojë systemd. Me fjalë të thjeshta, systemd përbëhet nga softuer që ofron blloqe ndërtimi për një sistem Linux. Ngjashëm me "init", ai ofron një sistem për të menaxhuar proceset e përdoruesit pas fillimit të sistemit. Në rastin e aplikacionit tonë, systemd na lejon të nisim automatikisht faqen tonë të internetit pasi sistemi të jetë rindezur, në rast se ka një ngjarje që ndërpret kohën e funksionimit të sistemit. Ai gjithashtu ofron një sërë mjetesh që mund të jenë të dobishme kur menaxhoni aplikacionin tonë. Pjesa më e mirë është fakti se është i integruar në Ubuntu 16.04 LTS, kështu që nuk kemi nevojë të instalojmë ndonjë softuer shtesë.

Krijo shërbim systemd

Gjithçka që na nevojitet për të filluar aplikacionin tonë do të përmbahet në një skedar të quajtur service. Ai përmban detaje rreth aplikacionit tonë, si emrin, drejtorinë, mjedisin dhe më shumë. Për të krijuar skedarin tonë të sistemit, hapni një redaktues teksti.

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

Ndryshoni dhe ruani skedarin si kjo.

[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

Zëvendësojeni youruserme emrin e përdoruesit të serverit tuaj. Këtu është një përmbledhje e shpejtë e fushave të rëndësishme:

  • After - Kjo informon systemd-in të presë derisa ndërfaqja e rrjetit të jetë gati përpara se të fillojë aplikacionin tonë.
  • Environment- Këtu mund të specifikojmë variablat e mjedisit për aplikacionin tonë. Porti ynë Node.js është një prej tyre.
  • Type - Kjo informon systemd se aplikacioni ynë sapo mund të niset, pa i prishur privilegjet e përdoruesit dhe të tilla.
  • User- Kjo i tregon systemd se ne duam ta ekzekutojmë aplikacionin nën llogarinë tonë të përdoruesit, gjë që rekomandohet. Ekzekutimi i aplikacioneve si përdorues rrënjë mund të çojë në shumë kompromise sigurie.
  • ExecStart - Në thelb komanda që systemd do të ekzekutojë për të nisur aplikacionin tonë, e ngjashme me mënyrën se si e nisëm manualisht më parë.
  • Restart- Tregon systemd në cilat kushte të riniset aplikacioni ynë. Në këtë rast, ne duam të rifillojmë faqen tonë të internetit në rast gabimi.

Nisni shërbimin systemd

Tani jemi gati për të filluar shërbimin tonë systemd.

sudo systemctl daemon-reload

Kjo është e nevojshme sa herë që ndryshon një skedar shërbimi systemd në mënyrë që systemd të regjistrojë çdo ndryshim të ri të bërë.

Pastaj, filloni aplikimin tuaj.

sudo systemctl start site

Navigoni edhe një herë te faqja në shfletuesin tuaj, për të verifikuar që gjithçka po funksionon.

Funksionet kryesore të menaxhimit të sistemit

  • stop - Ndalon plotësisht aplikacionin.
  • restart - Ndalon aplikacionin dhe e rifillon atë në një proces të ri.
  • enable - I thotë systemd-it të nisë aplikacionin sa herë që ndizni kompjuterin tuaj.
  • status - Tregon informacione në lidhje me aplikacionin aktualisht në punë, si p.sh. koha e funksionimit, gjendja e aplikacionit dhe më shumë.

Për të përdorur ndonjë nga këto funksione, ekzekutoni sa më poshtë.

systemctl <function> site

konkluzioni

Ne kemi ngritur me sukses një aplikacion Koa.js dhe kemi mësuar se si ta kthejmë atë në proxy, si dhe ta menaxhojmë atë me systemd. Tani jeni gati të zgjeroni aplikacionin tuaj dhe të ndërtoni mbi këtë shembull. Nëse dëshironi të mësoni më shumë rreth Koa.js dhe më shumë gjëra me të cilat mund të bëni, vizitoni faqen e tyre të internetit , për më shumë informacione të dobishme. Përveç kësaj, nëse dëshironi të mësoni më shumë rreth menaxherit të procesit të systemd, lexoni dokumentacionin për të këtu . Së fundi, nëse dëshironi të mësoni më shumë rreth përfaqësuesit të kundërt të Apache, mos ngurroni t'i kontrolloni ato këtu .


Instaloni Plesk në CentOS 7

Instaloni Plesk në CentOS 7

Përdorimi i një sistemi të ndryshëm? Plesk është një panel kontrolli i pronarit të hostit në internet që lejon përdoruesit të administrojnë faqet e tyre të internetit personale dhe/ose të klientëve, bazat e të dhënave

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Hyrje Lets Encrypt është një shërbim i autoritetit certifikues që ofron certifikata falas TLS/SSL. Procesi i instalimit është thjeshtuar nga Certbot,

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

PHP dhe paketat e lidhura me to janë komponentët më të përdorur gjatë vendosjes së një serveri në internet. Në këtë artikull, ne do të mësojmë se si të konfigurojmë PHP 7.0 ose PHP 7.1 o

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Hyrje Lighttpd është një fork i Apache që synon të jetë shumë më pak intensiv me burime. Është i lehtë, prandaj emri i tij, dhe është mjaft i thjeshtë për t'u përdorur. Instaloni

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

1. Virtualmin/Webmin Virtualmin është një panel kontrolli i fuqishëm dhe fleksibël i hostimit në internet për sistemet Linux dhe UNIX i bazuar në bazën e mirënjohur të internetit me burim të hapur.

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Yii është një kornizë PHP që ju lejon të zhvilloni aplikacione më shpejt dhe më lehtë. Instalimi i Yii në Ubuntu është i thjeshtë, siç do të mësoni saktësisht

Përdorimi i ekranit në Ubuntu 14.04

Përdorimi i ekranit në Ubuntu 14.04

Screen është një aplikacion që lejon përdorimin e shumëfishtë të sesioneve të terminalit brenda një dritareje. Kjo ju lejon të simuloni dritare të shumta terminale ku është ma

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Ky tutorial shpjegon se si të konfiguroni një server DNS duke përdorur Bind9 në Debian ose Ubuntu. Gjatë gjithë artikullit, zëvendësoni emrin e domain-it tuaj në përputhje me rrethanat. Në

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Hyrje Logrotate është një mjet Linux që thjeshton administrimin e skedarëve të regjistrit. Zakonisht funksionon një herë në ditë përmes një pune cron dhe menaxhon bazën e regjistrave

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

VULTR kohët e fundit ka bërë ndryshime në fund të tyre dhe gjithçka duhet të funksionojë mirë tani me NetworkManager të aktivizuar. Nëse dëshironi të çaktivizoni

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Icinga2 është një sistem i fuqishëm monitorimi dhe kur përdoret në një model master-klient, ai mund të zëvendësojë nevojën për kontrolle monitorimi të bazuara në NRPE. Master-klien

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Në këtë artikull, ne do të shohim se si të përpiloni dhe instaloni Nginx mainline nga burimet zyrtare të Nginx me modulin PageSpeed, i cili ju lejon t

Si të instaloni Gitea në Debian 9

Si të instaloni Gitea në Debian 9

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga Git. Gitea është shkruar në Golang dhe është

Si të instaloni Gitea në Ubuntu 18.04

Si të instaloni Gitea në Ubuntu 18.04

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga git. Gitea është shkruar në Golang dhe është

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, me burim të hapur, i shkallës së ndërmarrjes, i shkruar në PHP. Ajo i

Instalimi i Docker CE në Ubuntu 16.04

Instalimi i Docker CE në Ubuntu 16.04

Përdorimi i një sistemi të ndryshëm? Docker është një aplikacion që lejon vendosjen e programeve që ekzekutohen si kontejnerë. Ishte shkruar në programin popullor Go

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Golang është një gjuhë programimi e zhvilluar nga Google. Falë shkathtësisë, thjeshtësisë dhe besueshmërisë së tij, Golang është bërë një nga më të populluarit

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Çfarë është Lopa e Pistë (CVE-2016-5195)? Dobësia e Dirty Cow shfrytëzohet përmes mënyrës se si Linux përpunon kodin. Ai lejon që një përdorues i paprivilegjuar të gai

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Të kesh vetëm një përdorues, i cili është root, mund të jetë i rrezikshëm. Pra, le ta rregullojmë atë. Vultr na ofron lirinë për të bërë si të duam me përdoruesit dhe serverët tanë

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Nëse e keni harruar fjalëkalimin tuaj rrënjësor MySQL, mund ta rivendosni atë duke ndjekur hapat në këtë artikull. Procesi është mjaft i thjeshtë dhe funksionon në to

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë