GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie Apache als Frontend-Proxy-Server für Node.js CentOS 8 ein

Node.js ist eine plattformübergreifende Open-Source-JavaScript-Laufzeitumgebung, mit der JavaScript außerhalb des Webbrowsers ausgeführt werden kann. Es wird am häufigsten verwendet, um Webanwendungen mit bidirektionalen Echtzeitverbindungen zu erstellen, bei denen sowohl der Client als auch der Server die Kommunikation initiieren können, sodass sie Daten frei austauschen können. Node.js verwendet ein ereignisgesteuertes, nicht blockierendes E/A-Modell, das es perfekt für datenintensive Anwendungen macht, die auf verteilten Geräten ausgeführt werden.

In diesem Tutorial installieren wir Node.js und konfigurieren es so, dass es als Backend-Server ausgeführt wird. dann konfigurieren wir Apache als Frontend-Proxy-Server für Node.js.

Voraussetzungen

  • Ein frischer CentOS 8 VPS auf der Atlantic.net Cloud Platform.
  • Ein auf Ihrem Server konfiguriertes Root-Passwort.

Schritt 1 – Atlantic.Net Cloud-Server erstellen

Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie CentOS 8 als Betriebssystem mit mindestens 1 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.

Sobald Sie sich bei Ihrem CentOS 8-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.

dnf update -y

Schritt 2 – Node.js installieren

Sie können das Node.js-Repository mit dem folgenden Befehl installieren:

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

Sobald das Repository installiert ist, können Sie Node.js installieren, indem Sie einfach den folgenden Befehl ausführen:

dnf install nodejs -y

Sobald die Installation abgeschlossen ist, können Sie die installierte Version von Node.js mit dem folgenden Befehl überprüfen:

node -v

Sie sollten die folgende Ausgabe erhalten:

v12.16.2

Sie können die NPM-Version auch mit dem folgenden Befehl überprüfen:

npm -v

Sie sollten die folgende Ausgabe erhalten:

6.14.4

Schritt 3 – Erstellen Sie eine Node.js-Beispielanwendung

Erstellen wir zunächst ein Verzeichnis für die Node.js-Anwendung:

mkdir project

Ändern Sie als Nächstes das Verzeichnis in project und erstellen Sie mit dem folgenden Befehl eine Node.js-Beispielanwendung:

cd project
nano app.js

Fügen Sie den folgenden Inhalt hinzu:

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/');

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Ihre Node.js-Anwendung kann jetzt auf Port 8080 bereitgestellt werden. Starten Sie als Nächstes die Anwendung mit dem folgenden Befehl:

node app.js

Sie sollten die folgende Ausgabe erhalten:

Server running at http://127.0.0.1:8080/

Die obige Ausgabe zeigt an, dass Ihre Node.js-Anwendung ordnungsgemäß funktioniert.

Drücken Sie als Nächstes STRG + C um die Anwendung zu stoppen.

Schritt 4 – Installieren und konfigurieren Sie PM2, um die Node.js-Anwendung zu verwalten

PM2 ist ein Prozessmanager für die Anwendung Node.js. Es ermöglicht Ihnen, die Node.js-Anwendung für immer am Leben zu erhalten, Node.js zu verwalten, Node.js ohne Ausfallzeit neu zu laden und allgemeine Systemadministratoraufgaben zu erleichtern.

Sie können es wie unten gezeigt mit dem NPM installieren:

npm i -g pm2

Wechseln Sie nach der Installation von PM2 in das Projektverzeichnis und starten Sie die Node.js-Anwendung mit PM2 wie unten gezeigt:

pm2 start app.js

Sobald die Anwendung erfolgreich gestartet wurde, sollten Sie die folgende Ausgabe erhalten:

                        -------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
 _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__


                          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 │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

Aktivieren Sie als Nächstes die Node.js-Anwendung so, dass sie beim Booten mit dem folgenden Befehl gestartet wird:

pm2 startup

Dieser Befehl erstellt eine systemd-Dienstdatei für die Node.js-Anwendung und ermöglicht ihr den Start nach dem Systemneustart, wie unten gezeigt:

[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

Sie können Ihre aktive Anwendung auch mit dem folgenden Befehl auflisten:

pm2 list

Sie sollten die folgende Ausgabe erhalten:

┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ 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 │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

Schritt 5 – Apache als Frontend-Proxy für Node.js konfigurieren

Als Nächstes müssen Sie den Apache-Webserver als Frontend-Server installieren und konfigurieren, um auf die Node.js-Anwendung zuzugreifen.

Installieren Sie zuerst den Apache-Webserver mit dem folgenden Befehl:

dnf install httpd -y

Erstellen Sie als Nächstes mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Apache-Host für die Node.js-Anwendung:

nano /etc/httpd/conf.d/example.conf

Fügen Sie die folgenden Zeilen hinzu:

<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>

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den Apache-Webserver und ermöglichen Sie ihm, beim Neustart mit dem folgenden Befehl zu starten:

systemctl start httpd
systemctl enable httpd

Schritt 6 – Zugriff auf die Node.js-Anwendung

Zu diesem Zeitpunkt ist der Apache-Webserver für den Zugriff auf die Node.js-Anwendung konfiguriert. Öffnen Sie als Nächstes Ihren Webbrowser und geben Sie die URL http://node.example.com ein. Sie werden wie unten gezeigt zur Node.js-Anwendungsseite weitergeleitet:

Schlussfolgerung

Herzliche Glückwünsche! Sie haben die Node.js-Anwendung erfolgreich mit Apache als Front-End-Server bereitgestellt. Sie können jetzt damit beginnen, Ihre Node.js-Anwendung für die Produktionsumgebung zu erstellen – testen Sie sie auf VPS-Hosting von Atlantic.Net!


Linux
  1. So installieren Sie den Squid-Proxyserver unter CentOS 7

  2. So richten Sie einen OpenVPN-Server unter CentOS 7 ein

  3. So richten Sie virtuelle Apache-Hosts unter CentOS ein

  4. DHCP-Server auf CentOS 8 einrichten – wie geht das?

  5. So richten Sie VSFTPD unter CentOS 8 ein

So richten Sie SSH unter CentOS und RHEL ein

So richten Sie einen TeamSpeak-Server unter CentOS 7 ein

So richten Sie einen dedizierten Mount &Blade:Warband-Server unter CentOS ein

So richten Sie einen Minecraft-Server unter CentOS 7 ein

So erstellen Sie einen HTTP-Proxy mit Squid unter CentOS 8

So installieren Sie NGINX als Reverse Proxy für Apache unter Ubuntu 18.04