如何让EC2上的Node.js服务器永久运行?
正如你可以告诉我的问题,我是新来的这个…
我build立了我的第一个网站,我build立了我的第一个Node.js服务器来服务它,然后把所有的事情都推到了EC2上。
我testing了我的EC2 IP地址上的一切,似乎一切正常。
现在到现在为止,我一直在本地testing我的应用程序,所以每当我closuresterminal,app.js就会停止运行,所以没有任何东西会在本地主机上运行。
现在我的服务器在EC2上了,每当我closures我的terminal,同样的事情就会发生(“显然”可以这么说..)。
所以我的问题是如何让我的Node.js服务器上运行的EC2像…永远..所以我的网站保持活..永远:)
我读了一些关于称为“永远”的节点模块,但我想知道(是新的和所有..)为什么不是这个“永远”function的Node.js-EC2系统的默认设置?
我的意思是,纠正我,如果我错了,但不是build立一个Web服务器,并推动它活着永远保持活着的整个点? 难道不是服务器应该怎么做(无限听取请求)? 如果是这种情况,为什么我们需要额外的模块/设置来实现呢?
感谢您的帮助..正如你可以告诉我不只是寻找一个解决scheme,但也是一个解释,因为我真的很困惑.. 🙂
编辑 (你可能需要一些细节) – 在EC2上安装我的应用程序后,这些是我在terminal上遵循的步骤(顺便说一下,该应用程序在Amazon Linux
上运行):
-
我在terminal上键入ssh -i xxxxxxxxxxx.pem ec2-user@ec2-xx-xx-xx-x.eu-west-1.compute.amazonaws.com
-
login到Amazon机器后,我转到相关文件夹并执行节点app.js
-
机器中有3个文件夹:
node
,node_modules
和*name of my app*
-
app.js
驻留在*name of my app*
-
之后,这个网站在我的EC2 IP上运行
-
一旦我closures了terminal,一切都closures
在调用Node.js之前,运行以下命令:
screen
这将创build一个持久的环境,这将允许您的进程在断开连接后继续运行。
重新连接时,可以使用此命令重新连接到该环境:
screen -r
这是一个随机链接,了解关于屏幕的更多信息:
http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
但是,如果您的EC2实例重新启动,这不会对您有所帮助。 有很多不同的方法来做到这一点。 将启动命令添加到/etc/rc.local是一种方法。 这是Amazon指南的链接,其中包括向/etc/rc.local添加内容。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html
希望这可以帮助,
詹姆士
我有一段时间的有效答案,但有时屏幕只是没有理由结束屏幕没有平衡加载器和其他function,在生产环境中,你应该关心,目前我使用npm组件来完成这项工作。
https://www.npmjs.com/package/pm2
这很容易使用。
$ npm install pm2 -g
那么就像这样开始你的应用程序与pm2
$ pm2 start app.js
在上面的链接,你可以finddiferents任务执行,如果你需要的话。
希望这能帮助像我这样的新手。
有一个更好的方法。 使用forever.js。
在这里看到: https : //github.com/foreverjs/forever
这是如何在CENTOS上永远使用chkconfig的一个很好的教程。
http://aronduby.com/starting-node-forever-scripts-at-boot-w-centos/
或者使用tmux只需input一个tmux屏幕运行节点服务器Ctrl + b点击D即可完成。