GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat Node.js na Debian 10 a nakonfigurovat Nginx jako frontend proxy server

Node.js je bezplatná a open source platforma JavaScript, kterou lze použít k poskytování dynamického a responzivního obsahu na straně serveru. Je postaven na JavaScriptovém enginu Chrome V8 a je schopen spouštět kód JavaScript mimo webový prohlížeč. Může být spuštěn na několika operačních systémech včetně Linuxu, FreeBSD, Windows a macOS. Node.js funguje také na jiných webových serverech, jako jsou Apache a Nginx.

V tomto tutoriálu se naučíme, jak nainstalovat a nakonfigurovat Node.js tak, aby zpracovával backendové požadavky, a jak nakonfigurovat Nginx pro zpracování frontendových požadavků v Debianu 10.

Předpoklady

  • Server se systémem Debian 10.
  • Na vašem serveru je nakonfigurováno heslo uživatele root.

Začínáme

Nejprve se doporučuje aktualizovat váš systém na nejnovější verzi. Můžete to udělat pomocí následujícího příkazu:

apt-get update -y
apt-get upgrade -y

Jakmile je váš server aktualizován, restartujte jej, aby se změny projevily.

Instalovat Node.js

Ve výchozím nastavení není nejnovější verze Node.js k dispozici ve výchozím úložišti Debian 10. Budete jej tedy muset nainstalovat ze skriptu.

Nejprve nainstalujte curl pomocí následujícího příkazu:

apt-get install curl -y

Dále si stáhněte a nainstalujte instalační skript Node.js pomocí následujícího příkazu:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Po dokončení instalace můžete soubor Node.js nainstalovat pomocí následujícího příkazu:

apt-get install nodejs -y

Po úspěšném dokončení instalace můžete ověřit verzi Node.js pomocí následujícího příkazu:

nodejs --version

Verzi Node.js byste měli vidět v následujícím výstupu:

v12.16.1

Verzi NPM můžete také zkontrolovat spuštěním následujícího příkazu:

npm --version

Verzi NPM byste měli vidět v  následujícím výstupu:

6.13.4

Vytvořit aplikaci Node.js

Nejprve budete muset vytvořit adresář pro vaši aplikaci. Můžete jej vytvořit spuštěním následujícího příkazu:

mkdir nodeapp

Dále změňte adresář na nodeapp a nainstalujte express pomocí následujícího příkazu:

cd nodeapp
npm install express

Dále vytvořte ukázkovou aplikaci Node.js s express pomocí nano editoru:

nano app.js

Přidejte následující obsah:

var express = require('express');
var app = express();
app.get('/', function(req, res){
   res.send("Nginx as Frontend Server for Node.js!");
});
app.listen(8000, '127.0.0.1');

Po dokončení uložte a zavřete soubor.

Dále spusťte aplikaci pomocí následujícího příkazu:

node app.js

Dále otevřete další terminál a ověřte aplikaci pomocí následujícího příkazu:

netstat -antup | grep 8000

Měli byste vidět, že vaše aplikace Node.js naslouchá na portu 8000:

tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      26193/node

Aplikaci můžete také ověřit pomocí příkazu curl, jak je ukázáno níže:

curl http://127.0.0.1:8000

Pokud je vše v pořádku, měli byste získat následující výstup:

Nginx as Frontend Server for Node.js!

Instalace a konfigurace PM2

PM2 je správce procesů pro správu aplikace Node.js. Aplikaci Node.js můžete snadno spustit, zastavit a povolit spuštění při startu pomocí PM2.

Nejprve nainstalujte nejnovější verzi PM2 pomocí NPM, jak je uvedeno níže:

npm install pm2 -g

Po instalaci změňte adresář na nodeapp a vaši aplikaci pomocí následujícího příkazu:

cd nodeapp
pm2 start app.js

Po 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/nodeapp/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    ? 13202    ? 0s     ? 0    ? online    ? 0%       ? 27.2mb   ? root     ? disabled ?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Ve výše uvedeném výstupu můžete vidět velmi užitečné informace, jako je PID aplikace, doba provozu, stav, CPU a využití paměti.

Dále spusťte následující příkaz pro vytvoření a konfiguraci spouštěcího skriptu pro aplikaci Node.js, aby se vaše aplikace Node.js spustila automaticky při spuštění.

pm2 startup

Měli byste získat následující výstup:

[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:/sbin:/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

Dále spusťte službu PM2 pomocí následujícího příkazu:

systemctl start pm2-root

Dále ověřte stav služby PM2 pomocí následujícího příkazu:

systemctl status pm2-root

Měli byste získat následující výstup:

? pm2-root.service - PM2 process manager
   Loaded: loaded (/etc/systemd/system/pm2-root.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-03-26 06:04:28 UTC; 2s ago
     Docs: https://pm2.keymetrics.io/
  Process: 13387 ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect (code=exited, status=0/SUCCESS)
 Main PID: 13191 (PM2 v4.2.3: God)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/pm2-root.service
           ? 13191 PM2 v4.2.3: God Daemon (/root/.pm2)

Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: [PM2] Restoring processes located in /root/.pm2/dump.pm2.bak
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: [PM2][ERROR] Failed to read dump file in /root/.pm2/dump.pm2.bak
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: [PM2][ERROR] No processes saved; DUMP file doesn't exist
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: ? PM2+ activated | Instance Name: node.myserver.tld-109e | Dash: https://app.pm2.io/#/r/7p66twg
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: ????????????????????????????????????????????????????????????????????????????????????????????????
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: ? id  ? name   ? namespace   ? version ? mode    ? pid      ? uptime ? ?    ? status    ? cpu   
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: ????????????????????????????????????????????????????????????????????????????????????????????????
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: ? 0   ? app    ? default     ? N/A     ? fork    ? 13202    ? 8m     ? 0    ? online    ? 0%    
Mar 26 06:04:28 kolab.linuxbuz.com pm2[13387]: ????????????????????????????????????????????????????????????????????????????????????????????????
Mar 26 06:04:28 kolab.linuxbuz.com systemd[1]: Started PM2 process manager.

Nakonfigurujte Nginx jako reverzní proxy pro Node.js

V tomto okamžiku vaše aplikace Node.js běží a naslouchá na localhost. Dále budete muset nakonfigurovat Nginx jako front-end proxy server pro aplikaci Node.js, aby každý uživatel mohl přistupovat k vaší aplikaci přes internet.

Nejprve nainstalujte webový server Nginx pomocí následujícího příkazu:

apt-get install nginx -y

Po instalaci vytvořte konfigurační soubor virtuálního hostitele Nginx pro aplikaci Node.js:

nano /etc/nginx/sites-enabled/myapp.conf

Přidejte následující obsah:

server {
    listen 80;
    server_name node.myserver.tld;
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
     }
}

Po dokončení uložte a zavřete soubor. Poté restartujte server Nginx, aby se změny projevily:

systemctl restart nginx

Stav služby Nginx můžete ověřit pomocí následujícího příkazu:

systemctl status nginx

Měli byste vidět následující výstup:

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-03-25 12:42:49 UTC; 5min ago
     Docs: man:nginx(8)
  Process: 26180 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 26182 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 26183 (nginx)
    Tasks: 3 (limit: 2359)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??26183 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??26184 nginx: worker process
           ??26185 nginx: worker process

Mar 25 12:42:49 debian10 systemd[1]: Starting A high performance web server and a reverse proxy server...
Mar 25 12:42:49 debian10 systemd[1]: Started A high performance web server and a reverse proxy server.

Jakmile budete hotovi, můžete přejít k dalšímu kroku.

Přístup k aplikaci Node.js

V tomto okamžiku je Nginx nakonfigurován tak, aby obsluhoval vaši aplikaci Node.js.

Nyní otevřete webový prohlížeč a zadejte adresu URL http://node.myserver.tld. Svou aplikaci Node.js byste měli vidět na následující obrazovce:

Závěr

Ve výše uvedeném článku jste se naučili, jak nastavit aplikaci Node.js v Debianu 10. Také jste se naučili, jak spustit aplikaci Node.js jako démona a nakonfigurovat Nginx jako reverzní proxy pro obsluhu aplikace. Doufám, že nyní můžete svou aplikaci Node.js snadno hostovat v produkčním prostředí.


Debian
  1. Jak nainstalovat Node.js a npm na Debian 11

  2. Jak nainstalovat a nakonfigurovat VNC Server na Debian 10

  3. Jak nainstalovat a nakonfigurovat docker na Debian 11

  1. Jak nainstalovat a nakonfigurovat OpenVPN Server na Debian 10

  2. Jak nainstalovat a nakonfigurovat Mariadb 10 v Debianu 11

  3. Jak nainstalovat a nakonfigurovat HAProxy load balancer na Debian 11

  1. Jak nainstalovat a nakonfigurovat VNC na Debian 9

  2. Jak nainstalovat a nakonfigurovat Redis na Debian 9

  3. Jak nainstalovat a nakonfigurovat Squid Proxy na Debian 11