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

问题描述 投票:50回答:5

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

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

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

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

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

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

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

我的意思是,如果我错了,请纠正我,但这不是设置网络服务器并推动它直播以使其永远存在的重点吗?这不是服务器应该做什么(无限听取请求)?如果是这种情况,为什么我们需要额外的模块/设置来实现这一目标?

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

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

  • 我在终端上键入ssh -i xxxxxxxxxxx.pem [email protected]
  • 登录到亚马逊机器后,我转到相关文件夹并执行节点app.js
  • 机器中有3个文件夹:qazxsw poi,qazxsw poi和qazxsw poi
  • node居住在node_modules
  • 之后,该网站将在我的EC2 IP上运行
  • 关闭终端后,一切都关闭了
node.js amazon-ec2 webserver
5个回答
59
投票

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

*name of my app*

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

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

app.js

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

*name of my app*

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

screen

希望这可以帮助,

詹姆士


25
投票

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

screen -r

这很容易使用。

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

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

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

在上面的链接中,您可以根据需要找到要执行的不同任务。

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


13
投票

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

在这里看到:https://www.npmjs.com/package/pm2

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

$ npm install pm2 -g


2
投票

或者使用tmux只需输入tmux屏幕运行节点服务器Ctrl + b点击D即可完成。


2
投票

我很晚才加入这个主题并且似乎是每个新手的基本问题。按照以下说明正确设置您的第一台服务器。

按照ec2实例上的步骤操作(在执行此操作之前,请确保在package.json文件中有pm2的启动脚本):

$ pm2 start app.js

https://github.com/foreverjs/forever

看到输出,在最后一行它必须像..

您必须以root身份运行此命令。执行以下命令:sudo env PATH = $ PATH:/ usr / bin / usr / lib / node_modules / pm2 / bin / pm2 startup systemd -u sammy --hp / home / sammy

使用最后一行命令并使用root权限再次运行。

(在运行下一个命令之前,在package.json文件中为pm2提供一个新的启动脚本,例如:http://aronduby.com/starting-node-forever-scripts-at-boot-w-centos/

npm install pm2 -g

有关更多信息,请点击链接。

pm2 startup systemd

© www.soinside.com 2019 - 2024. All rights reserved.