

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

# QuickStart: 将 PHP 应用程序部署到 Elastic Beanstalk
<a name="php-quickstart"></a>

在以下教程中，您将学习如何使用 EB CLI 创建示例 PHP 应用程序并将其部署到 AWS Elastic Beanstalk 环境中。

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

**Topics**
+ [你的 AWS 账户](#php-quickstart-aws-account)
+ [先决条件](#php-quickstart-prereq)
+ [步骤 1：创建 PHP 应用程序](#php-quickstart-create-app)
+ [步骤 2：在本地运行应用程序](#php-quickstart-run-local)
+ [步骤 3：初始化并部署 PHP 应用程序](#php-quickstart-deploy)
+ [步骤 4：浏览您的云应用程序](#php-quickstart-run-eb-ap)
+ [步骤 5：更新和重新部署您的应用程序](#php-quickstart-run-eb-ap)
+ [清理](#php-quickstart-cleanup)
+ [后续步骤](#php-quickstart-next-steps)

## 你的 AWS 账户
<a name="php-quickstart-aws-account"></a>

如果你还不是 AWS 客户，则需要创建一个 AWS 账户才能使用 Elastic Beanstalk。

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

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

如果您没有 AWS 账户，请完成以下步骤来创建一个。

**报名参加 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册时 AWS 账户，就会创建*AWS 账户根用户*一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 注册过程完成后会向您发送一封确认电子邮件。您可以随时前往 [https://aws.amazon.com/](https://aws.amazon.com/)并选择 “**我的账户”，查看您当前的账户活动并管理您的账户**。

#### 创建具有管理访问权限的用户
<a name="create-an-admin"></a>

注册后，请保护您的安全 AWS 账户 AWS 账户根用户 AWS IAM Identity Center，启用并创建管理用户，这样您就不会使用 root 用户执行日常任务。

**保护你的 AWS 账户根用户**

1.  选择 **Root 用户**并输入您的 AWS 账户 电子邮件地址，以账户所有者的身份登录。[AWS 管理控制台](https://console.aws.amazon.com/)在下一页上，输入您的密码。

   要获取使用根用户登录方面的帮助，请参阅《AWS 登录 用户指南》**中的 [Signing in as the root user](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 为您的根用户启用多重身份验证（MFA）。

   有关说明，请参阅 I [A *M* 用户指南中的为 AWS 账户 根用户启用虚拟 MFA 设备（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**创建具有管理访问权限的用户**

1. 启用 IAM Identity Center。

   有关说明，请参阅**《AWS IAM Identity Center 用户指南》中的[启用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，为用户授予管理访问权限。

   有关使用 IAM Identity Center 目录 作为身份源的教程，请参阅《[用户*指南》 IAM Identity Center 目录中的使用默认设置配置AWS IAM Identity Center 用户*访问权限](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理访问权限的用户身份登录**
+ 要使用您的 IAM Identity Center 用户身份登录，请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录 URL。

  有关使用 IAM Identity Center 用户[登录的帮助，请参阅*AWS 登录 用户指南*中的登录 AWS 访问门户](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**将访问权限分配给其他用户**

1. 在 IAM Identity Center 中，创建一个权限集，该权限集遵循应用最低权限的最佳做法。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 将用户分配到一个组，然后为该组分配单点登录访问权限。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Add groups](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

## 先决条件
<a name="php-quickstart-prereq"></a>
+ Elastic Beanstalk 命令行界面：如需安装说明，请参阅[使用设置脚本安装 EB CLI（推荐）](eb-cli3.md#eb-cli3-install)。
+ PHP：按照 PHP 网站上的[安装与配置](https://www.php.net/manual/en/install.php)说明在本地计算机上安装 PHP。

## 步骤 1：创建 PHP 应用程序
<a name="php-quickstart-create-app"></a>

在此快速入门教程中，您将创建一个 *Hello World* PHP 应用程序。

创建项目目录。

```
~$ mkdir eb-php
~$ cd eb-php
```

接下来，在项目目录中创建一个 `index.php` 文件并添加以下代码。

**Example `index.php`**  

```
<?php
  echo "Hello from a PHP application running in Elastic Beanstalk!";
?>
```

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

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

```
~$ php -S localhost:5000
```

打开浏览器并访问 [http://localhost:5000](http://localhost:5000)。

您应该能在浏览器中看到问候消息，并在终端中看到日志消息。

输入 `Control+c` 来停止本地服务器，这样您就可以部署 Elastic Beanstalk 了。

## 步骤 3：初始化并部署 PHP 应用程序
<a name="php-quickstart-deploy"></a>

接下来，您将使用 Elastic Beanstalk 控制台或 EB CLI 将您的应用程序部署到*环境*。在本教程中，您将使用带有交互式选项的 EB CLI 来初始化环境。

**初始化您的环境并创建环境**

1. 运行以下 **init** 命令：

   ```
   ~$ eb init -i
   ```

   init 命令会以交互方式创建应用程序。应用程序名称将默认为本地文件夹，即 `eb-php`。

   对于除了 SSH 访问以外的所有提示，请接受默认设置以使用最新的 PHP 平台版本来创建环境。若要对实例进行故障排除，您可以稍后重新运行 `eb init -i` 命令来设置 SSH 访问权限，也可以使用 Amazon EC2 Instance Connect 或会话管理器进行连接。

1. 创建环境并部署应用程序

   运行以下命令创建名为 `blue-env` 的环境。

   ```
   ~$ eb create blue-env
   ```

   当您首次运行 **eb create** 命令时，Elastic Beanstalk 会自动为您的应用程序生成一个 zip 文件，称为*源捆绑包。*接下来，Elastic Beanstalk 会创建一个包含一个或多个 Amazon EC2 实例的环境，然后将该应用程序部署到该环境中。

   将您的应用程序部署到 Elastic Beanstalk 可能需要五分钟的时间。

## 步骤 4：浏览您的云应用程序
<a name="php-quickstart-run-eb-ap"></a>

环境创建过程完成后，应用程序应在运行并侦听端口 5000 上的请求。使用以下命令连接您的应用程序：

```
~$ eb open
```

`eb open` 命令会打开一个浏览器标签页，指向为应用程序创建的自定义子域。

## 步骤 5：更新和重新部署您的应用程序
<a name="php-quickstart-run-eb-ap"></a>

创建应用程序并将其部署到环境中后，您可以随时部署新的应用程序版本或不同的应用程序。部署新的应用程序版本速度会更快，因为不需要预置或重新启动 Amazon EC2 实例。

更新您的 PHP 代码，使其包含来自服务器环境的 REQUEST\$1TIME 值：

```
<?php
  echo "Hello from a PHP application running in Elastic Beanstalk!";
  
  $timestamp = $_SERVER['REQUEST_TIME'];
  echo '<br/>Request time: ' . date('Y/m/d H:i:s', $timestamp);
?>
```

使用以下命令将 PHP 代码重新部署到 Elastic Beanstalk：

```
~$ eb deploy
```

运行 **eb deploy** 时，EB CLI 会捆绑项目目录中的内容并将其部署到环境中。

部署完成后，刷新页面或使用 `eb open` 重新连接到您的应用程序。您应看到更新的内容。如果看不到更新的内容，请再次运行本地服务器来验证所做的更改，从而进行故障排除。

****恭喜您！****  
您已使用 Elastic Beanstalk 创建、部署并更新了 PHP 应用程序！

## 清理
<a name="php-quickstart-cleanup"></a>

演示代码使用完毕后，您可以终止环境。[Elastic Beanstalk 会删除 AWS 所有相关资源，例如 [Amazon EC2](using-features.managing.ec2.md)[实例、数据库实例、](using-features.managing.db.md)负载均衡器[、安全组](using-features.managing.elb.md)和警报。](using-features.alarms.md#using-features.alarms.title)

移除资源不会删除 Elastic Beanstalk 应用程序，因此您可以随时为您的应用程序创建新环境。

**从控制台终止 Elastic Beanstalk 环境**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

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

1. 选择 **Actions**（操作），然后选择 **Terminate environment**（终止环境）。

1. 使用屏幕上的对话框确认环境终止。

您也可以使用 EB CLI 通过下列命令来终止环境：

```
~$ eb terminate
```

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

您可以使用 Elastic Beanstalk 控制台探索应用程序环境。有关更多信息，请参阅[探索您的环境](GettingStarted.md#GettingStarted.Explore)。

有关使用 PHP 的高级示例，请参阅 [Elastic Beanstalk 中的 PHP 高级示例](php-samples.md)。