2014-09-05 3 views
9

Also, wenn ich meteor ausführen, App funktioniert gut. Wenn ich jedoch die Verbindung zu meinem Cloud-Server schließe, schaltet der Meteor offensichtlich ab. Was soll ich tun, um den Meteor für immer laufen zu lassen?Wie läuft Meteor für immer? Und ist es gut, eine Drittanbieter-Datenbank zu verwenden?

Auch, was ist der Sinn der Verwendung von 3rd-Party-Datenbank-Service wie https://mongolab.com/? Verlangsamt es die Website nicht, weil die Anwendung jetzt eine Verbindung zu ihrer Datenbank anstelle der lokalen Datenbank herstellen muss?

Und wie genau verbinde ich mich zum Beispiel mit Mongolab?

Antwort

13

So, when I run meteor, app works fine. However, when I close the connection to my cloud server, meteor obviously shuts down.

Sie könnten starten Meteor mit nohup (ohne Hang-up), die diesem Zweck dient.

nohup meteor --production & 

Aber es ist keine gute Idee, eine Website in Produktion mit Meteor sowieso laufen zu lassen.

What should I do to run meteor forever ?

Sie können forever, ein Node.js-Tool entwickelt, Knoten-Anwendungen als Dienste ausgeführt werden.

Ich möchte auch darauf hinweisen, dass forever wird alt und ich habe von besseren aktuellen Alternativen gehört, aber es scheint immer noch ein ziemlich verbreitetes Werkzeug zu sein. Sie könnten auch systemd verwenden, die sich besser in das UNIX-Service-Ökosystem integriert, aber das ist eine frühere Geschichte.

Aber zuerst musst du „demeteorize“ Ihre Meteor-Anwendung wie folgt aus:

cd my-project-meteor 
meteor bundle --directory ../my-project-node 
# this is going to take some time 
cd ../my-project-node/programs/server 
npm install 
# this is going to take some time too 

So, jetzt haben Sie einen einfachen Knoten app, dass Sie ausführen können, mit node main.js

Lassen Sie mich erwähnen dass es eine gute Idee wäre, die von meteor verwendete Knotenversion zu verwenden, die 0.10.29 ab meteor 0.9.1 ist. Sie können es traditionell installieren oder Sie können die Knotenversion verwenden, die mit dem Meteorwerkzeug geliefert wird.

sudo ln -s ~/.meteor/packages/meteor-tool/1.0.27/meteor-tool-os.linux.x86_64/dev_bundle/bin/node /usr/bin/node 
sudo ln -s ~/.meteor/packages/meteor-tool/1.0.27/meteor-tool-os.linux.x86_64/dev_bundle/bin/npm /usr/bin/npm 

Beachten Sie, dass diese Art der Knoten + npm auf Ihrem System „Installation“ problematisch ist, weil:

  • nimmt bist du nur Meteor bezogenes tun.
  • ist es abhängig vom Freigabeprozess des Meteorwerkzeugs (Sie müssen diese erneut ausführen, wenn das Meteorwerkzeug aktualisiert wird).

Sie können die forever Tool npm installieren:

# -g means globally : give access to forever to all users on the system 
sudo npm install -g forever 

Um Ihre Knoten App als Dienst zu starten, können Sie den folgenden Befehl verwenden, die richtig Umgebungsvariablen setzt und die App laufen mit forever :

sudo PORT=80 MONGO_URL=mongodb://localhost/my-project-mongodb ROOT_URL=http://localhost forever start my-project-node/main.js 

Sie können es mit Monitor forever stop my-project-node/main.js

Also, what's the point of using 3rd party database service like https://mongolab.com/ ?

Wenn Sie das Meteortool verwenden, startet es automatisch einen mongod Prozess für Sie, und der zugrunde liegende Knotenprozess, der von Meteor ausgeführt wird und Ihre App darstellt, stellt eine Verbindung zu dieser Mongo-Instanz her. Wenn wir unsere Meteor-App als Knoten-App starten wollen, müssen wir mit dem Mongo-Zeug selbst fertig werden, was die Frage beantwortet: Warum nicht einen anderen Dienst verwenden, um damit umzugehen, sie wissen es besser, oder?

Doesn't it slow down the website, because now application has to connect to their database instead of local database ?

Natürlich hat die Abhängigkeit von einem 3rd-Party-Datenbank-Service seine Unannehmlichkeiten, und das ist einer von ihnen. Die Netzwerkkommunikation wird immer langsamer sein als die Interprozesskommunikation, die auf localhost stattfindet (dies gilt insbesondere für diese SSD-gestützten billigen VPS, die Sie heutzutage finden können).

And how exactly do I connect to mongolab for example ?

einen entsprechenden Wert der Umgebungsvariablen MONGO_URL Durch die Einstellung der Datenbankdienstanbieter erhalten Sie eine URL geben, die mongodb zu Ihrem Online entspricht, ist es das, was Sie in der Befehlszeile mit dem Knoten Prozess übergeben müssen, wenn Sie Möchte Meteor, um eine Verbindung zu Ihrer entfernten Datenbank herzustellen und wie gewohnt zu arbeiten.

Wenn Sie eine eigene lokale mongod Instanz starten möchten Ihre Anwendung eine Verbindung herstellen zu lassen, ist auch dies ein anderes Thema, aber Sie werden diese Schritte folgen müssen:

  • erste mongodb korrekt auf Ihrem Server installieren unter Verwendung der Referenzdokumentation für die Betriebssystemversion. Mit "richtig" meine ich die selbe Version, die Meteor gerade benutzt (2.4.9) und lasse sie als Dienst laufen, damit sie beim Neustart des Servers neu startet.
  • Testen Sie, ob mongod ausgeführt wird, indem Sie einen Client mit dem Befehl mongo starten.
  • passieren die richtige MONGO_URL wenn Ihre App mit immer (so etwas wie mongodb://localhost/my-project-mongodb)

jetzt starten Verstehen, warum meteor deploy ist erstaunlich: D

+5

> Aber es ist keine gute Idee, eine Website in der Produktion mit Meteor laufen trotzdem warum? –

+0

> Warum für immer verwenden, wenn nohup die Aufgabe erledigt? –

+2

Der Meteor-Bündelungsprozess optimiert Ihre Anwendung für die aktuelle Architektur, sodass sie schneller läuft. Der Vorteil von forever over nohup besteht darin, dass wenn die Node-Prozess-App Ihrer App abstürzt, diese für immer automatisch neu gestartet wird, was eine theoretische 100% ige Verfügbarkeit Ihrer Website gewährleistet. nohup ist nur ein Befehl, um zu vermeiden, dass der gestartete Prozess aufhört, wenn das HUP-Signal (Hangup) empfangen wird, das normalerweise beim Abmelden gesendet wird, aber es ist keinesfalls ein seriöser Dienst-Controller-Launcher. – saimeunt

Verwandte Themen