如何永远运行流星?使用第三方数据库好吗?

goo*_*ing 10 javascript meteor

所以,当我运行时meteor,应用程序运行正常.但是,当我关闭与云服务器的连接时,流星显然会关闭.我该怎么办才能永远运行流星?

另外,使用像https://mongolab.com/这样的第三方数据库服务有什么意义?它不会减慢网站的速度,因为现在应用程序必须连接到他们的数据库而不是本地数据库吗?

例如,我如何连接到mongolab?

sai*_*unt 14

所以,当我运行meteor时,app工作正常.但是,当我关闭与云服务器的连接时,流星显然会关闭.

您可以启动流星nohup(没有挂断)来实现此目的.

nohup meteor --production &
Run Code Online (Sandbox Code Playgroud)

但无论如何,使用流星运行生产网站并不是一个好主意.

我该怎么办才能永远运行流星?

您可以使用foreverNode.js工具,该工具旨在将节点应用程序作为服务运行.

我还想指出那forever已经老了,我听说过最近的替代方案,但它似乎仍然是一个非常常见的工具.您也可以使用systemd哪种更好地与UNIX服务生态系统集成,但这是一个很好的故事.

但首先,你必须像这样"摧毁"你的流星应用程序:

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
Run Code Online (Sandbox Code Playgroud)

所以现在你有了一个可以运行的普通节点应用程序 node main.js

让我提一下,使用meteor使用的节点版本可能是一个好主意,从流星0.9.1开始是0.10.29.你可以传统安装它,或者你可以使用流星工具附带的节点版本.

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
Run Code Online (Sandbox Code Playgroud)

请注意,这种在系统上"安装"node + npm的方式存在问题,因为:

  • 它假设你只做流星相关的东西.
  • 它取决于流星工具的发布过程(如果流星工具更新,你需要重新运行这些赞誉).

您可以forever使用npm 安装该工具:

# -g means globally : give access to forever to all users on the system
sudo npm install -g forever
Run Code Online (Sandbox Code Playgroud)

要将节点应用程序作为服务启动,可以使用以下命令,该命令正确设置一些环境变量并使用以下命令运行应用程序forever:

sudo PORT=80 MONGO_URL=mongodb://localhost/my-project-mongodb ROOT_URL=http://localhost forever start my-project-node/main.js
Run Code Online (Sandbox Code Playgroud)

您可以使用它进行监控 forever stop my-project-node/main.js

另外,使用像https://mongolab.com/这样的第三方数据库服务有 什么意义?

使用流星工具时,它会mongod自动为您启动一个进程,由代表您的应用程序的meteor执行的基础节点进程将连接到此mongo实例.

当我们想要将我的流星应用程序作为节点应用程序启动时,我们必须自己处理mongo的东西,这有点回答这个问题:为什么不使用其他服务为我们处理它,他们知道的更好,对吧?

它不会减慢网站的速度,因为现在应用程序必须连接到他们的数据库而不是本地数据库吗?

当然,依赖第三方数据库服务有其不便之处,这就是其中之一.网络通信总是比本地主机上发生的进程间通信慢(在现在可以找到的这些SSD支持的廉价VPS上尤其如此).

例如,我如何连接到mongolab?

通过为环境变量设置适当的值MONGO_URL,数据库服务提供者将为您提供与您的在线对应的URL,mongodb如果您希望meteor连接到远程数据库,则需要在命令行中传递给节点进程.像往常一样工作.

如果您想启动一个专用的本地mongod实例让您的应用程序连接到它,那么这是另一个主题,但您必须遵循以下步骤:

  • 首先mongodb在服务器上正确安装,使用操作系统版本的参考文档.通过正确我的意思是选择与meteor当前使用相同的版本(2.4.9)并让它作为服务运行,以便在服务器重新启动时实际重启.
  • 通过使用该mongo命令启动客户端来测试mongod是否正在运行.
  • 永远启动您的应用程序时传递正确的MONGO_URL(类似mongodb://localhost/my-project-mongodb)

现在明白为什么meteor deploy是惊人的:D

  • >但是为什么用流星运行生产网站并不是一个好主意? (5认同)
  • 流星捆绑流程优化了当前架构的应用程序,因此运行速度更快.永远超过nohup的优势在于,如果您的应用程序的节点处理应用程序崩溃,永远将自动重新启动它,提供您的网站的理论100%正常运行时间.nohup只是一个命令,可以避免在接收通常在您注销时发送的HUP(挂断)信号时停止启动的进程,但它绝不是一个严肃的服务控制器启动器. (2认同)