如何让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个文件夹: nodenode_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即可完成。