将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2
Amazon Elastic Beanstalk 将 Amazon Linux 2
如果您的 Elastic Beanstalk 应用程序基于 Amazon Linux AMI 平台分支,请使用此页面以了解如何将应用程序的环境迁移到 Amazon Linux 2。这两代平台不能保证与现有应用程序向后兼容。此外,即使您的应用程序代码成功部署到新平台版本,其行为和性能也可能会因操作系统和运行时而异。虽然 Amazon Linux AMI 和 Amazon Linux 2 使用的是相同的 Linux 内核,但它们在初始化系统、libc
版本、编译器工具链和各种软件包方面有所不同。我们还更新了特定于平台的运行时版本、构建工具和其他依赖项。因此,我们建议您花些时间在开发环境中彻底测试您的应用程序,并进行任何必要的调整。
当您准备开始生产时,Elastic Beanstalk 需要蓝/绿部署才能执行升级。有关平台更新策略的详细信息,请参阅 更新 Elastic Beanstalk 环境的平台版本。
Elastic Beanstalk 控制台为许多已弃用的 Amazon Linux AMI 平台分支提供了特定于平台的迁移提示。当您查看使用这些已弃用的平台分支之一的环境的仪表板,或在创建新环境时选择其中一个分支时,您可以看到此信息。在这两种情况下,控制台都会显示一条警告,其中包含信息 (Info) 链接。要查看此平台的迁移信息,请选择信息 (Info)。将打开一个帮助面板,并显示相关信息。
所有 Linux 平台的注意事项
下表讨论了在规划将应用程序迁移到 Amazon Linux 2 时应注意的事项。这些注意事项适用于任何 Elastic Beanstalk Linux 平台,而不管平台采用何种特定的编程语言或应用程序服务器。
领域 | 更改和信息 |
---|---|
配置文件 |
在 Amazon Linux 2 平台上,您可以像以前一样使用配置文件,并且所有部分的工作方式相同。但是,某些特定设置的工作方式可能与早期 Amazon Linux AMI 平台上的工作方式不同。例如:
我们建议使用平台挂钩在环境实例上运行自定义代码。您仍可以在 对于需要引用 |
平台挂钩 |
Amazon Linux 2 平台引入了一种新的方法来扩展您的环境平台,即将可执行文件添加到环境实例上的挂钩目录中。对于以前的 Linux 平台版本,您可能使用了自定义平台挂钩。这些挂钩不是为托管平台设计的,因此不受支持,但在某些情况下使用可能会有效。对于 Amazon Linux 2 平台版本,自定义平台挂钩不起作用。应当将所有挂钩迁移到新的平台挂钩。有关详细信息,请在 扩展 Elastic Beanstalk Linux 平台 中展开平台挂钩部分。 |
支持的代理服务器 |
Amazon Linux 2 平台版本与在 Amazon Linux AMI 平台版本中支持的每个平台支持相同的反向代理服务器。所有 Amazon Linux 2 平台版本都使用 nginx 作为其默认的反向代理服务器。Tomcat、Node.js、PHP 和 Python 平台也支持将 Apache HTTPD 作为替代方案。所有平台都以一致的方式启用代理服务器配置,如本节所述。但是,配置代理服务器与其在 Amazon Linux AMI 上时略有不同。以下是所有平台的区别:
有关特定于平台的代理配置更改,请参阅平台特定注意事项。有关 Amazon Linux 2 平台上的代理配置的信息,请在扩展 Elastic Beanstalk Linux 平台中展开反向代理配置部分。 |
实例配置文件 |
Amazon Linux 2 平台需要配置实例配置文件。如果没有该配置文件,环境创建可能会暂时成功,但是当需要实例配置文件的操作开始失败时,该环境可能会在创建后很快出现错误。有关详细信息,请参阅管理 Elastic Beanstalk 实例配置文件。 |
增强型运行状况 |
Amazon Linux 2 平台版本默认启用增强型运行状况。如果您未使用 Elastic Beanstalk 控制台创建环境,则该功能是一种更改。无论平台版本如何,默认情况下,该控制台尽可能启用增强型运行状况。有关详细信息,请参阅增强型运行状况报告和监控。 |
自定义 AMI |
如果您的环境使用自定义 AMI,请根据 Amazon Linux 2 为使用 Elastic Beanstalk Amazon Linux 2 平台的新环境创建新 AMI。 |
自定义平台 |
Amazon Linux 2 平台版本的托管 AMI 不支持自定义平台。 |
平台特定注意事项
本节讨论特定 Elastic Beanstalk Linux 平台特有的迁移注意事项。
下表中列出了 Docker 平台中 Amazon Linux 2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
存储 |
Elastic Beanstalk 将 Docker 配置为使用存储驱动程序 对于 Amazon Linux AMI,如果您使用 |
私有存储库身份验证 |
当您提供 Docker 生成的身份验证文件以连接到私有存储库时,您不再需要将其转换为 Amazon Linux AMI Docker 平台版本需要的旧格式。Amazon Linux 2 Docker 平台版本支持新格式。有关详细信息,请参阅使用私有存储库中的映像。 |
代理服务器 |
Amazon Linux 2 Docker 平台版本不支持不在代理服务器后面运行的独立容器。在 Amazon Linux AMI Docker 平台版本上,这一点过去可以通过 |
下表列出了 Go 平台中 Amazon Linux 2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
端口传递 |
在 Amazon Linux 2 平台上,Elastic Beanstalk 不会通过 |
下表列出了 Java SE 平台中的 Corretto 平台分支的迁移信息。
领域 | 更改和信息 |
---|---|
Corretto 与 OpenJDK |
为了实现标准版 (Java SE) Java 平台,Amazon Linux 2 平台分支使用 Amazon Corretto |
构建工具 |
Amazon Linux 2 平台具有较新版本的构建工具: |
JAR 文件处理 |
在 Amazon Linux 2 平台上,如果源包(ZIP 文件)包含单个 JAR 文件而不包含其他文件,Elastic Beanstalk 不再将 JAR 文件重命名为 |
端口传递 |
在 Amazon Linux 2 平台上,Elastic Beanstalk 不会通过 |
Java 7 |
Elastic Beanstalk 不支持 Amazon Linux 2 Java 7 平台分支。如果您有 Java 7 应用程序,请将其迁移到 Corretto 8 或 Corretto 11。 |
下表列出了 Tomcat 平台中的 Amazon Linux 2 平台版本的迁移信息。
领域 | 更改和信息 | ||||||
---|---|---|---|---|---|---|---|
配置选项 |
在 Amazon Linux 2 平台版本上,Elastic Beanstalk 在
Amazon Linux 2 平台版本不支持 |
||||||
应用程序路径。 |
在 Amazon Linux 2 平台上,您的环境的 Amazon EC2 实例上的应用程序目录路径为 |
下表列出了 Node.js 平台中 Amazon Linux 2 平台版本的迁移信息。
领域 | 更改和信息 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
已安装的 Node.js 版本 |
在 Amazon Linux 2 平台上,Elastic Beanstalk 维护多个 Node.js 平台分支,并且仅在每个平台版本上安装与平台分支对应的最新版本的 Node.js 主版本。例如,Node.js 12 平台分支中的每个平台版本在默认情况下仅安装 Node.js 12.x.y。在 Amazon Linux AMI 平台版本上,我们在每个平台版本上安装了多个 Node.js 版本的多个版本,并且只维护一个平台分支。 选择与您的应用程序所需的 Node.js 主版本对应的 Node.js 平台分支。 |
||||||||||
Apache HTTPD 日志文件名 |
在 Amazon Linux 2 平台上,如果您使用 Apache HTTPD 代理服务器,则 HTTPD 日志文件名为 有关所有平台的日志文件名和位置的详细信息,请参阅 Elastic Beanstalk 如何设置 CloudWatch Logs。 |
||||||||||
配置选项 |
在 Amazon Linux 2 平台上,Elastic Beanstalk 不支持
|
下表列出了 PHP 平台中 Amazon Linux 2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
PHP 文件处理 |
在 Amazon Linux 2 平台上,将通过 PHP-FPM(CGI 进程管理器)处理 PHP 文件。在 Amazon Linux AMI 平台上,我们使用的是 mod_php(一个 Apache 模块)。 |
代理服务器 |
Amazon Linux 2 PHP 平台版本同时支持 nginx 和 Apache HTTPD 代理服务器。默认为 nginx。 Amazon Linux AMI PHP 平台版本仅支持 Apache HTTPD。如果您添加了自定义 Apache 配置文件,则可以将 |
下表列出了 Python 平台中的 Amazon Linux 2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
WSGI 服务器 |
在 Amazon Linux 2 平台上,Gunicorn 此外,您可以使用 |
应用程序路径。 |
在 Amazon Linux 2 平台上,您的环境的 Amazon EC2 实例上的应用程序目录路径为 |
代理服务器 |
Amazon Linux 2 Python 平台版本同时支持 nginx 和 Apache HTTPD 代理服务器。默认为 nginx。 Amazon Linux AMI Python 平台版本仅支持 Apache HTTPD。如果您添加了自定义 Apache 配置文件,则可以将 |
下表列出了 Ruby 平台中的 Amazon Linux 2 平台版本的迁移信息。
领域 | 更改和信息 |
---|---|
已安装 Ruby 版本 |
在 Amazon Linux 2 平台上,Elastic Beanstalk 仅在每个平台版本上安装与平台分支对应的单个 Ruby 版本的最新版本。例如,Ruby 2.6 平台分支中的每个平台版本仅安装了 Ruby 2.6.x。在 Amazon Linux AMI 平台版本上,我们安装了多个 Ruby 版本的最新版本,例如 2.4.x、2.5.x 和 2.6.x。 如果您的应用程序使用的 Ruby 版本与您正在使用的平台分支不对应,建议您切换到具有适合您的应用程序的 Ruby 版本的平台分支。 |
应用程序服务器 |
在 Amazon Linux 2 平台上,Elastic Beanstalk 仅在所有 Ruby 平台版本上安装 Puma 应用程序服务器。您可以使用 在 Amazon Linux AMI 平台上,对于每个 Ruby 版本,我们支持两种平台分支 - 一种具有 Puma 应用程序服务器,另一种具有 Passenger 应用服务器。如果您的应用程序使用 Passenger,则可以将 Ruby 环境配置为安装和使用 Passenger。 有关更多信息以及示例,请参阅 使用 Elastic Beanstalk Ruby 平台。 |