本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
第 2 步:将源内容配置为部署到亚马逊 Linux 或红帽企业 Linux 亚马逊EC2实例
现在是时候配置应用程序的源内容以拥有可部署到实例的内容了。
获取源代码
在本教程中,您将 WordPress 内容发布平台从开发计算机部署到目标 Amazon EC2 实例。要获取 WordPress 源代码,您可以使用内置的命令行调用。或者,如果您的开发计算机上已安装 Git,可改用 Git。
对于这些步骤,我们假设您已将 WordPress 源代码的副本下载到开发计算机上的/tmp
目录中。(您可以选择所需的任何目录,但请记住,将这些步骤中指定的任何 /tmp
替换为您的位置。)
选择以下两个选项之一,将 WordPress 源文件复制到您的开发计算机。第一个选项使用内置命令行调用。第二个选项使用 Git。
获取 WordPress 源代码的副本(内置命令行调用)
-
调用wget命令将 WordPress 源代码副本(作为.zip 文件)下载到当前目录:
wget https://github.com/WordPress/WordPress/archive/master.zip
-
调用 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)
-
在您的开发计算机上下载并安装 Git
。 -
在
/tmp/WordPress
文件夹中,调用 git init 命令。 -
调用git clone命令克隆公共 WordPress存储库,在
/tmp/WordPress
目标文件夹中创建自己的副本:git clone https://github.com/WordPress/WordPress.git /tmp/WordPress
这样,您就可以在该
/tmp/WordPress
文件夹中获得一组干净的 WordPress 源代码文件。
创建脚本以运行应用程序
接下来,在目录中创建一个文件夹和脚本。 CodeDeploy 使用这些脚本在目标 Amazon EC2 实例上设置和部署您的应用程序修订。您可使用任何文本编辑器来创建脚本。
-
在 WordPress 源代码副本中创建一个脚本目录:
mkdir -p /tmp/WordPress/scripts
-
在
install_dependencies.sh
中创建一个/tmp/WordPress/scripts
文件。将以下行添加到该文件中。此install_dependencies.sh
脚本会安装 Apache、My SQL 和。PHP它还将 “我的SQL支持” 添加到PHP.#!/bin/bash sudo amazon-linux-extras install php7.4 sudo yum install -y httpd mariadb-server php
-
在
start_server.sh
中创建一个/tmp/WordPress/scripts
文件。将以下行添加到该文件中。此start_server.sh
脚本启动 Apache and My SQL。#!/bin/bash systemctl start mariadb.service systemctl start httpd.service systemctl start php-fpm.service
-
在
stop_server.sh
中创建一个/tmp/WordPress/scripts
文件。将以下行添加到该文件中。此stop_server.sh
脚本会停止 Apache 和 My SQL。#!/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
-
在
create_test_db.sh
中创建一个/tmp/WordPress/scripts
文件。将以下行添加到该文件中。此create_test_db.sh
脚本使用 My SQL 创建test
数据库 WordPress 以供使用。#!/bin/bash mysql -uroot <<CREATE_TEST_DB CREATE DATABASE IF NOT EXISTS test; CREATE_TEST_DB
-
最后,在
/tmp/WordPress/scripts
中创建change_permissions.sh
脚本。这将用于更改 Apache 中的文件夹权限。重要
此脚本更新
/tmp/WordPress
文件夹上的权限,以便所有人可以写入其中。这是必需的,以便 WordPress 可以在此期间写入其数据库步骤 5:更新并重新部署应用程序 WordPress 。设置 WordPress 应用程序后,运行以下命令将权限更新为更安全的设置:chmod -R 755 /var/www/html/WordPress
#!/bin/bash chmod -R 777 /var/www/html/WordPress
-
为所有脚本提供可执行文件权限。在命令行上,键入:
chmod +x /tmp/WordPress/scripts/*
添加应用程序规范文件
接下来,添加应用程序规范文件(AppSpec 文件),这是一种由使用的YAML
-
将您的应用程序修订版中的源文件映射到目标 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 文件参考。
重要
此文件中各项之间的空格的位置和数量很重要。如果间距不正确,则 CodeDeploy 会引发可能难以调试的错误。有关更多信息,请参阅 AppSpec 文件间距。