javascript - 如何在 AWS EC2 Ubuntu 免费套餐上托管 Node.js 应用程序?

标签 javascript node.js express amazon-ec2 pm2

我是 AWS EC2 的新手。我使用 PM2 在 AWS EC2 上托管了我的 Express.js。

这是我的应用程序的 EC2 当前日志。

我不知道这是否有效。

enter image description here

我的公共(public) IPv4 地址是 (52.90.33.231)。

如果需要 Nginx,请指导我完成它的步骤,因为我之前没有经验。

我也在这里添加入站规则。

enter image description here

http://localhost:5002/questapi

上面的 url 曾经给我以下数据:

enter image description here

所以 52.90.33.231/questapi 是工作 url。

最佳答案

我更愿意使用 Docker 在 EC2 中运行您的应用程序而不是使用 PM2,无论应用程序依赖性如何,您都可以轻松地将应用程序迁移到任何环境。 PM2 是一个很好的部署工具,但更好的答案是 DOCKER。

关于 NGINX,您可以使用 NGINX 或 APACHE Web 服务器在您的 Node 服务上启用反向代理,以将您的 5002 端口路由到 443/80。我还建议使用 AWS 应用程序负载均衡器,因为它会为您提供相同且易于使用 AWS CERTIFICATE MANAGER 安装 SSL 证书。

在 Ec2 中部署 Docker Node 的步骤

  1. 在您的 EC2 机器上安装 DOCKER - Follow this reference URL
  2. 在 EC2 机器上克隆您的 NodeJS 代码库,并在您的代码库的根文件夹中添加 Dockerfile。下面我将添加 Dockerfile 示例。
  3. 在项目的根文件夹中使用此命令构建 docker 镜像 docker build --no-cache -t <your_application_name>:latest .
  4. 使用给定的命令运行 NodeJs docker 镜像

sudo docker run --name <your_application_name> -itd --net="host"
-e 5002:5002
--restart unless-stopped
<your_application_name>:latest;

现在您可以在 <your_instance_public_ip>:5002 上开始使用该应用程序了,确保在安全组入站访问中开启5002端口。

在这两者之间,我在这里添加了一个引用链接,以使用 Aws ALB 通过反向代理规则隐藏您的 EC2 IP 地址和应用程序端口号。

https://www.clickittech.com/devops/deploy-nodejs-app-to-aws/

NODEJS 应用程序的 DOCKERFILE 示例

FROM node:14.0
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package.json /usr/src/app/

RUN npm install

# Bundle app source
COPY . .

EXPOSE 5002
CMD [ "node", "server.js" ] # you can add your start command

关于javascript - 如何在 AWS EC2 Ubuntu 免费套餐上托管 Node.js 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71381123/

相关文章:

javascript - 使用 javascript 更改字符串

javascript - 如何控制动画速度(requestAnimationFrame)?

node.js - 快速处理 URIError : Failed to decode param

Node.js message.split 返回未定义

javascript - Passport.js 身份验证后 Express.js 无法正确路由

javascript - 在 JavaScript 中解压缩 Gzip 缓冲区

javascript - 跨越多个非文本节点时突出显示页面上的选定文本

node.js - 获取错误 400 OpenAI 文件端点 Node.js

node.js - Angular2 和 Express

node.js - 如何阻止黑客让我的 Express 服务器离线?