

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# QuickStart: 在 Linux 应用程序上部署.NET 核心到 Elastic Beanstalk
<a name="dotnet-linux-quickstart"></a>

本 QuickStart 教程将引导您完成在 Linux 应用程序上创建.NET Core 并将其部署到 AWS Elastic Beanstalk 环境的过程。

**不用于生产用途**  
示例仅用于演示。请勿在生产环境中使用示例应用程序。

**Topics**
+ [您的 AWS 账户](#dotnet-linux-quickstart-aws-account)
+ [先决条件](#dotnet-linux-quickstart-prereq)
+ [步骤 1：创建 .NET Core on Linux 应用程序](#dotnet-linux-quickstart-create-app)
+ [步骤 2：在本地运行应用程序](#dotnet-linux-quickstart-run-local)
+ [步骤 3：使用 EB CLI 部署 .NET Core on Linux 应用程序](#dotnet-linux-quickstart-deploy)
+ [步骤 4：在 Elastic Beanstalk 上运行应用程序](#dotnet-linux-quickstart-run-eb-ap)
+ [第 5 步：清理](#go-tutorial-cleanup)
+ [AWS 您的应用程序的资源](#dotnet-linux-quickstart-eb-resources)
+ [后续步骤](#dotnet-linux-quickstart-next-steps)
+ [使用 Elastic Beanstalk 控制台进行部署](#dotnet-linux-quickstart-console)

## 您的 AWS 账户
<a name="dotnet-linux-quickstart-aws-account"></a>

如果您还不是 AWS 客户，则需要创建一个 AWS 帐户。注册后，您就可以访问 Elastic Beanstalk AWS 和其他所需的服务。

如果您已经有一个 AWS 帐户，则可以继续前进[先决条件](#dotnet-linux-quickstart-prereq)。

### 创建一个 AWS 账户
<a name="dotnet-linux-quickstart-aws-account-procedure"></a>

#### 注册获取 AWS 账户
<a name="sign-up-for-aws"></a>

要开始使用 AWS，你需要一个 AWS 账户。有关创建的信息 AWS 账户，请参阅《*AWS 账户管理 参考指南》 AWS 账户中的[入门](https://docs.aws.amazon.com//accounts/latest/reference/getting-started.html)指南*。

## 先决条件
<a name="dotnet-linux-quickstart-prereq"></a>

为了遵循本指南中的步骤，您需要命令行终端或 Shell，以便运行命令。命令显示在列表中，以提示符（$）和当前目录名称（如果有）开头。

```
~/eb-project$ this is a command
this is output
```

在 Linux 和 macOS 中，您可使用您首选的 Shell 和程序包管理器。在 Windows 上，你可以[安装适用于 Linux 的 Windows 子系统](https://docs.microsoft.com/en-us/windows/wsl/install-win10)来获取 Ubuntu 和 Bash 的 Windows-integrated 版本。

### EB CLI
<a name="dotnet-linux-quickstart-prereq.ebcli"></a>

本教程使用 Elastic Beanstalk 命令行界面 (EB CLI)。有关安装和配置 EB CLI 的详细信息，请参阅 [使用设置脚本安装 EB CLI（推荐）](eb-cli3.md#eb-cli3-install) 和 [配置 EB CLI](eb-cli3-configuration.md)。

### .NET Core on Linux
<a name="dotnet-linux-quickstart-prereq.runtime"></a>

如果您的本地计算机上尚未安装 .NET SDK，则可以按照 [.NET 文档](https://learn.microsoft.com/en-us/dotnet/)网站上的[下载 .NET](https://dotnet.microsoft.com/en-us/download) 链接进行安装。

通过运行以下命令来验证您的 .NET SDK 安装。

```
~$ dotnet --info
```

## 步骤 1：创建 .NET Core on Linux 应用程序
<a name="dotnet-linux-quickstart-create-app"></a>

创建项目目录。

```
~$ mkdir eb-dotnetcore
~$ cd eb-dotnetcore
```

接下来，通过运行以下命令创建一个示例 Hello World 应用程序。

```
~/eb-dotnetcore$ dotnet new web --name HelloElasticBeanstalk
~/eb-dotnetcore$ cd HelloElasticBeanstalk
```

## 步骤 2：在本地运行应用程序
<a name="dotnet-linux-quickstart-run-local"></a>

运行以下命令以在本地运行您的应用程序。

```
~/eb-dotnetcore/HelloElasticBeasntalk$ dotnet run
```

输出应类似于以下文本。

```
Building...
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7294
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5052
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
```

**注意**  
在本地运行应用程序时，`dotnet` 命令会随机选择一个端口。在此示例中，端口为 5052。当您将应用程序部署到 Elastic Beanstalk 环境时，该应用程序将在端口 5000 上运行。

在您的网络浏览器中输入 URL 地址 `http://localhost:{{port}}`。对于这个具体的示例，命令是 `http://localhost:5052`。Web 浏览器应显示“Hello World\!”。

## 步骤 3：使用 EB CLI 部署 .NET Core on Linux 应用程序
<a name="dotnet-linux-quickstart-deploy"></a>

运行以下命令为此应用程序创建 Elastic Beanstalk 环境。

 

**创建环境并部署 .NET Core on Linux 应用程序**

1. 编译您的应用程序并将其发布到一个文件夹，以便部署到您即将创建的 Elastic Beanstalk 环境。

   ```
   ~$ cd eb-dotnetcore/HelloElasticBeanstalk
   ~/eb-dotnetcore/HelloElasticBeanstalk$ dotnet publish -o site
   ```

1. 导航到您刚刚发布应用程序的站点目录。

   ```
   ~/eb-dotnetcore/HelloElasticBeanstalk$ cd site
   ```

1. 使用 **eb init** 命令，初始化 EB CLI 存储库。

   请注意有关您在命令中指定的平台分支版本的以下详细信息：
   + 将以下命令中的 `{{x.y.z}}` 替换为平台分支 *AL2023 上的 .NET 6* 的最新版本。
   + 要查找最新的平台分支版本，请参阅《AWS Elastic Beanstalk 平台》**指南中的*支持的平台*页面的 [Linux 上的 .NET Core](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.dotnetlinux)。
   + 包含版本号的解决方案堆栈名称的示例是 `64bit-amazon-linux-2023-v3.1.1-running-.net-6`。在此示例中，分支版本为 *3.1.1*。

   ```
   ~eb-dotnetcore/HelloElasticBeanstalk/site$ eb init -p 64bit-amazon-linux-2023-v{{x.y.z}}-running-.net-6 dotnetcore-tutorial --region us-east-2
   Application dotnetcore-tutorial has been created.
   ```

   此命令创建一个名为 `dotnetcore-tutorial` 的应用程序，并配置您的本地存储库，以使用命令中指定的 .NET Core on Linux 平台版本创建环境。

1. （可选）再次运行 **eb init** 以配置默认密钥对，以便使用 SSH 连接到运行您的应用程序的 EC2 实例。

   ```
   ~eb-dotnetcore/HelloElasticBeanstalk/site$ eb init
   Do you want to set up SSH for your instances?
   (y/n): y
   Select a keypair.
   1) my-keypair
   2) [ Create new KeyPair ]
   ```

   如果您已有密钥对，请选择一个，或按提示创建一个。如果您没有看到提示或需要以后更改设置，请运行 **eb init -i**。

1. 创建环境并使用 **eb create** 将应用程序部署到此环境中。Elastic Beanstalk 会自动为您的应用程序生成一个 zip 文件，并在端口 5000 上启动该文件。

   修改为 

   ```
   ~eb-dotnetcore/HelloElasticBeanstalk/site$ eb create dotnet-tutorial
   ```

   Elastic Beanstalk 大约需要五分钟来创建您的环境。

## 步骤 4：在 Elastic Beanstalk 上运行应用程序
<a name="dotnet-linux-quickstart-run-eb-ap"></a>

当创建环境的过程完成后，使用 **eb open** 打开您的网站。

```
~eb-dotnetcore/HelloElasticBeanstalk/site$ eb open
```

恭喜您！您已使用 Elastic Beanstalk 部署了 .NET Core on Linux 应用程序！这将使用为应用程序创建的域名打开一个浏览器窗口。

## 第 5 步：清理
<a name="go-tutorial-cleanup"></a>

应用程序使用完毕时，您可以终止您的环境。Elastic Beanstalk AWS 会终止与您的环境关联的所有资源。

要使用 EB CLI 终止您的 Elastic Beanstalk 环境，请运行以下命令。

```
~eb-dotnetcore/HelloElasticBeanstalk/site$ eb terminate
```

## AWS 您的应用程序的资源
<a name="dotnet-linux-quickstart-eb-resources"></a>

您刚刚创建了一个单实例应用程序。它可用作带有单个 EC2 实例的简单示例应用程序，因此不需要负载平衡或自动扩缩。对于单实例应用程序，Elastic Beanstalk 会创建以下资源： AWS 
+ **EC2 实例** - 配置来在您选择的平台上运行 Web 应用程序的 Amazon EC2 虚拟机。

  各平台运行一组不同的软件、配置文件和脚本以支持特定的语言版本、框架、Web 容器或其组合。大多数平台使用 Apache 或 nginx 作为在 Web 应用程序前处理 Web 流量的反向代理，向其转发请求、提供静态资产以及生成访问和错误日志。
+ **实例安全组** - 配置为允许端口 80 上的传入流量的 Amazon EC2 安全组。通过此资源，HTTP 流量可以从负载均衡器到达运行您的 Web 应用程序的 EC2 实例。默认情况下，其他端口不允许流量进入。
+ **Amazon S3 存储桶** – 使用 Elastic Beanstalk 时创建的源代码、日志和其他构件的存储位置。
+ **Amazon CloudWatch CloudWatch 警**报 — 两个警报，用于监控您环境中实例的负载，并在负载过高或过低时触发。警报触发后，您的 Auto Scaling 组会扩展或收缩以进行响应。
+ **CloudFormation 堆栈** — Elastic CloudFormation Beanstalk 用于在您的环境中启动资源并传播配置更改。这些资源在您可通过 [CloudFormation 控制台](https://console.aws.amazon.com/cloudformation)查看的模板中定义。
+  **域名**-以表单形式路由到您的 Web 应用程序的域名*{{subdomain}}。 {{region}}.elasticbeanstalk.com。*

Elastic Beanstalk 管理所有这些资源。当您终止环境时，Elastic Beanstalk 会终止其包含的所有资源。

## 后续步骤
<a name="dotnet-linux-quickstart-next-steps"></a>

有了运行应用程序的环境以后，您随时可以部署新的应用程序版本或不同的应用程序。部署新应用程序版本非常快，因为不需要配置或重新启动 EC2 实例。您还可以使用 Elastic Beanstalk 控制台探索新环境。有关详细步骤，请参阅本指南*入门*一章中的[探索您的环境](GettingStarted.md#GettingStarted.Explore)。

部署一到两个示例应用程序并准备好开始在本地开发和运行 .NET Core on Linux 应用程序后，请参阅 [为 Elastic Beanstalk 设置 .NET core on Linux 开发环境](dotnet-linux-devenv.md)。

## 使用 Elastic Beanstalk 控制台进行部署
<a name="dotnet-linux-quickstart-console"></a>

您还可以使用 Elastic Beanstalk 控制台来启动示例应用程序。有关详细步骤，请参阅本指南*入门*一章中的[创建示例应用程序](GettingStarted.md#GettingStarted.CreateApp)。