

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

# Linux 操作系统：
<a name="workinginstances-os-linux"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

OpsWorks Stacks 支持以下 Linux 操作系统的 64 位版本。
+ [Amazon Linux](https://aws.amazon.com/amazon-linux-ami/faqs/)和 [Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/)（请参阅 [OpsWorks Stacks 控制台](https://console.aws.amazon.com/opsworks/)以了解当前支持的版本）
+  [Ubuntu 20.04 LTS](https://wiki.ubuntu.com/FocalFossa/ReleaseNotes) 
+ [CentOS 7](https://docs.centos.org/en-US/centos/install-guide/Revision_History/)
+ [Red Hat Enterprise Linux 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/)

您也可以 AMIs根据这些操作系统使用[自定义](workinginstances-custom-ami.md)。

关于 Linux 实例的一些常规说明：

**支持的包版本**  
支持的版本和包的补丁级别 (如 Ruby) 取决于操作系统和版本，如后面的部分中所述。

**更新**  
默认情况下， OpsWorks Stacks 通过自动调用`yum update`或在实例启动`apt-get update`后自动调用来确保 Linux 实例安装最新的安全补丁。要禁用自动更新，请使用[CreateInstance](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateInstance.html)、[UpdateInstance[CreateLayer](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateLayer.html)](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateInstance.html)、或[UpdateLayer](https://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateLayer.html)操作（或等效的 AW [S 开发工具包](https://aws.amazon.com/tools/)方法或 AWS [CLI](https://aws.amazon.com/documentation/cli/) 命令）将`InstallUpdatesOnBoot`参数设置为。`false`  
为避免服务中断， OpsWorks Stacks 不会在实例联机后自动安装更新。您可以通过运行 [Upgrade Operating System 堆栈命令](workingstacks-commands.md)，随时手动更新联机实例的操作系统。有关如何管理安全更新的更多信息，请参阅[管理安全更新](workingsecurity-updates.md)。  
要更好地控制 OpsWorks Stacks 如何更新您的实例，请基于支持的操作系统之一创建自定义 AMI。例如，使用自定义， AMIs 您可以指定实例上安装了哪些软件包版本。每个 Linux 发行版都具有不同的支持时间表和程序包合并策略，因此，您应当考虑哪种方法最适合您的要求。有关更多信息，请参阅 [使用自定义 AMIs](workinginstances-custom-ami.md)。

**主机文件**  
每个在线实例都有一个将 IP 地址映射到主机名的`/etc/hosts`文件。 OpsWorks 堆栈包含每个实例`hosts`文件中所有堆栈在线实例的公用地址和私有地址。例如，假设您有一个堆栈，该堆栈拥有两个 Node.js 应用程序服务器实例（nodejs-app1 和 nodejs-app2）以及一个 MySQL 实例 (db-master1)。nodejs-app1 实例的 `hosts` 文件将如以下示例所示，其他实例将拥有相似的 `hosts` 文件。  

```
...
# OpsWorks Layer State
192.0.2.0 nodejs-app1.localdomain nodejs-app1
10.145.160.232 db-master1
198.51.100.0 db-master1-ext
10.243.77.78 nodejs-app2
203.0.113.0 nodejs-app2-ext
10.84.66.6 nodejs-app1
192.0.2.0 nodejs-app1-ext
```

**OpsWorks 堆栈代理代理支持**  
Chef 11.10 及更高版本 OpsWorks 堆栈的堆栈代理包括对代理服务器的基本支持，这些服务器通常与隔离服务器一起使用。 VPCs要启用代理服务器支持，实例必须拥有为 HTTP 和 HTTPS 流量提供适当设置的 `/etc/environment` 文件。该文件应当如下所示，其中，您可以将突出显示的文本替换为您的代理服务器的 URL 和端口：  

```
http_proxy="http://myproxy.example.com:8080/"
https_proxy="http://myproxy.example.com:8080/"
no_proxy="169.254.169.254"
```
要启用代理支持，我们建议创建[自定义 AMI ](workinginstances-custom-ami.md) (其中包括一个合适的 `/etc/environment` 文件)，然后使用该 AMI 创建您的实例。  
我们不建议使用自定义配方在您的实例上创建`/etc/environment`文件。 OpsWorks Stacks 需要在设置过程的早期，也就是任何自定义配方执行之前的代理服务器数据。

**Topics**
+ [Amazon Linux](#workinginstances-os-amazon)
+ [Ubuntu LTS](#workinginstances-os-linux-ubuntu)
+ [CentOS](#workinginstances-os-linux-centos)
+ [Red Hat Enterprise Linux](#workinginstances-os-linux-rhel)

## Amazon Linux
<a name="workinginstances-os-amazon"></a>

OpsWorks Stacks 支持 64 位版本的亚马逊 Linux 和亚马逊 Linux 2。除了定期更新和补丁外，Amazon Linux 大约每六个月还会发布新版本，新版本中可能涉及重大更改。当您创建堆栈或新的实例时，您必须指定要使用哪一个 Amazon Linux 版本。当 AWS 发布新版本后，您的实例将继续运行指定的版本，直到您明确更改该版本。新 Amazon Linux 版本发布后，有为期四周的迁移周期，在此周期内，AWS 将继续提供针对旧版本的定期更新。迁移周期结束后，您的实例仍可以继续运行旧版本，但 AWS 不再提供更新。有关更多信息，请参阅 [Amazon Linux AMI FAQs](https://aws.amazon.com/amazon-linux-ami/faqs/#lock)。

当新的 Amazon Linux 版本发布后，我们建议您在迁移周期内更新到新版本，以便您的实例继续获得安全更新。更新您的生产堆栈的实例之前，我们建议您启动一个新的实例，并验证您的应用程序可以在新版本上正常运行。然后，您可以更新生产堆栈实例。

**注意**  
默认情况下， AMIs 基于 Amazon Linux 的自定义版本在新版本发布时会自动更新到新版本。建议的做法是：将您的自定义 AMI 保持在特定的 Amazon Linux 版本，这样，您就可以推迟更新，直到您测试了新版本。有关更多信息，请参阅[如何将我的 AMI 保持在特定版本？](https://aws.amazon.com/amazon-linux-ami/faqs/#lock)  
如果您使用 CloudFormation 模板创建包含运行 Amazon Linux 的实例的堆栈，则模板应明确指定亚马逊 Linux 版本。具体而言，如果您的模板指定 `Amazon Linux`，则实例将继续运行版本 2016.09。有关更多信息，请参阅[AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html)和[AWS::OpsWorks::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html)。

要更新实例的 Amazon Linux 版本，请执行以下操作之一：
+ 对于联机实例，运行 [**Upgrade Operating System** 堆栈命令](workingstacks-commands.md)。

  当有新的 Amazon Linux 版本可用时，**Instances** 和 **Stack** 页面将显示一个通知，其中包含一个可让您转到 **Run Command** 页面的链接。然后，您可以运行 **Upgrade Operating System** 升级您的实例。
+ 对于由 Amazon Elastic Block Store 支持（由 EBS 支持）的脱机实例，启动实例并运行**升级操作系统**，如前面的说明所述。
+ 对于由实例存储支持的脱机实例 (包括基于时间和基于负载的实例)，[编辑实例的 **Operating system** 设置](workinginstances-properties.md)以指定新版本。

  OpsWorks 堆栈在实例重启时会自动将其更新到新版本。


**Amazon Linux：受支持的 Node.js 版本**  

| Amazon Linux 版本 | Node.js 版本 | 
| --- | --- | 
|  <pre>2</pre>  |  <pre>(Not applicable to operating systems that are available for Chef 12 and higher stacks only)</pre>  | 
|  <pre>2018.03</pre>  |  <pre>0.12.18</pre>  | 
|  <pre>2017.09</pre>  |  <pre>0.12.18</pre>  | 
|  <pre>2017.03</pre>  |  <pre>0.12.18</pre>  | 
|  <pre>2016.09</pre>  |  <pre>0.12.18<br />0.12.17<br />0.12.16<br />0.12.15</pre>  | 
|  <pre>2016.03</pre>  |  <pre>0.12.18<br />0.12.17<br />0.12.16<br />0.12.15<br />0.12.14<br />0.12.13<br />0.12.12<br />0.12.10</pre>  | 


**Amazon Linux：受支持的 Chef 版本**  

| Chef 版本 | 受支持的 Amazon Linux 版本 | 
| --- | --- | 
|  <pre>12</pre>  |  <pre>Amazon Linux 2<br />Amazon Linux 2018.03<br />Amazon Linux 2017.09<br />Amazon Linux 2017.03<br />Amazon Linux 2016.09<br />Amazon Linux 2016.03</pre>  | 
|  <pre>11.10</pre>  |  <pre>Amazon Linux 2018.03<br />Amazon Linux 2017.09<br />Amazon Linux 2017.03<br />Amazon Linux 2016.09<br />Amazon Linux 2016.03</pre>  | 
|  <pre>11.4 (deprecated)</pre>  |  <pre>Amazon Linux 2016.09<br />Amazon Linux 2016.03</pre>  | 

**重要**  
更新 t1.micro 实例之前，请确保它们拥有临时交换文件 `/var/swapfile`。Chef 0.9 堆栈上的 t1.micro 实例没有交换文件。对于 Chef 11.4 和 Chef 11.10 堆栈，新版本的实例代理会自动为 t1.micro 实例创建交换文件。但是，此更改在几周之后引入，因此，您应当检查大约在 2014 年 3 月 24 日之前创建的实例上是否存在 `/var/swapfile`。  
对于缺少交换文件的 t1.micro 实例，您可以根据以下方法创建一个交换文件：  
对于 Chef 11.10 及更高版本的堆栈，创建新的 t1.micro 实例，这些实例自动拥有一个交换文件。
对于 Chef 0.9 堆栈，以根用户的身份对每个实例运行以下命令。  

  ```
  dd if=/dev/zero of=/var/swapfile bs=1M count=256
   mkswap /var/swapfile
   chown root:root /var/swapfile
   chmod 0600 /var/swapfile
   swapon /var/swapfile
  ```
如果您不希望创建新实例，还可以在 Chef 11.10 和更高版本上使用这些命令。

## Ubuntu LTS
<a name="workinginstances-os-linux-ubuntu"></a>

Ubuntu 大约每两年发布一次新的 Ubuntu LTS 版本，并为每个版本提供大约五年的支持。Ubuntu 在整个操作系统支持期间提供安全补丁和更新。有关更多信息，请参阅 [LTS - Ubuntu Wiki](https://wiki.ubuntu.com/LTS)。
+ 您不能将现有 Ubuntu 实例更新到更新版本的 Ubuntu。

  您必须[创建新的 Ubuntu 实例](workinginstances-add.md)，并[删除原来的实例](workinginstances-delete.md)。
+ 对于 Chef 12 及更高版本的堆栈，仅支持 Ubuntu 20.04 LTS。

## CentOS
<a name="workinginstances-os-linux-centos"></a>

OpsWorks [Stacks 支持 64 位版本的 CentOS 7。](https://docs.centos.org/en-US/docs/)最开始受支持的版本是 CentOS 7，CentOS 大约每两年发布一次新版本。

当你在 CentOS 堆栈中启动一个新实例时， OpsWorks Stacks 会自动安装最新的 CentOS 版本。由于在新的 CentOS 次要版本发布时， OpsWorks Stacks 不会自动更新现有实例上的操作系统，因此新创建的实例可能会比堆栈的现有实例获得更新的版本。要使版本在您的堆栈中保持一致，您可以按照以下方法将您的现有实例更新到当前的 CentOS 版本：
+ 对于联机实例，运行 [**Upgrade Operating System** 堆栈命令](workingstacks-commands.md)，该命令将对指定实例运行 `yum update` 以将其更新到当前版本。

  当有新的 CentOS 7 次要版本可用时，**Instances** 和 **Stack** 页面将显示一个通知，其中包含一个可让您转到 **Run Command** 页面的链接。然后，您可以运行 **Upgrade Operating System** 升级您的实例。
+ 对于由 Amazon EBS 支持的脱机实例，启动实例并运行**升级操作系统**，如上一列表项中所述。
+ 对于离线实例存储支持的实例， OpsWorks Stacks 会在实例重启时自动安装新版本。


**CentOS：受支持的 Chef 版本**  

| Chef 版本 | 受支持的 CentOS 版本 | 
| --- | --- | 
|  <pre>12</pre>  |  <pre>CentOS 7</pre>  | 
|  <pre>11.10</pre>  |  <pre>(None supported)</pre>  | 
|  <pre>11.4 (deprecated)</pre>  |  <pre>(None supported)</pre>  | 

**注意**  
OpsWorks Stacks 支持 CentOS 实例的 Apache 2.4。

## Red Hat Enterprise Linux
<a name="workinginstances-os-linux-rhel"></a>

OpsWorks Stacks 支持 64 位版本的[红帽企业 Linux 7 (RHEL 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/))。最初支持的版本是 RHEL 7.1，Red Hat 大约每 9 个月发布一次新的次要版本。次要版本应当与 RHEL 7.0 兼容。有关更多信息，请参阅[生命周期和更新策略](https://access.redhat.com/support/policy/update_policies)。

当您启动新实例时， OpsWorks Stacks 会自动安装当前的 RHEL 7 版本。由于在发布新的 RHEL 7 次要版本时， OpsWorks Stacks 不会自动更新现有实例上的操作系统，因此新创建的实例可能会收到比堆栈现有实例更新的版本。要使版本在您的堆栈中保持一致，您可以按照以下方法将您的现有实例更新到当前的 RHEL 7 版本：
+ 对于联机实例，运行 [**Upgrade Operating System** 堆栈命令](workingstacks-commands.md)，该命令将对指定实例运行 `yum update` 以将其更新到当前版本。

  当有新的 RHEL 7 版本可用时，**Instances** 和 **Stack** 页面将显示一个通知，其中包含一个可让您转到 **Run Command** 页面的链接。然后，您可以运行 **Upgrade Operating System** 升级您的实例。
+ 对于由 Amazon EBS 支持的脱机实例，启动实例并运行**升级操作系统**，如上一列表项中所述。
+ 对于离线实例存储支持的实例， OpsWorks Stacks 会在实例重启时自动安装新版本。


**Red Hat Enterprise Linux：受支持的 Node.js 版本**  

| RHEL 版本 | Node.js 版本 | 
| --- | --- | 
|  <pre>7</pre>  |  <pre>(Node.js versions only apply to Chef 11.10 stacks)<br />0.8.19<br />0.8.26<br />0.10.11<br />0.10.21<br />0.10.24<br />0.10.25<br />0.10.27<br />0.10.29<br />0.10.40<br />0.12.10<br />0.12.12<br />0.12.13<br />0.12.15</pre>  | 


**Red Hat Enterprise Linux：受支持的 Chef 版本**  

| Chef 版本 | 受支持的 RHEL 版本 | 
| --- | --- | 
|  <pre>12</pre>  |  <pre>Red Hat Enterprise Linux 7</pre>  | 
|  <pre>11.10</pre>  |  <pre>Red Hat Enterprise Linux 7</pre>  | 
|  <pre>11.4 (deprecated)</pre>  |  <pre>(None supported)</pre>  | 

所有早于 0.10.40 的 Node.js 版本均已弃用。0.12.7 和 0.12.9 也已弃用。

**注意**  
OpsWorks Stacks 支持 RHEL 7 实例的 Apache 2.4。