首页 > 解决方案 > 如何使用 EC2 (linux) 服务器启动运行 nginx 和 Node.js

问题描述

如何在服务器启动时运行 nginx 和 Node.js?

为了使用 AWS Auto Scaling 启动 Amazon EC2,我必须直接连接到 EC2 以运行 nginx 和 Node.js。

这可以为 Auto Scaling 完成吗?


在 Amazon EC2 中,我想在 EC2 启动期间通过 Auto Scaling 使用 Node.js 运行 nginx。

EC2 使用映像设置为 Auto Scaling 组。我想运行由 Auto Scaling 启动的 EC2 Node.js 应用程序和 nginx,以及 EC2 服务器启动。

对于 nginx,我可以使用 运行可执行文件chkconfig,但 Node.js 应用程序将以 pm2 运行,使用 package.json 中编写的代码。

如何在 EC2 启动时运行 nginx 和 Node.js,并让新的 EC2(以 Auto Scaling 启动)正确响应?


评论回复:

我不想使用“node app.js”命令运行 node.js。

我想通过 package.json ( script ) 运行 node.js

前任。

  "start": "NODE_ENV=production PORT=3000 pm2 start server.js -i -1"

我怎样才能做到这一点?

您的建议是使用 linux 服务器初始化脚本文件。

但是,我想设置 NODE_ENV、PORT 并使用 pm2 命令。


解决方案

我解决了这个问题。

当 Linux 启动时,我尝试使用脚本文件来自动运行 node.js。

我创建了脚本文件并让shell脚本在linux启动后自动运行,但这似乎不是一个好主意。

或者,可以使用 pm2 启动和生态系统.config.js 灵活解决问题。

感谢你的回复。

标签: node.jslinuxnginxamazon-ec2server

解决方案


这与自动缩放无关。它通常与自动缩放器用于启动您的 EC2 实例的 EC2 AMI(Amazon 系统映像)有关,也可能与您在启动时传递给实例的“用户元数据”有关。这是唯一影响 EC2 实例在启动时和启动后所做的事情的两件事,直到它开始与外界通信。

因此,您需要做的是创建一个已设置的 AMI,以便在从该 AMI 启动 EC2 实例时启动正确的事情。您要做的是将要使用的 AMI 作为起点,将该 AMI 启动到实例中,进行所需的必要更改和安装,然后保存新的 AMI。然后更改您的自动扩展组以使用该新 AMI 启动新实例。

您可以交替地在“用户元数据”中发送一个脚本来启动事物,但这很少是您想要做的”。大多数时候,您希望让您的 AMI 做正确的事情。

您也可能正在使用某种启动后配置程序,例如 Chef、Ansible 或 Chef Habitat。如果你是,那就是你设置所有这些东西的地方。您希望该系统完成您所描述的工作。但如果你这样做,我之前所说的仍然适用。为此,您通常还构建了一个自定义 AMI,其中已经内置了部分供应系统,以便该系统可以连接到其中并进行供应。这些系统也可以从通用 AMI 开始。这取决于系统。


推荐阅读