[英]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 个文件夹: node
、 node_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
有关更多信息,请点击链接。
如果您使用的是 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.