创建、上传和部署应用程序 - AMS 高级应用程序开发者指南

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

创建、上传和部署应用程序

首先,创建 WordPress 应用程序包,然后 CodeDeploy CTs 使用创建和部署应用程序。

  1. 下载 WordPress、解压缩文件并创建. /scripts 目录。

    Linux 命令:

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

    Windows:粘贴https://github.com/WordPress/WordPress/archive/master.zip到浏览器窗口并下载 zip 文件。

    创建用于组装软件包的临时目录。

    Linux:

    mkdir /tmp/WordPress

    Windows:创建一个 “WordPress” 目录,稍后将使用该目录路径。

  2. 将 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 scripts

    Windows:转到你创建的 “WordPress” 目录并在那里创建一个 “脚本” 目录。

    如果您在 Windows 环境中,请务必将脚本文件的中断类型设置为 Unix (LF)。在 Notepad ++ 中,这是窗口右下角的一个选项。

  3. 在 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
  4. 在中创建 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
  5. 在同一个目录中创建install_dependencies.sh包含以下内容的内容:

    #!/bin/bash yum install -y php yum install -y php-mysql yum install -y mysql service httpd restart
    注意

    HTTPS 是在启动时作为用户数据的一部分安装的,以便运行状况检查从一开始就起作用。

  6. 在同一个目录中创建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
  7. 在同一个目录中创建stop_server.sh包含以下内容的内容:

    #!/bin/bash service httpd stop
  8. 创建 zip 捆绑包。

    Linux:

    $ cd /tmp/WordPress $ zip -r wordpress.zip .

    Windows:前往 “WordPress” 目录选择所有文件并创建一个 zip 文件,一定要将其命名为 wordpress.zip。

  1. 将应用程序包上传到 S3 存储桶

    要继续部署堆栈,软件包需要准备就绪。

    您可以自动访问自己创建的任何 S3 存储桶实例。您可以通过 Bastions(请参阅访问实例)或 S3 控制台对其进行访问,然后使用 drag-and-drop文件或浏览并选择文件来上传 CodeDeploy 软件包。

    您也可以在 shell 窗口中使用以下命令;请确保您的 zip 文件路径正确:

    aws s3 cp wordpress/wordpress.zip s3://BUCKET_NAME/
  2. 部署 WordPress CodeDeploy 应用程序包

    必需的数据代码部署应用程序部署:

    • CodeDeployApplicationName: 你给 CodeDeploy 应用程序起的名字。

    • CodeDeployGroupName:由于 CodeDeploy 应用程序和组都是根据您在 HA 堆栈 RFC 中为 CodeDeploy 应用程序指定的名称创建的,因此该名称与。CodeDeployApplicationName

    • S3Bucket:你给 S3 存储桶起的名字。

    • S3 BundleTypeS3Key:它们是您部署的 WordPress 应用程序包的一部分。

    • VpcId:相关的 VPC。

    1. 在 “创建 RFC” 页面上,从 RFC CT 选择列表中选择 “部署”、“CodeDeploy 应用程序” 子类别、“应用程序” 和 “操作” 部署类别。

    2. 保留默认的 “基本” 选项,并如图所示设置值。

      注意

      引用之前创建的 CodeDeploy 应用程序、 CodeDeploy 部署组、S3 存储桶和捆绑包。

      Subject: WP-CD-Deploy-RFC Description: DeployWordPress S3Bucket: BUCKET_NAME S3Key: wordpress.zip S3BundleType: zip CodeDeployApplicationName: WordPress CodeDeployDeploymentGroupName: WordPress CodeDeployIgnoreApplicationStopFailures: false RevisionType: S3 VpcId: VPC_ID Name: WP-CD-Deploy-Op TimeoutInMinutes: 60
    3. 完成后单击 “提交”。