如何让EC2上的Node.js服务器永远运行?

Spr*_*der 53 webserver amazon-ec2 node.js

你可以从我的问题中看出,我是新手......

我建立了我的第一个网站,我建立了我的第一个Node.js服务器来服务它,然后在EC2上推送所有内容.

我在我的EC2 IP地址上测试了一切,一切似乎都在工作.

到现在为止,我一直在本地测试我的应用程序,所以每当我关闭终端时,app.js会停止运行,因此无法在localhost上提供任何内容.

既然我的服务器在EC2上,每当我关闭终端时,都会发生同样的事情("显然"可以说......).

所以我的问题是我如何让我的Node.js服务器在EC2上运行...就像...永远...所以我的网站保持活着..永远:)

我读了一些名为"永远"的节点模块,但我想知道(新的和所有......)为什么这个"永远"功能不是Node.js-EC2系统的默认设置?

我的意思是,如果我错了,请纠正我,但是不是设置一个网络服务器并将其推送到现场让它永远存在的全部意义吗?这不是服务器应该做什么(无限听取请求)?如果是这种情况,为什么我们需要额外的模块/设置来实现这一目标?

谢谢你的帮助..你可以告诉我,我不仅要找一个解决方案,还要解释一下,因为我真的很困惑.. :-)

编辑(您可能需要的一些细节) - 在EC2上安装我的应用程序后,这些是我在终端上执行的步骤(该应用程序正在运行Amazon Linux):

  • 我在终端上键入ssh -i xxxxxxxxxxx.pem ec2-user@ec2-xx-xx-xx-x.eu-west-1.compute.amazonaws.com

  • 登录到亚马逊机器后,我转到相关文件夹并执行节点app.js

  • 有机器3个文件夹:node,node_modules*name of my app*

  • app.js 居住在 *name of my app*

  • 之后,该网站将在我的EC2 IP上运行

  • 关闭终端后,一切都关闭了

小智 62

在调用Node.js之前,请运行以下命令:

screen

这将创建一个持久的环境,允许您的进程在断开连接后继续运行.

重新连接时,可以使用此命令重新连接到该环境:

screen -r

这是一个随机链接,可以了解有关屏幕的更多信息:

http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

但是,如果您的EC2实例重新启动,这将无济于事.有很多不同的方法可以做到这一点.将启动命令添加到/etc/rc.local是一种方法.这是一个指向亚马逊指南的链接,其中包括向/etc/rc.local添加内容.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html

希望这可以帮助,

詹姆士


Jua*_*jia 27

我使用了有效的答案一段时间,但有时候屏幕刚刚没有理由结束屏幕没有平衡装载器和其他功能,在生产环境中你应该关心,目前我使用npm组件来完成这项工作.

https://www.npmjs.com/package/pm2

这很容易使用.

$ npm install pm2 -g
Run Code Online (Sandbox Code Playgroud)

然后就像这样用pm2启动你的应用程序

$ pm2 start app.js
Run Code Online (Sandbox Code Playgroud)

在上面的链接中,您可以找到要执行的差异任务.

希望这有助于像我这样的新手.


Jos*_*nke 13

还有更好的方法.使用forever.js.

请在此处查看:https://github.com/foreverjs/forever

这是一个关于如何在CENTOS上永远使用chkconfig的很好的教程.

http://aronduby.com/starting-node-forever-scripts-at-boot-w-centos/