

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

# 步骤 2：将源内容配置为部署到 Amazon Linux 或 Red Hat Enterprise Linux Amazon EC2 实例
<a name="tutorials-wordpress-configure-content"></a>

现在是时候配置应用程序的源内容以拥有可部署到实例的内容了。

**Topics**
+ [获取源代码](#tutorials-wordpress-configure-content-download-code)
+ [创建脚本以运行应用程序](#tutorials-wordpress-configure-content-create-scripts)
+ [添加应用程序规范文件](#tutorials-wordpress-configure-content-add-appspec-file)

## 获取源代码
<a name="tutorials-wordpress-configure-content-download-code"></a>

在本教程中，您将 WordPress 内容发布平台从开发计算机部署到目标 Amazon EC2 实例。要获取 WordPress 源代码，您可以使用内置的命令行调用。或者，如果您的开发计算机上已安装 Git，可改用 Git。

对于这些步骤，我们假设您已将 WordPress 源代码的副本下载到开发计算机上的`/tmp`目录中。（您可以选择所需的任何目录，但请记住，将这些步骤中指定的任何 `/tmp` 替换为您的位置。）

选择以下两个选项之一，将 WordPress 源文件复制到您的开发计算机。第一个选项使用内置命令行调用。第二个选项使用 Git。

**Topics**
+ [获取 WordPress 源代码的副本（内置命令行调用）](#tutorials-wordpress-configure-content-download-code-command-line)
+ [获取 WordPress 源代码的副本 (Git)](#tutorials-wordpress-configure-content-download-code-git)

### 获取 WordPress 源代码的副本（内置命令行调用）
<a name="tutorials-wordpress-configure-content-download-code-command-line"></a>

1. 调用**wget**命令将 WordPress 源代码副本（作为.zip 文件）下载到当前目录：

   ```
   wget https://github.com/WordPress/WordPress/archive/master.zip
   ```

1. 调用 **unzip**、**mkdir**、**cp** 和 **rm** 命令可执行以下任务：
   + 将 `master` .zip 文件解压缩到 `/tmp/WordPress_Temp` 目录（文件夹）。
   + 将其解压缩的内容复制到 `/tmp/WordPress` 目标文件夹中。
   + 删除临时 `/tmp/WordPress_Temp` 文件夹和 `master` 文件。

   运行这些命令（一次运行一条命令）：

   ```
   unzip master -d /tmp/WordPress_Temp
   ```

   ```
   mkdir -p /tmp/WordPress
   ```

   ```
   cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress
   ```

   ```
   rm -rf /tmp/WordPress_Temp
   ```

   ```
   rm -f master
   ```

   这样，您就可以在该`/tmp/WordPress`文件夹中获得一组干净的 WordPress 源代码文件。

### 获取 WordPress 源代码的副本 (Git)
<a name="tutorials-wordpress-configure-content-download-code-git"></a>

1. 在您的开发计算机上下载并安装 [Git](http://git-scm.com)。

1. 在 `/tmp/WordPress` 文件夹中，调用 **git init** 命令。

1. 调用**git clone**命令克隆公共 WordPress存储库，在`/tmp/WordPress`目标文件夹中创建自己的副本：

   ```
   git clone https://github.com/WordPress/WordPress.git /tmp/WordPress
   ```

   这样，您就可以在该`/tmp/WordPress`文件夹中获得一组干净的 WordPress 源代码文件。

## 创建脚本以运行应用程序
<a name="tutorials-wordpress-configure-content-create-scripts"></a>

接下来，在目录中创建一个文件夹和脚本。 CodeDeploy 使用这些脚本在目标 Amazon EC2 实例上设置和部署您的应用程序修订。您可使用任何文本编辑器来创建脚本。

1. 在 WordPress 源代码副本中创建一个脚本目录：

   ```
   mkdir -p /tmp/WordPress/scripts
   ```

1. 在 `install_dependencies.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此 `install_dependencies.sh` 脚本安装 Apache、MySQL 和 PHP。还会将 MySQL 支持添加到 PHP 中。

   ```
   #!/bin/bash
   sudo amazon-linux-extras install php7.4
   sudo yum install -y httpd mariadb-server php
   ```

1. 在 `start_server.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此 `start_server.sh` 脚本启动 Apache 和 MySQL。

   ```
   #!/bin/bash
   systemctl start mariadb.service
   systemctl start httpd.service
   systemctl start php-fpm.service
   ```

1. 在 `stop_server.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此 `stop_server.sh` 脚本停止 Apache 和 MySQL。

   ```
   #!/bin/bash
   isExistApp="pgrep httpd"
   if [[ -n $isExistApp ]]; then
   systemctl stop httpd.service
   fi
   isExistApp=pgrep mysqld
   if [[ -n $isExistApp ]]; then
   systemctl stop mariadb.service
   fi
   isExistApp=pgrep php-fpm
   if [[ -n $isExistApp ]]; then
   systemctl stop php-fpm.service
   
   fi
   ```

1. 在 `create_test_db.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此`create_test_db.sh`脚本使用 MySQL 创建**test**数据库 WordPress 以供使用。

   ```
   #!/bin/bash
   mysql -uroot <<CREATE_TEST_DB
   CREATE DATABASE IF NOT EXISTS test;
   CREATE_TEST_DB
   ```

1. 最后，在 `/tmp/WordPress/scripts` 中创建 `change_permissions.sh` 脚本。这将用于更改 Apache 中的文件夹权限。
**重要**  
 此脚本更新 `/tmp/WordPress` 文件夹上的权限，以便所有人可以写入其中。这是必需的，以便 WordPress 可以在此期间写入其数据库[步骤 5：更新并重新部署您的应用程序 WordPress](tutorials-wordpress-update-and-redeploy-application.md)。 WordPress 应用程序设置完成后，运行以下命令将权限更新为更安全的设置：  

   ```
   chmod -R 755 /var/www/html/WordPress
   ```

   ```
   #!/bin/bash
   chmod -R 777 /var/www/html/WordPress
   ```

1. 为所有脚本提供可执行文件权限。在命令行上，键入：

   ```
   chmod +x /tmp/WordPress/scripts/*
   ```

## 添加应用程序规范文件
<a name="tutorials-wordpress-configure-content-add-appspec-file"></a>

接下来，添加应用程序规范文件（AppSpec 文件），即 [YAML](http://www.yaml.org) 格式的文件，用于： CodeDeploy 
+ 将应用程序修订中的源文件映射到其在目标 Amazon EC2 实例上的目标。
+ 为部署的文件指定自定义权限。
+ 指定部署期间要在目标 Amazon EC2 实例上运行的脚本。

该 AppSpec 文件必须命名`appspec.yml`。它必须放置在应用程序源代码的根目录中。在本教程中，根目录为 `/tmp/WordPress`

使用文本编辑器创建一个名为 `appspec.yml` 的文件。将以下行添加到该文件中：

```
version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html/WordPress
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/change_permissions.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
    - location: scripts/create_test_db.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
```

CodeDeploy 使用此 AppSpec 文件将开发计算机上该`/tmp/WordPress`文件夹中的所有文件复制到目标 Amazon EC2 实例上的`/var/www/html/WordPress`文件夹。在部署过程中，在部署生命周期`root`内的指定事件（例如**BeforeInstall**和）处 CodeDeploy 运行目标 Amazon EC2 实例上的`/var/www/html/WordPress/scripts`文件夹中的指定脚本**AfterInstall**。如果其中任何一个脚本的运行时间超过 300 秒（5 分钟），则 CodeDeploy 停止部署并将部署标记为失败。

有关这些设置的更多信息，请参阅 [CodeDeploy AppSpec 文件引用](reference-appspec-file.md)。

**重要**  
此文件中各项之间的空格的位置和数量很重要。如果间距不正确，则 CodeDeploy 会引发可能难以调试的错误。有关更多信息，请参阅 [AppSpec 文件间距](reference-appspec-file.md#reference-appspec-file-spacing)。