MongoDB ist ein dokumentenorientiertes NoSQL-Datenbankmanagementsystem. In dieser Anleitung beschreiben wir, wie Sie eine MongoDB auf Ihrem Managed Flex Server in Betrieb nehmen können.
Anforderungen
MongoDB kann mit einem Managed Flex Server M, L, XL oder XXL genutzt werden.
MongoDB in Betrieb nehmen
Hostpoint stellt Ihnen für Ihren Managed Flex Server die zum Betriebssystem passende Tool-Sammlung für MongoDB zur Verfügung. Die Standardversion ist jeweils unter /usr/local/bin/ verlinkt. Spezifische Versionen finden Sie unter /usr/local/mongodbXX. Die Bezeichnung XX steht für die Version. Wir empfehlen, wenn immer möglich, die Standardversion zu verwenden.
Über Änderungen an den zur Verfügung stehenden Versionen informieren wir jeweils per E-Mail. Wir empfehlen Ihnen, diese Info-Mails stets aufmerksam zu lesen. Damit können Sie sich über Ihrerseits notwendige Wartungsarbeiten informieren, und diese entsprechend einplanen und durchführen.
Lesen Sie dazu auch den Abschnitt «3. Wartung» in dieser Anleitung.
Datenverzeichnis erstellen
Damit der MongoDB-Server Ihre Datenbank abspeichern kann, benötigen Sie in Ihrem Home einen entsprechenden Ordner.
Um die nachfolgenden Schritte ausführen zu können, müssen Sie via SSH auf Ihrem Managed Flex Server eingeloggt sein.
Als Beispiel in dieser Anleitung verwenden wir den versteckten Ordner ~/.mongod/data/db/ in Ihrem Home. Erstellen Sie diesen Ordner wie folgt:
[username@flex:~] 1 $ mkdir -p ~/.mongod/data/db
Manuelles Starten von MongoDB
Starten Sie für das Set-up den MongoDB-Server manuell in einer Shell mit folgendem Kommando:
[username@flex:~] 1 $ /usr/local/bin/mongod --dbpath ~/.mongod/data/db
Der MongoDB-Server initialisiert das zuvor angelegte Datenverzeichnis und wartet anschliessend auf Verbindungen. In Ihrem Terminal sehen Sie diverse Textausgaben zum aktuellen Status sowie zu möglichen Problemen beim Start und Betrieb. Brechen Sie das Kommando nicht ab und fahren Sie mit dem Einrichten des Datenbank-Users im nächsten Schritt weiter.
(Wie Sie den Service später regulär für den Betrieb auf Ihrem Webserver starten, erfahren Sie im Abschnitt «2.4 Integration von MongoDB in die Custom Service Control (CSC)» weiter unten in dieser Anleitung.)
Installation von mongosh
Diese Schritte sind notwendig, um die CLI Applikation mongosh zu installieren, damit Sie per CLI mit MongoDB kommunizieren können.
Als erstes müssen Sie diese 2 Dateien erstellen oder bearbeiten und die entsprechenden Inhalte einfügen:
NPM_PACKAGES="${HOME}/.npm-packages"
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
export PATH="$NPM_PACKAGES/bin:$PATH"
prefix=${HOME}/.npm-packages
Diese Einträge ermöglichen es Ihnen mit NPM globale Pakete zu installieren.
Damit die Änderungen in der .profile Datei aktiv werden, müssten Sie sich jetzt aus und wieder einloggen, oder den source Befehl ausführen:
source ~/.profile
Zum Schluss müssten Sie nur noch mit NPM das mongosh Paket installieren:
npm install -g @mongosh/cli-repl
Erstellen eines Datenbank-Users
Im nächsten Schritt erstellen Sie einen User mit einem dazugehörigen Passwort für den geschützten Zugriff auf Ihren MongoDB-Server.
Starten Sie dazu eine zusätzliche Shell-Session und führen Sie auf Ihrem Flex-Server den Befehl mongosh aus um sich mit dem zuvor gestarteten MongoDB-Prozess zu verbinden:
[username@flex:~] 1 $ mongosh MongoDB shell version v5.0.12 connecting to: mongodb://127.0.0.1:27017/[..] >
Teilen Sie dem MongoDB-Server mit, dass Sie nun die Datenbank admin verwenden möchten:
use admin
Nun können Sie den User erstellen. Das nachfolgende Beispiel zeigt, wie ein Admin-User mit Zugriff auf alle Datenbanken erstellt werden kann. Weitere Informationen zu den verschiedenen Rollen finden Sie in der MongoDB-Dokumentation zur Role-Based Access Control.
db.createUser( { user: "User", pwd: "password", roles:[{role: "userAdminAnyDatabase" , db:"admin"}]})
Wenn Sie den Datenbank-User eingerichtet haben, haben Sie die Voraussetzungen für den Regulären Betrieb Ihres MongoDB Servers geschaffen. Sie können den MongoDB-Server in Ihrem ersten Terminal mit Ctrl+C beenden und mit dem nächsten Schritt weiterfahren.
Integration von MongoDB in die Custom Service Control (CSC)
Die Custom Service Control (CSC) kümmert sich um den Betrieb und das automatische Management Ihrer Applikation (bspw. Start und Stop bei Wartungsarbeiten).
Die Konfiguration von MongoDB in der CSC ist sehr einfach. Erstellen Sie dazu wie folgt einen neuen Custom Service für MongoDB:
[username@flex:~] 1 $ hpservices supervisord add mongodb
Dabei wird in der Datei ~/.services/supervisord/mongodb/service.conf ein Konfigurationsgerüst für den neuen Service erstellt. Öffnen Sie diese Datei in einem Texteditor. Für MongoDB müssen Sie im Wesentlichen das command anpassen, ansonsten können Sie die vorgeschlagenen Werte übernehmen und die Zeilen entsprechend auskommentieren (Strichpunkte am Zeilenanfang bei allen Zeilen ausser bei der directory-Zeile entfernen):
[program:mongodb] command=/usr/local/bin/mongod --auth --dbpath %(ENV_HOME)s/.mongod/data/db ;directory=%(ENV_HOME)s/app/mongodb/ ; directory to cwd to before exec (default no cwd) autostart=true ; start application at supervisord start (default: true) stopwaitsecs=10 ; max num secs to wait before SIGKILL (default 10) stdout_logfile=%(ENV_HOME)s/.services/supervisord/mongodb/log/default.log stdout_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default ist 50MB) stdout_logfile_backups=10 ; number of stdout logfile backups (0 means none, default 10) stderr_logfile=%(ENV_HOME)s/.services/supervisord/mongodb/log/default.err stderr_logfile_maxbytes=1MB ; filesize at which to rotate logfiles (default is 50MB) stderr_logfile_backups=10 ; number of stderr logfile backups (0 means none, default 10)
Falls Sie die CSC zum ersten Mal benützen, müssen Sie diese nun aktivieren. In diesem Fall empfehlen wir Ihnen ebenfalls die ausführliche Dokumentation zur Custom Service Control zu lesen
[username@flex:~] 1 $ hpservices supervisord start
Falls Sie die CSC bereits für andere Dienste nutzen, können Sie mit supervisorctl update die neue Konfiguration für MongoDB hinzufügen und aktivieren. Mit der oben genannten Service-Definition wird MongoDB automatisch gestartet:
[username@flex:~] 1 $ supervisorctl update mongodb: added process group
[username@flex:~] 1 $ supervisorctl status mongodb RUNNING pid 92108, uptime 1:13:39
Die Ausgaben des MongoDB-Servers finden Sie nun im stdout_logfile, welches Sie zuvor für den Service definiert haben.
MongoDB Instanz testen
Ihr MongoDB-Server ist damit nun bereit für die Annahme von Verbindungen. Sie können dies mit dem MongoDB-CLI testen:
[username@flex:~] 1 $ mongosh
Wenn alles richtig konfiguriert wurde, erhalten Sie folgende Ausgabe:
MongoDB shell version vX.X.X connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("[..]") } MongoDB server version: X.X.X >
Wartung
Bei Updates der MongoDB-Version können Wartungsarbeiten Ihrerseits notwendig werden. Wir informieren Sie jeweils per E-Mail über anstehende Softwareupdates auf Ihrem Managed Flex Server. Lesen Sie diese aufmerksam durch und prüfen Sie bei Upgrades der MongoDB-Version in den Release-Notes des MongoDB-Projektes, ob Sie allenfalls Wartungsarbeiten an Ihrer Datenbank ausführen müssen.
Backup
MongoDB speichert die Daten in einem binären Format in dem von Ihnen festgelegten Ordner.
Der ausgewählte Ordner befindet sich in Ihrem Home, womit die Daten grundsätzlich vom regulären Datei-Backup erfasst werden. Da es sich bei diesen Daten um strukturierte DB-Daten mit einem applikationsspezifischen Änderungsmuster und Backupanforderungen handelt, sollten Sie sich jedoch Gedanken zu einer geeigneten Backupstrategie machen. Lesen Sie dazu die Dokumentation von MongoDB.
Weiterführende Informationen
- MongoDB
- Anleitung: Custom Service Control
Für Supportanfragen verwenden Sie bitte dieses Formular.