Linux Server setup

Node.js, npm, MongoDB

In diesem Kapitel werden wir Webapplikationen auf Basis von Node.js einrichten. Wir installieren und konfigurieren zunächst alle Komponenten. Anschließend programmieren wir unsere Applikation mithilfe von Frameworks oder sogenannter Middleware.

Node.js ist eine serverseitige JavaScript Laufzeitumgebung. In Verbindung mit npm, dem Paketmanager von Node.js, können zahlreiche Module in die eigene Applikation geladen werden. Node.js selbst und alle Module auf npmjs.com sind Open-Source.

In Zusammenhang mit Node.js ist die Verwendung der NoSQL Datenbank MongoDB sehr beliebt. Die Community Version ist kostenlos und für unsere Zwecke völlig ausreichend.

Die Webapplikation werde ich in dem Ordner /var/www/com.linuxserversetup.dev anlegen. Das hatten wir bereits in Subdomain Server Block (dev) vorbereitet. Achte darauf, das an gegebener Stelle entsprechend für Dich anzupassen.


Node.js und npm mit apt installieren

Im Gegensatz zu anderen Installationsroutinen, ist npm bei Paketmanager-Installationen nicht Bestandteil von Node.js. Daher werden wir Beides separat installieren.

Wie gewohnt installieren wir mit apt Node.js:


__$ sudo apt install -y nodejs
 

Mit folgendem Kommando können wir die installierte Version von Node.js abfragen:


__$ node -v
 

Als Ausgabe sollte eine Versionsnummer erscheinen, sonst ist bei der Installation etwas schiefgelaufen.

Ähnlich gehen wir für npm vor. Erst die Installation mit apt:


__$ sudo apt install -y npm
 

Und die Prüfung durch die Versionsausgabe:


__$ npm -v
 

npm für global Packages umkonfigurieren

Wer nicht dem Tutorial gefolgt ist und alles als root Benutzer ausführt, kann den folgenden Abschnitt überspringen.

Bei npm gibt es die Möglichkeit Module global zu installieren, die dann Systemweit genutzt werden können. Da wir Node.js als root Benutzer installiert haben, aus Sicherheitsgründen aber einen weiteren Benutzer tom angelegt haben, müssen wir den Speicherort der globalen Module ändern und eine Umgebungsvariable anlegen. Dadurch kann tom globale Module in seinem Benutzerverzeichnis anlegen. Wir vermeiden damit Zugriffsprobleme, da die Pakete sonst nur mit sudo zugänglich wären.

Zunächst legen wir einen versteckten Ordner für npm Pakete unterhalb des Heimverzeichnisses von tom an:


__$ mkdir -p ~/.npm/lib
 

(In Linux werden Ordner und Dateien, deren Namen mit einem Punkt (.) beginnen, nicht angezeigt. Sie lassen sich mit dem Paramter -a ausgeben: ls -a)

Den Standard Pfad für globale npm Pakete ändern wir mit dem Befehl npm config set:


__$ npm config set prefix ~/.npm
 

Die Bash Konfigurationsdatei .bashrc des aktuellen Benutzers ergänzen wir um eine Umgebungsvariable:


__$ echo 'export PATH="$PATH:$HOME/.npm/bin"' >> ~/.bashrc
 

Und lassen die Bash Konfigurationsdatei vom System neu einlesen:


__$ . ~/.bashrc
 

Mit diesen Einstellungen schaut Node.js zunächst nach Modulen innerhalb des Projektes im Verzeichnis node_modules und wenn dort nichts gefunden wurde, im Heimverzeichnis unter ~/.npm.

Der eigentliche Ablageort wäre sonst /usr/local/npm gewesen.

Alternativ hätten wir auch den npm System Ordner /usr/local/npm oder Teile davon dem tom freigeben können, was allerdings früher oder später zu chaotischen Zuständen führen würde.


Datenbank in MongoDB erstellen

Die Datenbank MongoDB haben wir bereits in dem Kapitel MongoDB installieren eingerichtet.

Daher können wir jetzt einfach die MongoDB Konsole aufrufen:


__$ mongo
 

Eine neue Datenbank mit dem Namen MyDatabase erstellen:


__gt use MyDatabase;
 

Eine neu angelegte Datenbank wird durch show databases; nicht angezeigt, solange sie leer ist. Daher erzeugen wir eine Collection und löschen sie gleich wieder. Dieser Schritt ist eigentlich unnötig, es soll hier nur erwähnt sein, damit es nicht zu Missverständnissen kommt.


__gt db.MyCollection.insert({ key: "val" });
__gt db.MyCollection.drop();