所以,当我运行meteor
时,app工作正常。但是,当我关闭与云服务器的连接时,流星显然会关闭。我该怎么办才能永远运行流星?
另外,使用像https://mongolab.com/这样的第三方数据库服务的重点是什么?它不会减慢网站的速度,因为现在应用程序必须连接到他们的数据库而不是本地数据库吗?
例如,我如何连接到mongolab?
答案 0 :(得分:14)
所以,当我运行meteor时,app工作正常。但是,当我关闭时 连接到我的云服务器,流星显然会关闭。
你可以使用nohup
启动流星(没有挂断),用于此目的。
nohup meteor --production &
但是,无论如何使用流星运行网站并不是一个好主意。
我该怎样做才能永远地运行流星?
您可以使用forever
,一个Node.js工具,用于将节点应用作为服务运行。
我还想指出forever
已经老了,我已经听说过最近的替代方案,但它似乎仍然是一个非常常见的工具。
您还可以使用systemd
,它可以更好地与UNIX服务生态系统集成,但这是一个非常简单的故事。
但首先,你必须" demeteorize"你的流星应用程序是这样的:
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
现在你有了一个普通的节点应用程序,你可以使用node main.js
让我提一下,使用流星使用的节点版本可能是个好主意,从流星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
请注意这种方式安装"你系统上的node + npm是有问题的,因为:
您可以使用npm:
安装forever
工具
# -g means globally : give access to forever to all users on the system
sudo npm install -g forever
要将节点应用程序作为服务启动,您可以使用以下命令,该命令正确设置一些环境变量并使用forever
运行应用程序:
sudo PORT=80 MONGO_URL=mongodb://localhost/my-project-mongodb ROOT_URL=http://localhost forever start my-project-node/main.js
您可以使用forever stop my-project-node/main.js
此外,使用第三方数据库服务的重点是什么 https://mongolab.com/?
使用流星工具时,会自动为您启动mongod
进程,由代表您应用的meteor执行的基础节点进程将连接到此mongo实例。
当我们想要将我的流星应用程序作为节点应用程序启动时,我们必须自己处理mongo的东西,这有点回答这个问题:为什么不使用其他服务为我们处理它,他们知道的更好,对吧?
它不会减慢网站的速度,因为现在应用程序必须这样做 连接到他们的数据库而不是本地数据库?
当然,依赖第三方数据库服务有其不便之处,这就是其中之一。网络通信总是比本地主机上发生的进程间通信慢(这在现在可以找到的这些SSD支持的廉价VPS上尤其如此)。
例如,我如何连接到mongolab?
通过为环境变量MONGO_URL
设置适当的值,数据库服务提供者将为您提供与您的在线mongodb
对应的URL,这是您需要传递给节点进程的命令行,如果你想让meteor连接到你的远程数据库并像往常一样工作。
如果您要启动专用的本地mongod
实例以让您的应用程序连接到它,那么这是另一个主题,但您必须按照以下步骤操作:
mongodb
,使用操作系统版本的参考文档。正确地说,我的意思是选择与meteor当前使用的版本相同的版本(2.4.9)并让它作为服务运行,以便在服务器重新启动时实际重启。mongo
命令启动客户端来测试mongod是否正在运行。mongodb://localhost/my-project-mongodb
)现在明白为什么meteor deploy
是惊人的:D