本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建、上传和部署应用程序
首先,创建 WordPress 应用程序包,然后 CodeDeploy CTs 使用创建和部署应用程序。
下载 WordPress、解压缩文件并创建. /scripts 目录。
Linux 命令:
wget https://github.com/WordPress/WordPress/archive/master.zipWindows:粘贴
https://github.com/WordPress/WordPress/archive/master.zip到浏览器窗口并下载 zip 文件。创建用于组装软件包的临时目录。
Linux:
mkdir /tmp/WordPressWindows:创建一个 “WordPress” 目录,稍后将使用该目录路径。
将 WordPress 源代码解压缩到 “WordPress” 目录并创建一个。 /scripts 目录。
Linux:
unzip master.zip -d /tmp/WordPress_Temp cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress rm -rf /tmp/WordPress_Temp rm -f master cd /tmp/WordPress mkdir scriptsWindows:转到你创建的 “WordPress” 目录并在那里创建一个 “脚本” 目录。
如果您在 Windows 环境中,请务必将脚本文件的中断类型设置为 Unix (LF)。在 Notepad ++ 中,这是窗口右下角的一个选项。
在 WordPress 目录中创建 CodeDeploy appsec.yml 文件(如果复制示例,请检查缩进,每个空格都很重要)。重要:确保将 WordPress 文件(在本例中为 WordPress 目录中)复制到预期目标 (/var/www/html/WordPress) 的 “源” 路径是正确的。在示例中,appsec.yml 文件位于文件所在的目录中,因此只需要 “/”。 WordPress 另外,即使你在 Auto Scaling 组中使用了 RHEL AMI,也要保留 “操作系统:linux” 一行不变。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/config_wordpress.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root-
在中创建 bash 文件脚本。 WordPress /scripts 目录。
首先,
config_wordpress.sh使用以下内容创建(如果您愿意,可以直接编辑 wp-config.php 文件)。注意
DBName替换为 HA 堆栈 RFC 中给出的值(例如,wordpress)。DB_MasterUsername替换为 HA 堆栈 RFC 中给出的MasterUsername值(例如,admin)。DB_MasterUserPassword替换为 HA 堆栈 RFC 中给出的MasterUserPassword值(例如,p4ssw0rd)。在 HA 堆栈 RFC 的执行输出中替换
DB_ENDPOINT为终端节点 DNS 名称(例如srt1cz23n45sfg.clgvd67uvydk.us-east-1.rds.amazonaws.com)。你可以通过GetRfc操作(CLI:get-rfc--rfc-id RFC_ID)或之前提交的 HA Stack RFC 的 AMS 控制台 RFC 详情页面中找到这一点。#!/bin/bash chmod -R 755 /var/www/html/WordPress cp /var/www/html/WordPress/wp-config-sample.php /var/www/html/WordPress/wp-config.php cd /var/www/html/WordPress sed -i "s/database_name_here/DBName/g" wp-config.php sed -i "s/username_here/DB_MasterUsername/g" wp-config.php sed -i "s/password_here/DB_MasterUserPassword/g" wp-config.php sed -i "s/localhost/DB_ENDPOINT/g" wp-config.php 在同一个目录中创建
install_dependencies.sh包含以下内容的内容:#!/bin/bash yum install -y php yum install -y php-mysql yum install -y mysql service httpd restart注意
HTTPS 是在启动时作为用户数据的一部分安装的,以便运行状况检查从一开始就起作用。
在同一个目录中创建
start_server.sh包含以下内容的内容:对于亚马逊 Linux 实例,请使用以下命令:
#!/bin/bash service httpd start对于 RHEL 实例,请使用以下命令(额外的命令是允许 SELINUX 接受的策略): WordPress
#!/bin/bash setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_connect 1 chcon -t httpd_sys_rw_content_t /var/www/html/WordPress/wp-content -R restorecon -Rv /var/www/html service httpd start
在同一个目录中创建
stop_server.sh包含以下内容的内容:#!/bin/bash service httpd stop创建 zip 捆绑包。
Linux:
$ cd /tmp/WordPress $ zip -r wordpress.zip .Windows:前往 “WordPress” 目录选择所有文件并创建一个 zip 文件,一定要将其命名为 wordpress.zip。
将应用程序包上传到 S3 存储桶。
要继续部署堆栈,捆绑包需要准备就绪。
您可以自动访问自己创建的任何 S3 存储桶实例。您可以通过堡垒或 S3 控制台访问它,然后上传 WordPress 捆绑包 drag-and-drop或浏览并选择 zip 文件。
您也可以在 shell 窗口中使用以下命令;请确保您的 zip 文件路径正确:
aws s3 cp wordpress.zip s3://BUCKET_NAME/部署 WordPress 应用程序包。
在开始之前收集以下数据可以加快部署速度。
必填数据:
VPC-ID:此值决定您的 S3 存储桶将位于何处。使用您之前使用的 VPC ID。CodeDeployApplicationName和CodeDeployApplicationName:你在 HA 2 层堆栈 RFC 中使用的ApplicationName值设置 CodeDeployApplicationName 和。 CodeDeployDeploymentGroupName该示例使用 “WordPress”,但您可能使用了不同的值。S3Location: 对于S3BucketBucketName,请使用您之前创建的。S3BundleType和来自S3Key您放在 S3 商店中的捆绑包。
将 CodeDeploy 应用程序部署 CT 的执行参数 JSON 架构输出到名为 Deploy p CDApp arams.json 的 JSON 文件中。
aws amscm get-change-type-version --change-type-id "ct-2edc3sd1sqmrb" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > DeployCDAppParams.json按如下方式修改架构并将其另存为,您可以删除和替换内容。
{ "Description": "DeployWPCDApp", "VpcId": "VPC_ID", "Name": "WordPressCDAppDeploy", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPress", "CodeDeployDeploymentGroupName": "WordPress", "CodeDeployIgnoreApplicationStopFailures": false, "CodeDeployRevision": { "RevisionType": "S3", "S3Location": { "S3Bucket": "BUCKET_NAME", "S3BundleType": "zip", "S3Key": "wordpress.zip" } } } }将的 JSON 模板输出 CreateRfc 到当前文件夹中名为 Deploy CDApp rfc.json 的文件中:
aws amscm create-rfc --generate-cli-skeleton > DeployCDAppRfc.json修改并保存 Deplo CDApp y rfc.json 文件,你可以删除和替换其中的内容。请注意,
RequestedStartTime和现在RequestedEndTime是可选的;排除它们会创建一个 ASAP RFC,该RFC在获得批准后立即执行(通常会自动发生)。要提交计划的 RFC,请添加这些值。{ "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2edc3sd1sqmrb", "Title": "CD-Deploy-For-WP-RFC" }创建 RFC,指定 Deploy CDApp Rfc 文件和 De CDApp ploy Params 执行参数文件:
aws amscm create-rfc --cli-input-json file://DeployCDAppRfc.json --execution-parameters file://DeployCDAppParams.json您会在回复 RfcId 中收到新 RFC 的信息。保存 ID 以供后续步骤使用。
提交 RFC:
aws amscm submit-rfc --rfc-idRFC_ID如果 RFC 成功,则不会收到任何输出。
要检查 RFC 状态,请运行
aws amscm get-rfc --rfc-idRFC_ID