繁体   English   中英

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

[英]How do I leave Node.js server on EC2 running forever?

正如你可以从我的问题中看出的那样,我是新来的......

我建立了我的第一个网站,我设置了我的第一个 Node.js 服务器来为其提供服务,然后将所有内容推送到 EC2 上。

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

到目前为止,我一直在本地测试我的应用程序,因此每当我关闭终端时,app.js 都会停止运行,因此本地主机上不会提供任何服务。

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

所以我的问题是如何让我的 Node.js 服务器在 EC2 上运行……永远……这样我的网站就永远存在……永远:)

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

我的意思是,如果我错了请纠正我,但是设置 Web 服务器并推送它以使其永远保持在线状态不就是全部意义所在吗? 无论如何,这不是服务器应该做的(无限地监听请求)吗? 如果是这样,为什么我们需要额外的模块/设置来实现它?

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

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

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

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

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

  • app.js位于*name of my app*

  • 之后,该站点在我的 EC2 IP 上上线

  • 一旦我关闭终端,一切都关闭了

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

希望这可以帮助,

詹姆士

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

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

这很容易使用。

$ npm install pm2 -g

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

$ pm2 start app.js

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

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

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

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

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

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

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

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

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

npm install pm2 -g

pm2 startup systemd

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

您必须以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提供一个新的启动脚本,例如: "pm2-start": "pm2 start ./bin/www"

npm run pm2-start

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

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

如果您使用的是 Ubuntu EC2,最好使用以下我们在过去 6 年中一直在使用它并且没有遇到任何问题。

sudo npm i -g forever

现在开始你的主要例子

forever start index.js
forever start src/server.js

要停止服务器,请使用以下命令

forever stop index.js

列出永远运行的多个服务器

forever listall

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM