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
> Aber es ist keine gute Idee, eine Website in der Produktion mit Meteor laufen trotzdem warum? –
> Warum für immer verwenden, wenn nohup die Aufgabe erledigt? –
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