A Node.js, a Koa.js és az Apache rövid leírása
A Node.js beállítása
Alkalmazási könyvtárunk beállítása
A Koa.js telepítése
Apache telepítése
Alkalmazásunk kezelése systemd-vel
Következtetés
Ebben az oktatóanyagban megtanuljuk, hogyan állíthatunk be egy Koa.js webalkalmazást éles használatra a Node.js használatával. Egy mintatartományt is összekapcsolunk egy fordított proxyval, Apache használatával, és megtanuljuk, hogyan kell kezelni azt megfelelő folyamatkezelővel. Minden további nélkül kezdjük.
A Node.js, a Koa.js és az Apache rövid leírása
A Node.js egy gyors, többplatformos JavaScript-keretrendszer, amely a Chrome V8-as motorján alapul. Asztali és szerveralkalmazásokban egyaránt használják, és híres egyszálú eseményhurok kezeléséről. A Node.js tartalmazza a Node Package Manager (NPM) nevű csomagnyilvántartást, amely több mint félmillió csomagot tartalmaz. Az NPM-csomagok (vagy modulok) a Node.js gerincét képezik, mivel ezek közösség által vezérelt kódok, amelyek hasznosak lehetnek a Node.js alkalmazásban. Koa.js alkalmazásunkban a Node.js a funkciójának központi része.
A Koa.js egy minimalista webes keretrendszer, amely a Node.js platformra épül. Ugyanaz a csapat készítette a népszerű Express.js keretrendszer mögött, és célja az amúgy is minimalista Express.js keretrendszer további minimalizálása a köztes szoftverek magjából való kizárásával. A Koa.js egyik fő jellemzője, hogy nincs visszahívás. A Koa.js ES6-alapú generátorokra és ES6-funkciókra épül, mint például a Promises.
Az Apache egy népszerű nyílt forráskódú webszerver, amelyet a webszerverek alapvető kiindulópontjaként használnak. Ebben az oktatóanyagban az Apache-t fogjuk használni fordított proxyként, amely lehetővé teszi, hogy alkalmazásunkat egy mintatartományhoz kapcsoljuk. Ha nem rendelkezik domainnel, ez az oktatóanyag továbbra is használható lesz, azzal az egyetlen különbséggel, hogy a webhely domain helyett az Ön VPS IP-címén fog futni.
A Node.js beállítása
Mint minden Node.js keretrendszer esetében, telepítenie kell a Node.js-t a VPS-re. Az oktatóanyag kedvéért feltételezem, hogy a Node.js már telepítve van a rendszerén. Ha nem, egyszerűen kövesse az itt található utasításokat .
Alkalmazási könyvtárunk beállítása
Létre kell hoznunk egy mappát, amely az alkalmazásunk alapvető fájljait tartalmazza.
mkdir site
Nyugodtan cserélje sitele bármilyen más névre, amelyet a könyvtárnak szeretne. Ezután inicializálnunk kell a Node.js csomagfájlt. Váltson át az imént létrehozott könyvtárra, futtassa a npm init, majd hajtsa végre az utasításokat. A végén valahogy így kell kinéznie:
{
"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"
}
A Koa.js telepítése
Most, hogy beállítottuk a könyvtárunkat, folytathatjuk a Koa.js telepítését. Az aktuális munkakönyvtárba /siteírja be a következőt.
npm install koa
Ezzel letölti a Koa.js modult az NPM-ről, és későbbi felhasználás céljából telepíti a projektkönyvtárunkba. Ezután létrehozzuk a minta alkalmazásfájlunkat, amely tartalmazza az alkalmazás kódját. Ehhez hozzon létre egy index.jsfájlt.
nano index.js
Miután belépett a fájlba, hozzon létre egy minta alkalmazást.
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
console.log('Website is live!')
Mentse és zárja be a fájlt. CTRL+ X.
Győződjön meg arról, hogy az alkalmazásunk megfelelően fut. Az elindításához futtassa a node index.js, és látni fogja Website is livea konzolon.
Apache telepítése
Most, hogy tudjuk, hogy webhelyünk működik, folytathatjuk az Apache és függőségei telepítését.
sudo apt install -y libapache2-mod-proxy-html libxml2-dev
Az Apache-ban található fordított proxy funkció használatához engedélyeznünk kell a szükséges modulokat.
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html
Lehetséges, hogy ezek közül a modulok közül néhány már engedélyezve van, de mindig célszerű még egyszer ellenőrizni őket.
Most szerkesztenünk kell az Apache alapértelmezett konfigurációs fájlját.
sudo nano /etc/apache2/sites-enabled/000-default.conf
Itt hozzá kell adnunk egy blokkot az alkalmazásunkhoz.
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:3000/
ProxyPassReverse / http://0.0.0.0:3000
ServerName localhost
</VirtualHost>
Mentse el a fájlt, CTRL+ X.
Észreveheti, hogy 3000a portot használjuk a saját ProxyPassés az ProxyPassReverseIP portként . Mivel ez ugyanaz a port, amelyen a Koa.js alkalmazást futtatjuk, feltétlenül a megfelelő portot kell megadnunk.
Ha a változtatások érvénybe lépnek, újra kell indítanunk az Apache-t, és újra kell indítanunk a Koa.js alkalmazásunkat.
sudo systemctl restart apache2
Ez biztosítja, hogy konfigurációs fájlunk aktív és készen álljon a működésre, amikor elindítjuk a Koa.js alkalmazásunkat. Az Apache újraindítása után lépjen vissza a webhely könyvtárába, és indítsa el a Koa.js alkalmazást, ahogy korábban tettük. Böngészőjében navigáljon a http://yourdomain, vagy a címre http://yourip:, és megjelenik a „Hello World” felirat.
Alkalmazásunk kezelése systemd-vel
Most, hogy áttekintettük a Koa.js mintaalkalmazás létrehozásának alapjait, rájöttünk, hogy éles környezetben nem praktikus az alkalmazás indítása úgy, ahogy most vagyunk. A folyamatmenedzser mindenképpen követelmény. Itt jön képbe a systemd. Egyszerűen fogalmazva, a systemd olyan szoftverekből áll, amelyek építőelemeket biztosítanak egy Linux rendszer számára. Az „init”-hez hasonlóan rendszert biztosít a felhasználói folyamatok kezelésére a rendszerindítás után. Alkalmazásunk esetében a systemd lehetővé teszi, hogy a rendszer újraindítása után automatikusan elindítsuk weboldalunkat, ha olyan esemény történik, amely megszakítja a rendszer üzemidejét. Ezenkívül egy sor olyan eszközt is biztosít, amelyek hasznosak lehetnek alkalmazásunk kezelése során. A legjobb az egészben az, hogy az Ubuntu 16.04 LTS-be van beépítve, így nincs szükség további szoftverek telepítésére.
Rendszerszolgáltatás létrehozása
Minden, amire szükségünk van az alkalmazásunk elindításához, egy nevű fájlban található service. Részleteket tartalmaz az alkalmazásunkról, mint például a neve, a könyvtár, a környezet és egyebek. A rendszerfájl létrehozásához nyisson meg egy szövegszerkesztőt.
sudo nano /lib/systemd/system/site.service
Szerkessze és mentse el a fájlt így.
[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
Cserélje youruserki a kiszolgáló felhasználónevét. Íme egy gyors összefoglaló a fontos mezőkről:
After - Ez arra figyelmezteti a rendszert, hogy az alkalmazás elindítása előtt várja meg, amíg a hálózati interfész elkészül.
Environment- Itt adhatunk meg környezeti változókat az alkalmazásunkhoz. A Node.js portunk az egyik ilyen.
Type - Ez tájékoztatja a rendszert arról, hogy az alkalmazásunk egyszerűen elindítható anélkül, hogy elágaznának a felhasználói jogosultságok és hasonlók.
User- Ez jelzi a systemd-nek, hogy a felhasználói fiókunk alatt szeretnénk futtatni az alkalmazást, ami ajánlott. Az alkalmazások root felhasználóként való futtatása számos biztonsági kompromisszumhoz vezethet.
ExecStart - Lényegében az a parancs, amelyet a systemd fog futtatni az alkalmazás elindításához, hasonlóan ahhoz, ahogy korábban kézzel indítottuk.
Restart- Megmondja a rendszernek, hogy milyen feltételek mellett indítsa újra az alkalmazást. Ebben az esetben hiba esetén a weboldalunkat szeretnénk újraindítani.
Indítsa el a systemd szolgáltatást
Most már készen állunk rendszerszolgáltatásunk elindítására.
sudo systemctl daemon-reload
Erre akkor van szükség, amikor egy systemd szolgáltatásfájl megváltozik, hogy a systemd regisztrálja az új módosításokat.
Ezután indítsa el az alkalmazást.
sudo systemctl start site
Keresse fel újra a webhelyet a böngészőben, és ellenőrizze, hogy minden működik-e.
Főbb rendszerkezelési funkciók
stop - Teljesen leállítja az alkalmazást.
restart - Leállítja az alkalmazást, és újra elindítja egy új folyamat alatt.
enable - Azt mondja a rendszernek, hogy indítsa el az alkalmazást, amikor elindítja a számítógépet.
status - Információkat jelenít meg az éppen futó alkalmazásról, például az üzemidőt, az alkalmazás állapotát és egyebeket.
E funkciók bármelyikének használatához futtassa a következőt.
systemctl <function> site
Következtetés
Sikeresen beállítottunk egy Koa.js alkalmazást, és megtanultuk, hogyan kell visszafordítani a proxyt, valamint kezelni a systemd segítségével. Most már készen áll az alkalmazás kiterjesztésére és erre a példára építve. Ha többet szeretne megtudni a Koa.js-ről, és további hasznos tudnivalókról , látogassa meg webhelyüket , ahol további hasznos információkat talál. Ezen kívül, ha többet szeretne megtudni a systemd folyamatkezelőjéről, olvassa el a dokumentációt itt . Végül, ha többet szeretne megtudni az Apache fordított proxyjáról, nézze meg őket itt .