将Node.js和MongoDB应用程序部署到Heroku
#node #mongodb #heroku

您是否有一个node.js项目,您想投入生产,但不知道如何?

在本教程中,您将学习如何将node.js和mongodb应用程序部署到Heroku。

在开始之前,让我们快速看一下Heroku和Mongodb。

什么是Heroku?

Heroku是一个云平台作为服务(PAA),使企业能够创建,交付,监视和扩展应用程序。

Heroku的创建是为了减轻基础架构的关注,并消除了您学习网络管理,服务器配置或数据库调整的需求。

本质上,Heroku消除了障碍,因此开发人员可以专注于创建出色的应用程序。

注意:Heroku将在11月28日拉开他们的免费计划。请记住,您必须从此日期开始使用Heroku付费。

什么是Mongodb Atlas?

mongoDB地图集是一个全局云数据库,可处理您选择的云服务提供商部署,管理和治愈您的部署的复杂性(AWS,Azure,GCP)。它使您可以在云中部署,管理和扩展MongoDB。

先决条件

继续前进,请确保设置以下设置:

创建一个新的mongodb群集

让我们从为该项目创建一个MongoDB cluster开始。登录到地图集和您的Atlas仪表板,请按照以下步骤创建一个新集群:

  1. 单击“构建数据库”按钮。
    Build a Database

  2. 选择群集类型。我们将使用“共享”群集。
    Shared cluster

  3. 自定义群集。选择“共享”>“ AWS”,然后单击“创建群集”按钮。

要更改默认集群名称,请单击“群集名称”选项卡,然后在输入字段中输入您的首选名称。

Cluster name

  1. 选择群集的身份验证。我们将使用用户名和密码。输入用户名和密码>单击“创建用户”。

  2. 选择要从哪里连接的位置,然后单击“完成和关闭”按钮。
    Finish and close

获取连接字符串

现在您已经创建了MongoDB群集,让我们获取连接字符串。

  1. 单击“连接”按钮。
    Connect

  2. 选择“连接您的应用程序”选项卡。
    Connect application

  3. 复制连接字符串。

添加连接字符串

现在在项目中创建一个.env文件,并添加连接字符串如下所示。

注意:将您的.env文件添加到.gitignore文件总是很好的做法,以免将其提交给git。

MONGODB_URI = "YOUR CONNECTION STRING"

以这种方式,您不会意外地向公众展示您的凭据。

要访问环境变量,我们将使用dotenv软件包。使用以下命令安装它:

npm install --save-dev dotenv

安装完成后,请使用下面的代码段更新app.js

if (process.env.NODE_ENV !== "production") {
  require("dotenv").config();
}

如果环境未设置为生产,则此代码段将加载.env文件中的环境变量。默认情况下,在Heroku process.env.NODE_ENV上设置为production,因此将使用不同的环境变量。您可以使用此检查来包括只能在生产中运行的代码(或排除不应该不应该的代码)。

现在,如果您使用命令npm start运行该应用程序,则该应用程序将连接到远程MongoDB群集。

安装Heroku CLI

让我们为应用程序部署设置Heroku。首先,使用下面的命令安装Heroku CLI。

npm install -g heroku

完成此操作后,更新package.json以指定您的开始脚本。

"scripts": {
  "start": "node app.js",
},

然后指定您将用于运行应用程序的node.js版本。

...
"engines": {
  "node": "14.x"
}

最后,更新您的应用程序收听端口以默认在生产上收听Heroku。

const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

在本地运行node.js和mongodb应用程序

要测试一切是否按预期工作,请在部署之前在本地运行该应用程序。

heroku local web

对于此演示应用程序,您应该看到:Server is running on port 5000Connected to MongoDB

部署您的node.js和mongodb应用程序

在部署应用程序之前,我们需要创建一个Heroku应用程序,并添加将在生产中使用的环境变量。为此,请登录Heroku仪表板,然后单击“新”按钮。

Heroku app

选择“创建新应用”,输入应用程序名称,选择您的区域,然后单击“创建应用程序”按钮。

Create app

接下来,使用下面的命令登录到Heroku CLI。

heroku login

上面的命令将提示您获得凭据,并将您登录。<​​/p>

然后在新的或现有目录中初始化GIT存储库。

git init
heroku git:remote -a crud-with-mongodb

接下来,将您的代码提交给存储库,并使用git将其部署到Heroku。

git add .
git commit -am "ready to deploy"
git push heroku main

等待应用程序部署的时间。部署完成后,Heroku CLI将为应用程序提供远程URL。

现在,回到您的Heroku应用程序!单击“设置”>“揭示config vars”,然后添加您的MONGODB_URI

MONGODB URI

最后,转到MongoDB群集('网络访问'>“ IP访问列表”>“添加IP地址”),然后将主机IP地址添加到网络权限列表中。这使您的主机访问群集。

对于本教程,我们将启用IP地址0.0.0.0/0的任何地方访问。

IP address

现在,您已将Node.js应用程序部署到Heroku!

包起来

在这篇文章中,我们经历了将Node.js和MongoDB应用程序部署到Heroku的阶段。我们首先创建了一个MongoDB群集,然后在安装Heroku CLI并最终将我们的应用程序部署到Heroku之前,然后将数据库连接字符串添加到环境变量中。

您可以在MongoDB's official Atlas docsHeroku's official docs中了解更多信息。

快乐编码!

P.S。如果您喜欢这篇文章,subscribe to our JavaScript Sorcery list每月深入研究更神奇的JavaScript技巧和技巧。

P.P.S。如果您需要node.js应用程序的apm,请go和check out the AppSignal APM for Node.js