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

如您所见,我是新来的...

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

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

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

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

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

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

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

谢谢您的帮助。正如您所知,我不仅在寻找解决方案,而且在解释,因为我真的很困惑。:-)

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

  • 我在终奌站

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

  • 机器中有3个文件夹:app.js*name of my app**name of my app*

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

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

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

Sprout Coder asked 2020-01-13T11:04:30Z
5个解决方案
61 votes

在调用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]

希望这可以帮助,

詹姆士

James Wilson answered 2020-01-13T11:05:39Z
26 votes

我使用了有效答案一段时间,但有时屏幕无缘无故结束,屏幕也没有平衡装载机,而在生产环境中您应该关心的其他功能,目前我使用npm组件来完成此工作。

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

这是如此容易使用。

$ npm install pm2 -g

然后像这样用pm2启动您的应用

$ pm2 start app.js

在上面的链接中,您可以找到需要执行的其他任务。

希望这对像我这样的新手有所帮助。

Juan Camilo Mejia answered 2020-01-13T11:06:21Z
13 votes

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

在这里查看:[https://github.com/foreverjs/forever]

这是一个很好的教程,说明如何在CENTOS上永久使用chkconfig。

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

Joseph Juhnke answered 2020-01-13T11:06:54Z
2 votes

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

Pritam Roy answered 2020-01-13T11:07:14Z
2 votes

我很晚才加入该线程,并且似乎每个新手的基本问题。 请按照以下步骤正确设置您的第一台服务器。

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

npm run pm2-start

npm run pm2-start

看到输出,最后一行必须是..

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

接受最后一行命令,然后以root特权再次运行。

(在运行下一个命令之前,请在package.json文件中为pm2提供新的启动脚本,例如:npm run pm2-start

npm run pm2-start

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

[https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04]

Ritesh kumar Agrahari answered 2020-01-13T11:09:14Z
translate from https://stackoverflow.com:/questions/26245942/how-do-i-leave-node-js-server-on-ec2-running-forever