Bereitstellen einer Meteor.js-Anwendung unter Ubuntu 14.04 mit Nginx

Über Meteor.js

http://meteor.com [Meteor.js] ist ein Framework für JavaScript, mit dem Webentwickler JavaScript-Code einmal schreiben und ihn sowohl clientseitig als auch serverseitig wiederverwenden können. Dies ist dank des einzigartigen Erstellungsprozesses von Meteor möglich (lesen Sie mehr über structuring your application code and code sharing). Dies löst auch das Problem, dass ein komplizierter Bereitstellungsprozess zwischen dem Entwicklungsmodus, in dem Entwickler Code und Debug verwenden, und dem Produktionsmodus erforderlich ist, der für die öffentlich zugängliche Version der App sicher genug ist. Das Meteor-Framework bietet die Möglichkeit, Client- und Server-Code sowie Entwicklung und Produktion eng miteinander zu verknüpfen. Dies ist wahrscheinlich die einfachste Möglichkeit für clientseitige Entwickler, mit der Arbeit an serverseitigem Code zu beginnen.

Um dies in Aktion zu sehen, können Sie die Einführung video auf der Meteor-Website anzeigen.

Mit Meteor.js können Sie Projekte wie eine Website (Webanwendung), eine HTML5-basierte Webbrowser-Anwendung (mit AppCache) oder eine mobile Anwendung (durch Integration mit PhoneGap) entwickeln. Sie benötigen lediglich Kenntnisse in Javascript und HTML. Meteor unterstützt MongoDB (eine NoSQL-Datenbank). Atmosphere hostet Pakete, die vollständige Bausteine ​​für Ihre Anwendung bereitstellen können, um die Entwicklung noch weiter zu beschleunigen.

  • Am Ende dieses Tutorials haben wir: *

  • Installierte Meteor.js

  • Erstellt ein Bereitstellungspaket, das eine gesamte Meteor-Anwendung in einem produktionsbereiten Format enthält (abzüglich eines Webservers und eines Datenbank-Backends).

  • Installiert Nginx als Webserver, um HTTP-Anfragen an Meteor weiterzuleiten

  • Installierte MongoDB als unser Datenbankmodul

  • Verwaltete unsere Anwendung mit Upstart

  • Konfigurierte tägliche Datenbank-Backups für die Meteor-Datenbank

Wenn Sie in diesem Lernprogramm noch keine eigene Meteor-Anwendung haben, können Sie die Beispielanwendung "Todo List" von der Meteor website verwenden.

Bevor Sie beginnen

Du solltest haben:

  • Eine vorhandene Meteor-App auf einem separaten Entwicklungscomputer (Sie können die Beispiel-App "Todo List" here anzeigen. Anweisungen hierzu finden Sie weiter unten im Tutorial.)

  • Ein neuer * Ubuntu 14.04 * Server; Bestehende Meteor-Installationen sollten in den meisten Fällen funktionieren

  • * root * Zugriff auf den Server, um Befehle auszuführen

  • Aktualisierte Paketlisten. Ausführen: + Apt-Get-Update

  • Ersetzen Sie durch den Domainnamen, den Sie tatsächlich verwenden (oder lassen Sie ihn, wenn Sie keine Domain haben und stattdessen eine IP-Adresse verwenden).

  • Ersetzen Sie (ohne .net) durch den Namen Ihrer Anwendung

Schritt 1 - Einrichten eines Nginx-Webservers

Wir werden Nginx installieren und einrichten, da es uns ermöglicht, den Webdatenverkehr mit SSL zu verschlüsseln, einer Funktion, die der integrierte Webserver von Meteor nicht bietet. Mit Nginx können wir auch andere Websites auf demselben Server bedienen und den Datenverkehr filtern und protokollieren.

In unserer Konfiguration sichern wir unsere Site mit einem SSL-Zertifikat und leiten den gesamten Datenverkehr von HTTP zu HTTPS um. Wir werden auch einige neue Sicherheitsmethoden anwenden, um die Sicherheit der SSL-Verbindung zu verbessern.

Um Nginx zu installieren, führen wir Folgendes aus:

apt-get install nginx

Erstellen Sie eine Konfigurationsdatei für virtuelle Hosts in "+ / etc / nginx / sites-available +".

Nachfolgend finden Sie eine kommentierte Konfigurationsdatei, die wir als "+ / etc / nginx / sites-available / +" mit folgendem Inhalt erstellen können. Erläuterungen zu allen Konfigurationseinstellungen finden Sie in den Kommentaren in der Datei:

server_tokens off; # for security-by-obscurity: stop displaying nginx version

# this section is needed to proxy web-socket connections
map $http_upgrade $connection_upgrade {
   default upgrade;
   ''      close;
}

# HTTP
server {
   listen 80 default_server; # if this is not a default server, remove "default_server"
   listen [::]:80 default_server ipv6only=on;

   root /usr/share/nginx/html; # root is irrelevant
   index index.html index.htm; # this is also irrelevant

   server_name ; # the domain on which we want to host the application. Since we set "default_server" previously, nginx will answer all hosts anyway.

   # redirect non-SSL to SSL
   location / {
       rewrite     ^ https://$server_name$request_uri? permanent;
   }
}

# HTTPS server
server {
   listen 443 ssl spdy; # we enable SPDY here
   server_name ; # this domain must match Common Name (CN) in the SSL certificate

   root html; # irrelevant
   index index.html; # irrelevant

   ssl_certificate /etc/nginx/ssl/; # full path to SSL certificate and CA certificate concatenated together
   ssl_certificate_key /etc/nginx/ssl/; # full path to SSL key

   # performance enhancement for SSL
   ssl_stapling on;
   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 5m;

   # safety enhancement to SSL: make sure we actually use a safe cipher
   ssl_prefer_server_ciphers on;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:RC4-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK';

   # config to enable HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
   # to avoid ssl stripping https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping
   add_header Strict-Transport-Security "max-age=31536000;";

   # If your application is not compatible with IE <= 10, this will redirect visitors to a page advising a browser update
   # This works because IE 11 does not present itself as MSIE anymore
   if ($http_user_agent ~ "MSIE" ) {
       return 303 https://browser-update.org/update.html;
   }

   # pass all requests to Meteor
   location / {
       proxy_pass http://127.0.0.1:8080;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade; # allow websockets
       proxy_set_header Connection $connection_upgrade;
       proxy_set_header X-Forwarded-For $remote_addr; # preserve client IP

       # this setting allows the browser to cache the application in a way compatible with Meteor
       # on every applicaiton update the name of CSS and JS file is different, so they can be cache infinitely (here: 30 days)
       # the root path (/) MUST NOT be cached
       if ($uri != '/') {
           expires 30d;
       }
   }
}

Wenn Sie die Konfigurationsdatei an Ihre Bedürfnisse anpassen möchten und weitere Erläuterungen benötigen, lesen Sie dieses Tutorial unter https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-. server-blocks-virtual-hosts-on-ubuntu-14-04-lts [Virtuelle Nginx-Hosts].

Wie in der Konfigurationsdatei des virtuellen Hosts zu sehen, erwartet Nginx ein gültiges SSL-Zertifikat und einen Schlüssel in "+ / etc / nginx / ssl +". Wir müssen dieses Verzeichnis erstellen und sichern:

mkdir /etc/nginx/ssl
chmod 0700 /etc/nginx/ssl

Anschließend können wir die Dateien erstellen, die das Zertifikat (und ggf. das Kettenzertifikat) und den Schlüssel an den Speicherorten enthalten, die wir in der obigen Konfiguration definiert haben:

  • Zertifikat: + / etc / nginx / ssl / +

  • Taste: "+ / etc / nginx / ssl / +"

Wenn Sie noch kein SSL-Zertifikat und keinen SSL-Schlüssel haben, sollten Sie jetzt unter Verwendung dieser https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on ein selbstsigniertes Zertifikat erstellen -nginx-for-ubuntu-12-04 [Tutorial zum Erstellen von selbstsignierten SSL-Zertifikaten für Nginx]. Denken Sie daran, dass Sie dieselben Namen aus der Konfigurationsdatei verwenden möchten, z. B. * todos.key * als Schlüsselname und * todos.pem * als Zertifikatname. Ein selbstsigniertes Zertifikat ist für Tests geeignet, es wird jedoch empfohlen, ein kommerzielles, signiertes Zertifikat für die Produktion zu verwenden. Ein selbstsigniertes Zertifikat provoziert Nginx-Warnungen, die mit ssl_stapling verbunden sind, und eine Sicherheitswarnung im Webbrowser.

Wenn Sie mit dem Erstellen oder Beziehen Ihres Zertifikats fertig sind, stellen Sie sicher, dass Sie die oben genannten Dateien "+ todos.pem " und " todos.key +" haben.

Als nächstes sollten wir den vhost deaktivieren:

rm /etc/nginx/sites-enabled/default

Und aktiviere unseren Meteor vhost:

ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Testen Sie, ob die vhost-Konfiguration fehlerfrei ist (Sie werden einen Fehler im Zusammenhang mit ssl_stapling sehen, wenn Sie ein selbstsigniertes Zertifikat haben; dies ist in Ordnung):

nginx -t

Wenn alles gut aussieht, können wir die Änderungen auf Nginx anwenden:

nginx -s reload

Zu diesem Zeitpunkt können Sie mit Ihrem Webbrowser https: // (oder Ihre IP-Adresse) aufrufen. Es zeigt uns * 502 Bad Gateway *. Das ist in Ordnung, da Meteor noch nicht ausgeführt wird.

Zweiter Schritt - Einrichten einer MongoDB-Datenbank

Wir werden MongoDB aus dem regulären Ubuntu-Repository installieren. Die Standardkonfiguration sollte in Ordnung sein. Es ist keine Authentifizierung erforderlich, um eine Verbindung zur Datenbank herzustellen. Verbindungen sind jedoch nur über localhost möglich. Dies bedeutet, dass keine externen Verbindungen möglich sind und die Datenbank somit sicher ist, solange wir keine nicht vertrauenswürdigen Benutzer mit SSH-Zugriff auf das System haben.

Installieren Sie das MongoDB-Serverpaket:

apt-get install mongodb-server

Dies ist alles, was wir tun müssen, um MongoDB zum Laufen zu bringen. Um sicherzustellen, dass der Zugriff von externen Hosts nicht möglich ist, führen wir Folgendes aus, um sicherzustellen, dass MongoDB an * 127.0.0.1 * gebunden ist. Überprüfen Sie mit diesem Befehl:

netstat -ln | grep -E '27017|28017'

Erwartete Ausgabe:

tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     6091441  /tmp/mongodb-27017.sock

Damit für den Fall, dass etwas schief geht, tägliche Backups zur Verfügung stehen, können wir * optional * einen einfachen Befehl als täglichen Cron-Job installieren. Erstellen Sie eine Datei + / etc / cron.d / mongodb-backup +:

@daily root mkdir -p /var/backups/mongodb; mongodump --db  --out /var/backups/mongodb/$(date +'\%Y-\%m-\%d')

Schritt 3 - Installation der Meteor-Anwendung

Zuerst müssen wir Node.js installieren. Da Meteor normalerweise eine Version von Node.js benötigt, die neuer als die im Standard-Repository verfügbaren ist, verwenden wir ein benutzerdefiniertes PPA _ (zum Zeitpunkt des Schreibens stellt Ubuntu 14.04 nodejs = 0.10.25 ~ dfsg2-2ubuntu1 bereit, während Meteor 0.8.3 erfordert Node.js 0.10.29 oder neuer) _.

Führen Sie Folgendes aus, um eine PPA mit Node.js hinzuzufügen, und bestätigen Sie mit der Eingabetaste:

add-apt-repository ppa:chris-lea/node.js

Ausgabe:

Evented I/O for V8 javascript. Node's goal is to provide an easy way to build scalable network programs
More info: https://launchpad.net/~chris-lea/+archive/ubuntu/node.js
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmphsbizg3u/secring.gpg' created
gpg: keyring `/tmp/tmphsbizg3u/pubring.gpg' created
gpg: requesting key C7917B12 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmphsbizg3u/trustdb.gpg: trustdb created
gpg: key C7917B12: public key "Launchpad chrislea" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

Jetzt müssen wir den Repository-Cache aktualisieren und können dann Node.js und npm (Node.js package manager) installieren:

apt-get update
apt-get install nodejs

Es empfiehlt sich, unsere Meteor-Anwendung als regulärer Benutzer auszuführen. Aus diesem Grund erstellen wir speziell für diesen Zweck einen neuen Systembenutzer:

adduser --disabled-login

Ausgabe:

Adding user `todos' ...
Adding new group `todos' (1001) ...
Adding new user `todos' (1001) with group `todos' ...
Creating home directory `/home/todos' ...
Copying files from `/etc/skel' ...
Changing the user information for todos
Enter the new value, or press ENTER for the default
       Full Name []:
       Room Number []:
       Work Phone []:
       Home Phone []:
       Other []:
Is the information correct? [Y/n]

Vierter Schritt - Upstart konfigurieren

Nun können wir den zu verwaltenden Upstart -Dienst erstellen unsere Meteor App. Upstart startet die App automatisch beim Booten und startet Meteor neu, falls es stirbt. Weitere Informationen zum Erstellen von Upstart-Servicedateien finden Sie unter dieses Tutorial .

Erstellen Sie die Datei "+ / etc / init / .conf +". Es wird noch einmal in-line mit Anmerkungen versehen:

# upstart service file at /etc/init/
description "Meteor.js (NodeJS) application"
author "Daniel Speichert <[email protected]>"

# When to start the service
start on started mongodb and runlevel [2345]

# When to stop the service
stop on shutdown

# Automatically restart process if crashed
respawn
respawn limit 10 5

# we don't use buil-in log because we use a script below
# console log

# drop root proviliges and switch to mymetorapp user
setuid
setgid

script
   export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
   export NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
   # set to home directory of the user Meteor will be running as
   export PWD=/home/
   export HOME=/home/
   # leave as 127.0.0.1 for security
   export BIND_IP=127.0.0.1
   # the port nginx is proxying requests to
   export PORT=8080
   # this allows Meteor to figure out correct IP address of visitors
   export HTTP_FORWARDED_COUNT=1
   # MongoDB connection string using  as database name
   export MONGO_URL=mongodb://localhost:27017/
   # The domain name as configured previously as server_name in nginx
   export ROOT_URL=https://
   # optional JSON config - the contents of file specified by passing "--settings" parameter to meteor command in development mode
   export METEOR_SETTINGS='{ "somesetting": "someval", "public": { "othersetting": "anothervalue" } }'
   # this is optional: http://docs.meteor.com/#email
   # commented out will default to no email being sent
   # you must register with MailGun to have a username and password there
   # export MAIL_URL=smtp://[email protected]:[email protected]
   # alternatively install "apt-get install default-mta" and uncomment:
   # export MAIL_URL=smtp://localhost
   exec node /home//bundle/main.js >> /home//.log
end script

Eine Sache, die in dieser Konfigurationsdatei beachtet werden muss, ist der Parameter + METEOR_SETTINGS +. Wenn Sie beim Starten des Meteor-Entwicklungsmodus "+ meteor --settings config.json " verwenden, sollten Sie den Inhalt von " config.json " als Variable in " METEOR_SETTINGS +" einfügen.

"+ MAIL_URL +" muss eine gültige SMTP-URL sein * nur *, wenn Sie das E-Mail-Paket von Meteor verwenden möchten. Sie können MailGun (wie von Meteor empfohlen), einen lokalen Mailserver usw. verwenden.

Wie wir in der Datei sehen können, wird das Protokoll in "+ / home //. Log. " Gespeichert. Diese Datei dreht sich nicht und wächst mit der Zeit. Es ist eine gute Idee, ein Auge darauf zu haben. Idealerweise sollte nicht viel Inhalt (Fehler) enthalten sein. Optional können Sie https://www.digitalocean.com/community/tutorials/how-to-configure-logging-and-log-rotation-in-nginx-on-an-ubuntu-vps[log rotation] oder einrichten ersetzen Sie ` >> ` durch `> +` am Ende von Upstart-Skripten, um die gesamte Datei zu überschreiben, anstatt sie an das Ende anzuhängen.

Starten Sie diesen Dienst noch nicht, da wir die aktuellen Meteor-Anwendungsdateien noch nicht haben!

Fünfter Schritt - Bereitstellung der Meteor-Anwendung

  • Optional: Wenn Sie noch kein Meteor-Projekt haben *

Wenn Sie noch kein Meteor-Projekt haben und eine Demo-App verwenden möchten, ist dies kein Problem!

  • Führen Sie diesen nächsten Schritt auf Ihrem Heimcomputer oder einem Linux-Entwicklungsserver aus. * Die Befehle können je nach Betriebssystem variieren. In deinen Home-Ordner verschieben:

cd ~

Installieren Sie zuerst die Entwicklungsversion von Meteor:

curl https://install.meteor.com | /bin/sh

Erstellen Sie dann eine Anwendung aus einem Beispiel mit dem Namen Todo List:

meteor create --example todos

Geben Sie nun das Verzeichnis Ihrer Anwendung ein und Sie können fortfahren:

cd todos
  • Alle Meteor-Projekte *

Es ist Zeit, ein Produktionsversions-Bundle aus unserer Meteor-App zu erstellen. Die folgenden Befehle sollten auf Ihrem * Heimcomputer oder Entwicklungs-Linux-Server * ausgeführt werden, unabhängig davon, wo sich Ihre Meteor-Anwendung befindet. Gehen Sie in Ihr Projektverzeichnis:

cd

Und führen Sie aus:

meteor build .

Dadurch wird eine Archivdatei wie "+ todos.tar.gz " im Verzeichnis "+" erstellt. Kopieren Sie diese Datei in Ihr + ~ + Verzeichnis auf Ihrem Droplet.

scp .tar.gz root@:~
  • Gehen Sie nun zurück zu Ihrem Droplet. * Erstellen Sie ein Projektverzeichnis und verschieben Sie die Archivprojektdatei in dieses Verzeichnis. Beachten Sie, dass dies der Basisordner für den Projektbenutzer ist, den wir zuvor erstellt haben, nicht Ihr Stammbasisordner:

mkdir /home/
mv .tar.gz /home/

Gehe in das Projektverzeichnis und entpacke es:

cd /home/
tar -zxf .tar.gz

Schauen Sie sich das Projekt README an:

cat /home//bundle/README

Das Bundle enthält eine "+ README +" - Datei mit folgendem Inhalt:

This is a Meteor application bundle. It has only one external dependency:
Node.js 0.10.29 or newer. To run the application:

 $ (cd programs/server && npm install)
 $ export MONGO_URL='mongodb://user:password@host:port/databasename'
 $ export ROOT_URL='http://example.com'
 $ export MAIL_URL='smtp://user:password@mailhost:port/'
 $ node main.js

Use the PORT environment variable to set the port where the
application will listen. The default is 80, but that will require
root on most systems.

Find out more about Meteor at meteor.com.

Dieses Rezept spiegelt sich in unserer + / etc / init / .conf + Datei wider. In der README wird noch etwas erwähnt, was wir tun müssen.

Jetzt müssen wir einige erforderliche npm-Module installieren. Um einige davon erstellen zu können, müssen wir auch g ++ installieren und machen:

apt-get install g++ make
cd /home//bundle/programs/server
npm install

Sie sollten die Ausgabe so sehen:

npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data

> [email protected] install /home/todos/bundle/programs/server/node_modules/fibers
> node ./build.js

`linux-x64-v8-3.14` exists; testing
Binary is fine; exiting
[email protected] node_modules/underscore

[email protected] node_modules/semver

[email protected] node_modules/source-map-support
└── [email protected] ([email protected])

[email protected] node_modules/fibers

Der Grund dafür ist, dass unser Anwendungspaket keine Module und Bibliotheken enthält, die plattformabhängig sind.

Wir sind fast bereit, die Anwendung auszuführen, aber da wir Dateien als Root bearbeitet haben und sie dem Benutzer "++" gehören sollten, müssen wir den Besitz des Projektverzeichnisses aktualisieren:

chown : /home/ -R

Schritt Sechs - Showtime

Zu diesem Zeitpunkt haben wir alles, was wir zum Ausführen unserer Meteor-Anwendung benötigen:

  • Node.js-Umgebung installiert

  • Anwendung in ihrem Projektverzeichnis installiert

  • Upstart-Dienst zum Ausführen der Anwendung konfiguriert

  • MongoDB-Datenbank

  • Nginx-Proxy-Server vor unserer Meteor-Anwendung zur Bereitstellung der SSL-Verschlüsselung

Führen Sie zum Starten unserer Anwendung den folgenden Befehl aus dem Projektverzeichnis aus:

start

Nun sollten Sie in der Lage sein, Ihre Anwendung im Browser unter https: // anzuzeigen.

Erneutes Bereitstellen der Anwendung

Wenn Sie Änderungen im Entwicklungsmodus vornehmen (und das werden Sie, wir sind ja Entwickler!), Können Sie einfach Schritt 5 wiederholen (beginnend mit "+ meteor build ") und die meisten Schritte bis zum " restart +" durchgehen Befehl, der Ihre Anwendung über Upstart neu lädt.

Auf diese Weise können Sie eine neue Version ohne Ausfallzeiten erstellen. Kunden (Besucher Ihrer Website) rufen automatisch die neue Codeversion ab und aktualisieren ihre Seite - das ist Meteors Zauber!

Wenn Sie dies testen möchten, können Sie den Text auf der Seite "+ todos / client / todos.html +" in Ihrer Entwicklungskopie der App auf Ihrem Heimcomputer oder Entwicklungsserver einfach ändern.

  • Entwicklungsserver: *

Bauen:

meteor build

Hochladen:

scp .tar.gz root@:/home/
  • Produktionsserver: *

Erweitern:

tar -zxf /home//.tar.gz

In den Projektordner verschieben:

cd /home//bundle/programs/server

Aktualisieren Sie die npm-Module (möglicherweise werden einige Warnungen angezeigt):

npm install

Starten Sie die App neu:

restart

Fehlerbehebung

Wenn etwas schief geht, finden Sie hier einige Hinweise, wo Sie nach Problemen suchen können:

  • Überprüfen Sie + / home //. Log +, ob Ihre Anwendung startet und stirbt; es sollte eine entsprechende Fehlermeldung ausgeben (z. im Falle eines Programmierfehlers).

  • Überprüfen Sie + / var / log / nginx / error.log +, wenn Sie anstelle Ihrer Anwendung einen HTTP-Fehler sehen.

  • Überprüfen Sie + / var / log / mongodb / mongod.log, wenn Sie glauben, dass ein Problem mit der Datenbank vorliegt.

Überprüfen Sie abschließend, ob alle Dienste ausgeführt werden:

status
service nginx status
status mongodb