当前位置: 首页 > 面试题库 >

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

高海阳
2023-03-14
问题内容

如您所见,我是新来的…

我建立了第一个网站,建立了第一个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上运行

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


问题答案:

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

希望这可以帮助,

詹姆士



 类似资料:
  • 问题内容: 我想从我的本地计算机连接到EC2上的db,但是我却做不到,并且尝试了所有操作-我正在使用以下命令连接到EC2: 产生此错误 错误2003(HY000):无法连接到“ IP”上的MySQL服务器(110) 我已经用修改了my.cnf 仍然无法连接到数据库 问题答案: 可能是以下原因之一: 您需要在Amazon Security Group中进行输入,以允许从您的计算机到Amazon EC

  • 问题内容: 我已经从这里安装的node.js http://nodejs.org/ 。在我的Windows8机器上。将示例服务器代码复制到我的server.js文件中 然后打开node.js提示符并编写节点c:/node/server.js,但是什么也没有发生。我是一个PHP开发人员,只是想尝试一下,任何指导原则都将非常有帮助。 问题答案: 您无需进入node.js提示符,只需使用标准命令prom

  • 问题内容: 我在这里得到了很多人的帮助,现在我想回馈。对于那些使Node.js服务器无法与MongoDB一起使用的问题,这就是我所做的。 问题答案: 这最初是由问题提问者发布的。 一个mod在评论中要求他将其发布为答案,但未得到任何回应。因此,我清理了它并亲自发布。 查看代码时,您会注意到该代码位于内部。如果您将其撤消,它将不起作用。另外, 请勿关闭 数据库连接。否则,在第一次之后,数据库连接将不

  • 问题内容: 这是一个简单的node.js代码。 我将其上传到cpanel托管服务器上并安装了node.js并运行它。如果服务器是普通服务器,我可以通过访问’http:// {serverip}:8080’检查脚本结果。但是在cpanel上托管域和子域,并且每个域都由每个站点匹配。甚至http:// {serverip}也不是有效的网址。如何访问我的node.js结果?请教我。谢谢。bingbing

  • 问题内容: 我有一些关于永久使用Node.js的问题,可能很琐碎。根据我的阅读,永远可以通过编程使用,并且它维护了一个列表,其中包含所有永远使用的脚本。该进程终止后,它会自动产生一个新的进程,直到停止为止。 但是,我的问题是,如何永远做到这一点?是否还会添加这些脚本以在启动时启动? 问题答案: 您可以像这样永久性地使用程序: 在node.js脚本中使用Forever实例: 您应该花一点时间阅读一下

  • 我将bash脚本存储为db中的字符串,我需要根据用户需求调用它。脚本应该从PHP级别在远程机器上执行。我找到了以下主题: 关于ssh连接和调用远程脚本的两个主题: 如何使用SSH在远程计算机上运行shell脚本 https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password 以及在php中使用它的两种