

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

# 使用 Elastic Beanstalk .NET core on Linux 平台
<a name="dotnet-linux-platform"></a>

本主题介绍如何在 Elastic Beanstalk 上配置、构建和运行 .NET core on Linux 应用程序。

Amazon Elastic Beanstalk 支持在 Linux 操作系统上运行的不同.NET Core 框架版本的多个平台分支。有关完整列表，请参阅 *Amazon Elastic Beanstalk 平台*中的 [.NET core on Linux](https://docs.amazonaws.cn/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.dotnetlinux) 以获取完整列表。

有关扩展 Elastic Beanstalk 基于 Linux 的平台的各种方法的详细信息，请参阅 [扩展 Elastic Beanstalk Linux 平台](platforms-linux-extend.md)。

## .NET Core on Linux 平台注意事项
<a name="dotnet-linux-platform.intro"></a>

### 代理服务器
<a name="dotnet-linux-platform.proxy"></a>

Elastic Beanstalk .NET Core on Linux 平台包括一个可将请求转发到应用程序的反向代理。默认情况下，Elastic Beanstalk 使用 [NGINX](https://www.nginx.com/) 作为代理服务器。您可以选择不使用代理服务器，并将 [Kestrel](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel) 配置为 Web 服务器。默认情况下，Kestrel 包含在 ASP.NET Core 项目模板中。

### 应用程序结构
<a name="dotnet-linux-platform.publish-apps"></a>

您可以发布使用 Elastic Beanstalk 提供的 .NET Core 运行时的*运行时依赖*应用程序。您还可以发布包含 .NET Core 运行时和源代码包中的应用程序依赖项的*自包含*应用程序。要了解更多信息，请参阅[捆绑适用于 .NET Core on Linux Elastic Beanstalk 平台的应用程序](dotnet-linux-platform-bundle-app.md)。

### 平台配置
<a name="dotnet-linux-platform.configuration"></a>

要配置在您的环境中的服务器实例上运行的进程，请在您的源包中包含一个可选的 [Procfile](dotnet-linux-procfile.md)。如果您的源代码包中有多个应用程序，则 `Procfile` 是必需的。

建议您始终在源代码包中将 `Procfile` 与应用程序一起提供。通过这种方式，您可以精确地控制 Elastic Beanstalk 为应用程序运行的进程。

Elastic Beanstalk 控制台中提供了配置选项，可用于[修改运行环境的配置](environment-configuration-methods-after.md)。要避免在终止环境时丢失环境配置，可以使用[保存的配置](environment-configuration-savedconfig.md)来保存您的设置，并在以后将这些设置应用到其他环境。

要保存源代码中的设置，您可以包含[配置文件](ebextensions.md)。在您每次创建环境或部署应用程序时，会应用配置文件中的设置。您还可在部署期间使用配置文件来安装程序包、运行脚本以及执行其他实例自定义操作。

在 Elastic Beanstalk 控制台中应用的设置会覆盖配置文件中的相同设置（如果存在）。这让您可以在配置文件中包含默认设置，并使用控制台中的特定环境设置加以覆盖。有关优先顺序和其他设置更改方法的更多信息，请参阅[配置选项](command-options.md)。

## 配置 .NET Core on Linux 环境
<a name="dotnet-linux-options"></a>

您可以通过 .NET Core on Linux 平台设置微调 Amazon EC2 实例的行为。您可以使用 Elastic Beanstalk 控制台编辑 Elastic Beanstalk 环境的 Amazon EC2 实例配置。

使用 Elastic Beanstalk 控制台启用到 Amazon S3 的日志轮换，并配置应用程序可从环境中读取的变量。

**使用 Elastic Beanstalk 控制台配置 .NET Core on Linux 环境**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

### 日志选项
<a name="dotnet-linux-logs"></a>

**日志选项**部分有两个设置：
+ **Instance profile**（实例配置文件）– 指定有权访问与应用程序关联的 Amazon S3 存储桶的实例配置文件。
+ **Enable log file rotation to Amazon S3**（启用到 Amazon S3 的日志轮换）– 指定是否将应用程序的 Amazon EC2 实例的日志文件复制到与应用程序关联的 Amazon S3 存储桶。

### 环境属性
<a name="dotnet-linux-options-properties"></a>

在 **Environment Properties**（环境属性）部分中，您可以在运行应用程序的 Amazon EC2 实例上指定环境配置设置。环境属性会以密钥值对的形式传递到应用程序。

在运行于 Elastic Beanstalk 中的 .NET Core on Linux 内，可通过使用 `Environment.GetEnvironmentVariable("variable-name")` 访问环境变量。例如，可以使用以下代码将名为 `API_ENDPOINT` 的属性读取到某个变量。

```
string endpoint = Environment.GetEnvironmentVariable("API_ENDPOINT");
```

参阅 [环境变量和其他软件设置](environments-cfg-softwaresettings.md) 了解更多信息。

## .NET Core on Linux 配置命名空间
<a name="dotnet-linux-namespace"></a>

您可以使用[配置文件](ebextensions.md)设置配置选项并在部署期间执行其他实例配置。配置选项可以[特定于平台](command-options-specific.md)，也可以应用于整个 Elastic Beanstalk 服务中的[所有平台](command-options-general.md)。配置选项被组织到*命名空间*中。

除了[所有 Elastic Beanstalk 环境支持的选项](command-options-general.md)外，.NET Core on Linux 平台还支持以下命名空间中的选项：
+ `aws:elasticbeanstalk:environment:proxy` – 选择使用 NGINX 或不使用代理服务器。有效值为 `nginx` 或 `none`。

以下示例配置文件展示了对特定于 .NET Core on Linux 的配置选项的使用：

**Example .ebextensions/proxy-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:environment:proxy:
    ProxyServer: none
```

Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件之外，您还可使用控制台、保存的配置、EB CLI 或 Amazon CLI来配置选项。请参阅[配置选项](command-options.md)了解更多信息。