如何用Semaphore将Node.js应用程序部署到Elastic Beanstalk上?

210 阅读5分钟

简介

通过AWS Elastic Beanstalk,您可以在AWS云中快速部署和管理应用程序,而不必担心支持这些应用程序的基础设施。AWS Elastic Beanstalk会自动处理应用程序版本历史、容量配置、负载平衡、扩展和应用程序健康监控等所有细节。

本教程介绍了如何使用Semaphore在Elastic Beanstalk上为你的Node.js应用程序设置持续部署。首先,我们将在Elastic Beanstalk控制台初始化一个环境,并为我们的Node.js应用的配置添加一些变化。之后,我们将向你展示如何在Semaphore上设置部署。

前提条件

在开始之前,你需要做以下工作:

  • 创建一个AWS账户
  • 将你的项目添加到Semaphore。到这里来学习如何。

初始化Elastic Beanstalk环境

一个Elastic Beanstalk应用程序是Elastic Beanstalk组件的逻辑集合,包括环境、版本和环境配置。在Elastic Beanstalk中,一个应用程序在概念上类似于一个文件夹。一个环境是部署在AWS资源上的一个版本。每个环境一次只能运行一个应用程序版本。

创建一个应用程序

我们需要做的第一步是在Elastic Beanstalk控制台创建一个应用程序。在右上角,选择你想创建Elastic Beanstalk应用程序的区域:

接下来,点击 "创建新应用",为你的Elastic Beanstalk应用选择一个名字:

你也可以从命令行中完成这一工作:

$ aws elasticbeanstalk create-application --application-name nodejs-application

创建环境

下一步是创建一个环境。选择 "创建网络服务器 "选项:

你的预定义配置应该被设置为Node.js。目前,你可以选择 "单实例 "作为你的环境类型。一旦应用程序准备好用于生产,你可以升级到负载平衡、自动缩放的环境。

你可以选择 "样本应用 "作为初始应用版本。这只是一个临时的Elastic Beanstalk应用,我们将用它来检查我们的配置是否正确。

接下来,你需要为你的应用程序选择一个URL,并检查其可用性。

如果你的应用程序需要一个数据库,你将需要添加一个RDS DB实例。关于如何配置数据库以部署到Elastic Beanstalk的更多信息,你可以访问AWS Elastic Beanstalk的文档,以使用Amazon RDS与Node.js

接下来,你需要输入配置细节,如下面的截图所示。添加EC2密钥对是可选的,但你以后可能需要它来进行额外的配置,而且你不能在不停止实例的情况下向它添加密钥对。如果你没有一个EC2密钥对,你可以在这里学习如何创建一个。你也可以选择导入你自己的公钥,而不是用第三方工具创建。你可以按照这些说明这样做。

当创建一个新环境时,你可以指定标签来对环境进行分类。标签可以帮助你在成本分配报告中识别环境,如果你有许多环境需要管理,这尤其有用。这些是可选的,所以我们将这些字段留空。

在这个例子中,我们使用MySQL作为我们的数据库引擎,但你可以从 "数据库引擎 "的选择框中选择你自己的。

最后一步是为你的环境定义权限。当你创建一个新环境时,AWS Elastic Beanstalk提示你提供两个AWS身份和访问管理(IAM)角色,一个服务角色和一个实例配置文件。

角色本质上是一组权限,授予对AWS中的行动和资源的访问。一个实例配置文件是一个IAM角色的容器,你可以在实例启动时将角色信息传递给EC2实例。这使得Elastic Beanstalk服务能够代表你监控环境资源。你可以在Elastic Beanstalk文档中阅读更多关于权限的信息。

对于大多数环境来说,AWS管理控制台在你启动环境时提示你用1-click角色创建的服务角色和实例配置文件包括你需要的所有权限。我们将在我们的例子中使用这些。

最后一步是审查信息并确认它。一旦你点击了 "启动",环境应该开始初始化。如果你选择了创建RDS数据库的选项,这个过程可能需要一些时间。

你也可以使用以下命令从你的命令行创建一个Elastic Beanstalk环境:

$ aws elasticbeanstalk create-environment --application-name nodejs-application --environment-name nodejs-application-env --version-label version-1 --solution-stack-name "64bit Amazon Linux 2015.03 v2.0.1 running Node.js"

解决方案栈的名称决定了你的服务器配置。我们正在使用"64bit Amazon Linux 2015.03 v2.0.1 running Node.js" ,但你可以探索其他选项,可以使用以下命令列出:

$ aws elasticbeanstalk list-available-solution-stacks

当环境状态变成绿色时,你可以点击控制台的URL。如果它把你带到样本应用程序的欢迎界面,这意味着你的环境已经被正确配置了。

检索安全凭证

在继续部署之前,你将需要检索安全凭证,你将用它来为Semaphore提供对你的应用程序的访问。你可以通过点击Elastic Beanstalk管理控制台右上角的名字,并选择 "安全凭证 "来获取凭证。

点击左侧导航栏的 "用户",创建一个新用户。为你的用户选择一个名字,下载凭证,并将其保存在安全的地方--你将需要这些凭证来配置Semaphore,在接下来的一个步骤中。

接下来,你需要为新创建的用户定义一系列的权限。这些是你将委托给Semaphore的权限,以便部署你的应用程序。

在用户列表中,点击先前创建的用户。AWS使用托管策略来定义这些权限。一个策略可以附加到一个用户或一个组。如果你有许多用户,组提供了一个简单的方法来管理他们的权限。然而,如果这是你第一次使用Elastic Beanstalk,并且你只是想尝试一下,你可以直接将策略附加到用户身上。

在 "权限 "下的 "附加策略 "按钮将把你带到一个列出预定义AWS策略的页面。选择ElasticBeanstalkFullAccess 政策。 使用Semaphore部署应用程序

现在你已经初始化了你的环境并配置了你的Node.js应用程序,现在是最后部署它的时候了。进入Semaphore主页,登录,找到你的项目,并添加一个新的部署服务器。选择Elastic Beanstalk部署服务器:

选择部署策略

在本教程中,我们将使用自动部署策略。这意味着每次在你选择的分支上成功构建都会启动部署。还有一种手动部署策略,它允许你选择何时部署一个特定的分支。如果需要,你以后可以在服务器设置中改变部署策略。

接下来,你需要选择你希望部署的分支:

输入AWS凭证

输入你在本教程的 "安全凭证 "步骤中检索的AWS凭证,并选择区域。这将使Semaphore列出应用程序和你在你指定的地区的环境:

选择应用程序和环境

接下来,你将需要选择你的目标应用程序和环境。在这个例子中,我们看到Semaphore找到了nodejs-application和它的环境。你还需要选择S3桶,你的项目.zip文件将被上传。这是Elastic Beanstalk将寻找你的应用程序文件的地方。

在本教程中,我们假设你使用的是默认的Elastic Beanstalk部署流程。然而,如果你在单一容器环境中使用Elastic Beanstalk和Docker,在Semaphore上的相同设置也会有效。

你可以使用类似于elasticbeanstalk-us-west-2-057267302678 的桶,这应该是在你创建Elastic Beanstalk应用程序时创建的。你也可以选择一些其他的桶,用一个更具描述性的名字。你也可以通过点击 "创建新的S3桶 "链接来创建一个新的S3桶。或者,你也可以去S3管理控制台,在那里创建一个,然后在Semaphore页面上点击刷新。

命名服务器并部署应用程序

下一步是命名服务器并创建它:

一旦你创建了服务器,点击 "部署 "来部署你的应用程序:

现在要做的就是等待部署命令的执行完毕: 恭喜你!你已经成功部署了你的Node。你已经成功地将你的Node.js应用程序部署到AWS Elastic Beanstalk。