Deploy NodeJS applications to AWS or HEROKU The Premise. Deploying NodeJS Apps on Heroku Deploy NodeJS on AWS

2025-06-07

将 NodeJS 应用程序部署到 AWS 或 HEROKU

前提。

在 Heroku 上部署 NodeJS 应用

在 AWS 上部署 NodeJS

前提。

NodeJS 彻底革新了全球后端架构。Ryan Dahl 使服务器端 JavaScript 成为可能,进一步巩固了 JavaScript 作为当今 Web 不可或缺组成部分的地位。

NodeJS

从基层开始,初学者通常必须将他们的代码部署到生产服务器,例如用于 Hackathon 或一些自由职业。

HerokuAWS是目前部署的最佳选择,它们的免费计划很好地满足了初次使用者的大部分需求。

然而,部署本身就是一个迷宫。Procfile、环境变量、代理设置、端口暴露,对于第一次尝试启动服务器的人来说,这简直是一场噩梦。

本文旨在帮助您部署 NodeJS 应用程序。

但更大的问题是部署在哪里?

Heroku 和 AWS 之间到底有什么区别?选择其中一种又有什么好处呢?

Heroku 与 AWS

Heroku 是基于容器的云平台产品(PaaS ),而 AWS 是一个提供IaaSPaaSSaaS 的安全云服务平台

基础设施/平台/软件服务

如果您是初学者,Heroku 是一个易于部署的解决方案。您无需担心基础设施和可扩展性。

AWS 一开始可能会非常复杂,但它能让你更好地控制网站的基础架构。所以,如果你是初学者,最好尝试 Heroku,而不是在 AWS 实例中配置那么多东西,因为 Heroku 可以为你提供一步到位的部署解决方案。

那么,我们开始吧,好吗?


在 Heroku 上部署 NodeJS 应用

Heroku 徽标

我们将使用 Heroku CLI 进行部署。

从这里下载 Heroku CLI

成功安装 heroku cli 后运行以下命令:

heroku login
Enter fullscreen mode Exit fullscreen mode

将目录更改为项目文件夹。

指定启动脚本

为了确定如何启动您的应用,Heroku 首先会查找 Procfile。如果 NodeJS 应用不存在 Procfile,我们将
尝试通过 package.json 中的启动脚本启动一个默认的 Web 进程。

Procfile 是什么?下文将详细介绍。

Web 进程类型中的命令必须绑定到 PORT 环境变量中指定的端口号。否则
,测功机将无法启动。

什么是测功机?

所有 Heroku 应用程序都在一组称为 dynos 的轻量级 Linux 容器中运行。

~ Heroku 开发中心

如果您在代码中对端口进行硬编码,部署将会失败。

确保在你的代码中使用 process.env.PORT。

添加 Procfile

什么是 Procfile?

Heroku 应用包含一个 Procfile,用于指定应用启动时执行的命令。您可以使用 Procfile 声明各种进程类型

~ Heroku开发中心

webProcfile 是由某些关键字(例如或)定义的自定义命令列表worker

这些是每次应用启动时必须执行的步骤和命令。Heroku 会在不同的dynos轻量级 Linux 容器中执行 Procfile 中的所有进程,这些容器彼此连接。

创建名为 Procfile(无扩展名)的文件并添加以下行。

web: node index.js
Enter fullscreen mode Exit fullscreen mode

构建您的应用程序并在本地运行

  • 在本地应用程序目录中运行“npm install”命令来安装您在 package.json 文件中声明的依赖项。
npm install
Enter fullscreen mode Exit fullscreen mode
  • 使用 Heroku 本地命令在本地启动您的应用程序,该命令作为 Heroku CLI 的一部分安装。
heroku local web
Enter fullscreen mode Exit fullscreen mode

您的应用程序现在应该在http://localhost:5000/上运行

将您的应用程序部署到 Heroku

将更改提交到 git 后,您可以将应用程序部署到 Heroku。

git add .
Enter fullscreen mode Exit fullscreen mode
git commit -m "Added a Procfile."
Enter fullscreen mode Exit fullscreen mode
heroku login
Enter fullscreen mode Exit fullscreen mode

输入您的 Heroku 凭证。

...
$ heroku create
Creating arcane-lowlands-8408... done, stack is cedar
http://arcane-lowlands-8408.herokuapp.com/ | git@heroku.com:arcane-lowlands-8408.git
Git remote heroku added
Enter fullscreen mode Exit fullscreen mode
git push heroku master
...
-----> Node.js app detected
...
-----> Launching... done
       http://arcane-lowlands-8408.herokuapp.com deployed to Heroku
Enter fullscreen mode Exit fullscreen mode

要在浏览器中打开该应用程序,请输入-

heroku open.
Enter fullscreen mode Exit fullscreen mode

在 AWS 上部署 NodeJS

AWS

作为第一步,我们需要在 AWS 上创建一个 EC2 实例,并选择Amazon Linux 2作为服务器的操作系统,并通过 ssh 进入该实例。

成功 ssh 进入 EC2 实例后,我们需要按照以下步骤成功部署 NodeJS 应用程序。

  1. 安装 NodeJS 和 NPM
  2. 安装 Git 并使用您的项目文件克隆存储库。
  3. 安装所有依赖项
  4. 安装 pm2 以后台进程运行服务器,为 Ec2 实例配置安全组

步骤 1 - 安装 NodeJS 和 NPM

通过运行以下命令安装 NVM(Node 版本管理器)。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

在命令行中输入以下命令激活 nvm

. ~/.nvm/nvm.sh
Enter fullscreen mode Exit fullscreen mode

使用 nvm 在命令行中输入以下内容来安装最新版本的 NodeJS。

nvm install node
Enter fullscreen mode Exit fullscreen mode

安装 NodeJS 还会安装 Node 包管理器 (NPM),因此您可以根据需要安装其他模块。

通过在命令行中输入以下内容来测试 NodeJS 是否已安装并正确运行。

node -v
Enter fullscreen mode Exit fullscreen mode
npm -v
Enter fullscreen mode Exit fullscreen mode

步骤 2 - 安装 Git 并克隆存储库

要安装 Git,请在终端中运行以下命令

sudo yum install git
Enter fullscreen mode Exit fullscreen mode

要验证 Git 是否在系统中正确安装,请运行以下命令。

git –version
Enter fullscreen mode Exit fullscreen mode

运行以下命令来克隆存储库

git clone <repository link>
Enter fullscreen mode Exit fullscreen mode

步骤 3 – 安装依赖项

将目录更改为克隆的 repo 文件夹并运行以下命令。

npm install
Enter fullscreen mode Exit fullscreen mode

步骤 4 - 安装 PM2 并启动服务器

PM2 是一个守护进程管理器,可以帮助您管理和保持应用程序在线。

PM2 的入门非常简单,它以简单直观的 C​​LI 形式提供,可通过 NPM 安装。

守护进程(发音为 DEE-muhn)是一个持续运行的程序,其存在的目的是处理计算机系统预期接收的周期性服务请求。守护进程会根据需要将请求转发给其他程序(或进程)。

~ WhatIS.com

守护进程是作为后台运行的程序,无需用户通过终端或 GUI 进行交互。将 Node 应用作为守护进程运行,可让您从服务器上的 SSH 会话访问和执行其他进程,否则,您的 Node 进程将占用当前会话的终端。

要安装 pm2,请运行以下命令。

sudo npm install pm2 -g
Enter fullscreen mode Exit fullscreen mode

要启动服务器运行:

sudo pm2 start build/index.js
Enter fullscreen mode Exit fullscreen mode

删除 pm2 进程运行

sudo pm2 delete <index no of the process>
Enter fullscreen mode Exit fullscreen mode

步骤 5 - 配置安全组

默认情况下,如果不配置 EC2 实例的入站流量配置,任何人都无法访问该应用程序。

快速解释

您的 EC2 专用的外部 IP 默认仅接收 SSH 请求。普通网页和 REST API 主要使用 TCP 协议进行数据传输。为了确保您的服务器安全,避免遭受 DDoS(分布式拒绝服务)攻击,并确保您的资产和数据安全无虞。

为了确保前端应用程序可以从我们的 NodeJS 应用程序发送请求并接收响应,我们需要通过更改 EC2 实例的安全设置将端口公开给传入的 TCP 连接。

要为 EC2 实例配置入站流量,请按照以下步骤操作:

  1. 选择 EC2 实例并单击描述部分中的安全组链接。

  2. 点击安全组将打开“安全组”部分。在这里,我们可以配置入站和出站流量属性。为了使我们的应用程序可以从任何地方访问,请点击“入站”选项卡。

  3. 点击“入站”选项卡中的“编辑”按钮,将打开“编辑入站规则”弹出窗口。默认情况下,它将显示 SSH 配置。

由于我们的应用程序将端口号配置为您所需的端口,因此我们需要添加一个新规则“自定义 TCP 规则”。

输入端口范围作为所需端口,并选择来源为“任意位置”。保存更改的规则后,它将允许我们从任何地方访问我们的应用程序。

就这样,伙计们!🎊 您已经成功学习了如何将 NodeJS 应用程序部署到生产环境中!


希望您觉得本文对您有所帮助。
欢迎访问我们的网站了解更多信息,并关注我们的平台:

也不要忘记点赞和评论。

在那之前,
请保持安全,愿源头与你同在!

星球大战谁?

本文由

文章来源:https://dev.to/nitdgplug/deploy-nodejs-applications-to-aws-or-heroku-ill
PREV
使用 Github Actions 将 React App 部署到 Amazon S3
NEXT
使用编辑距离查找相似字符串