Node.js je open-source, multiplatformní, běhové prostředí JavaScriptu, které lze použít ke spouštění JavaScriptu mimo webový prohlížeč. Nejčastěji se používá k vytváření webových aplikací s obousměrným připojením v reálném čase, kde klient i server mohou zahájit komunikaci, což jim umožňuje volně si vyměňovat data. Node.js používá událostmi řízený, neblokující I/O model, díky kterému je ideální pro datově náročné aplikace běžící na distribuovaných zařízeních.
V tomto tutoriálu nainstalujeme Node.js a nakonfigurujeme jej tak, aby běžel jako backend server; poté nakonfigurujeme Apache jako frontend proxy server pro Node.js.
Předpoklady
- Nový CentOS 8 VPS na cloudové platformě Atlantic.net.
- Heslo uživatele root nakonfigurované na vašem serveru.
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte CentOS 8 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte k serveru CentOS 8, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
dnf update -y
Krok 2 – Instalace Node.js
Úložiště Node.js můžete nainstalovat pomocí následujícího příkazu:
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
Jakmile je úložiště nainstalováno, můžete nainstalovat Node.js jednoduše spuštěním následujícího příkazu:
dnf install nodejs -y
Po dokončení instalace můžete ověřit nainstalovanou verzi Node.js pomocí následujícího příkazu:
node -v
Měli byste získat následující výstup:
v12.16.2
Verzi NPM můžete také zkontrolovat pomocí následujícího příkazu:
npm -v
Měli byste získat následující výstup:
6.14.4
Krok 3 – Vytvořte vzorovou aplikaci Node.js
Nejprve vytvořte adresář pro uložení aplikace Node.js:
mkdir project
Dále změňte adresář na projekt a vytvořte ukázkovou aplikaci Node.js pomocí následujícího příkazu:
cd project nano app.js
Přidejte následující obsah:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Welcome to Node.js Server'); }).listen(8080, "127.0.0.1"); console.log('Server running at http://127.0.0.1:8080/');
Po dokončení uložte a zavřete soubor.
Vaše aplikace Node.js je nyní připravena k poskytování na portu 8080. Dále spusťte aplikaci následujícím příkazem:
node app.js
Měli byste získat následující výstup:
Server running at http://127.0.0.1:8080/
Výše uvedený výstup ukazuje, že vaše aplikace Node.js funguje správně.
Poté stiskněte CTRL + C pro zastavení aplikace.
Krok 4 – Instalace a konfigurace PM2 pro správu aplikace Node.js
PM2 je správce procesů pro aplikaci Node.js. Umožňuje vám udržovat aplikaci Node.js navždy při životě, spravovat Node.js, znovu načítat Node.js bez prostojů a usnadňovat běžné úlohy správy systému.
Můžete jej nainstalovat pomocí NPM, jak je znázorněno níže:
npm i -g pm2
Po instalaci PM2 změňte adresář na projekt a spusťte aplikaci Node.js s PM2, jak je uvedeno níže:
pm2 start app.js
Po úspěšném spuštění aplikace byste měli získat následující výstup:
------------- __/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____ _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___ _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__ _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___ _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____ _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________ _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________ _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_ _\///______________\///______________\///__\///////////////__ Runtime Edition PM2 is a Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ ------------- [PM2] Spawning PM2 daemon with pm2_home=/root/.pm2 [PM2] PM2 Successfully daemonized [PM2] Starting /root/project/app.js in fork_mode (1 instance) [PM2] Done. ┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ app │ default │ N/A │ fork │ 1437 │ 0s │ 0 │ online │ 0% │ 31.1mb │ root │ disabled │ └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Dále povolte spuštění aplikace Node.js při spouštění pomocí následujícího příkazu:
pm2 startup
Tento příkaz vytvoří soubor služby systemd pro aplikaci Node.js a umožní její spuštění po restartu systému, jak je znázorněno níže:
[PM2] Init System found: systemd Platform systemd Template [Unit] Description=PM2 process manager Documentation=https://pm2.keymetrics.io/ After=network.target [Service] Type=forking User=root LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin Environment=PM2_HOME=/root/.pm2 PIDFile=/root/.pm2/pm2.pid Restart=on-failure ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill [Install] WantedBy=multi-user.target Target path /etc/systemd/system/pm2-root.service Command list [ 'systemctl enable pm2-root' ] [PM2] Writing init configuration in /etc/systemd/system/pm2-root.service [PM2] Making script booting at startup... [PM2] [-] Executing: systemctl enable pm2-root... Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service. [PM2] [v] Command successfully executed. +---------------------------------------+ [PM2] Freeze a process list on reboot via: $ pm2 save [PM2] Remove init script via: $ pm2 unstartup systemd
Aktivní aplikaci můžete také vypsat pomocí následujícího příkazu:
pm2 list
Měli byste získat následující výstup:
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ app │ default │ N/A │ fork │ 1437 │ 104s │ 0 │ online │ 0.1% │ 39.7mb │ root │ disabled │ └─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Krok 5 – Konfigurace Apache jako frontend proxy pro Node.js
Dále budete muset nainstalovat a nakonfigurovat webový server Apache jako frontend server pro přístup k aplikaci Node.js.
Nejprve nainstalujte webový server Apache pomocí následujícího příkazu:
dnf install httpd -y
Dále vytvořte konfigurační soubor virtuálního hostitele Apache pro aplikaci Node.js pomocí následujícího příkazu:
nano /etc/httpd/conf.d/example.conf
Přidejte následující řádky:
<VirtualHost *:80> ServerAdmin [email protected] ServerName node.example.com ErrorLog /var/log/httpd/error.log CustomLog /var/log/httpd/access.log combined ProxyRequests On ProxyPass / http://localhost:8080 ProxyPassReverse / http://localhost:8080 </VirtualHost>
Po dokončení uložte a zavřete soubor. Poté spusťte webový server Apache a povolte jeho spuštění při restartu pomocí následujícího příkazu:
systemctl start httpd systemctl enable httpd
Krok 6 – Přístup k aplikaci Node.js
V tomto okamžiku je webový server Apache nakonfigurován pro přístup k aplikaci Node.js. Dále otevřete webový prohlížeč a zadejte adresu URL http://node.example.com. Budete přesměrováni na stránku aplikace Node.js, jak je uvedeno níže:
Závěr
Gratulujeme! Úspěšně jste nasadili aplikaci Node.js s Apache jako frontend serverem. Nyní můžete začít budovat svou Node.js aplikaci pro produkční prostředí – vyzkoušejte to na VPS hostingu od Atlantic.Net!