一尘不染

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

node.js

如您所见,我是新来的…

我建立了第一个网站,建立了第一个Node.js服务器来为其提供服务,然后将所有内容实时发布到EC2上。

我在我的EC2 IP地址上测试了所有内容,并且似乎一切正常。

现在直到现在,我一直在本地测试我的应用程序,因此每当我关闭终端时,app.js都将停止运行,因此在localhost上将不会提供任何服务,这是有道理的。

现在,我的服务器位于EC2上,每当我关闭终端时,都会发生同样的事情(“很明显”。)。

所以我的问题是如何使Node.js服务器在EC2上运行,例如…永远..以便我的网站永远保持生存.. :)

我读了一些有关名为“ forever”的节点模块的信息,但我想知道(是新的还是全部。)为什么“ forever”功能不是Node.js-
EC2系统的默认设置?

我的意思是,如果我错了,请纠正我,但这不是设置Web服务器并将其实时发布以使其永远保持生命的全部意义吗?那不是服务器应该做什么(无限监听请求)吗?如果是这种情况,为什么我们需要额外的模块/设置来实现?

谢谢您的帮助。您可以告诉我,我不仅在寻找解决方案,而且还在解释,因为我真的很困惑。:-)

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

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

  • 登录到Amazon计算机后,然后转到相关文件夹并执行节点app.js

  • 有机器3个文件夹:nodenode_modules*name of my app*

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

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

  • 一旦关闭终端,一切都将关闭


阅读 230

收藏
2020-07-07

共1个答案

一尘不染

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

screen

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

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

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

希望这可以帮助,

詹姆士

2020-07-07