本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 2:创建示例应用程序修订
在这一步中,您将创建要部署到本地实例的示例应用程序修订。
由于很难知道您的本地实例上已经安装了哪些软件和功能,或者您的组织政策允许安装哪些软件和功能,因此我们在此处提供的示例应用程序修订版仅使用批处理脚本(适用于 Windows Server)或 shell 脚本(适用于 Ubuntu Server 和RHEL)将文本文件写入本地实例上的某个位置。为多个 CodeDeploy 部署生命周期事件(包括 In stall、AfterInstallApplicationStart、和)中的每个事件写入一个文件ValidateService。在BeforeInstall部署生命周期事件期间,将运行一个脚本来删除此示例的先前部署期间写入的旧文件,并在您的本地实例上创建一个写入新文件的位置。
注意
如果出现以下任何情况,此示例应用程序修订可能无法部署:
-
在本地实例上启动 CodeDeploy 代理的用户没有执行脚本的权限。
-
用户无权在脚本中列出的位置创建或删除文件夹。
-
用户无权在脚本中列出的位置创建文本文件。
注意
如果您配置了 Windows Server 实例并希望部署其他示例,则可能需要使用教程:使用 CodeDeploy 部署“Hello, World!” 带有 CodeDeploy(Windows 服务器)的应用程序教程的步骤 2:将您的源内容配置为部署到 Windows Server Amazon EC2 实例中的示例。
如果您配置了一个RHEL实例并想要部署不同的示例,则可能需要使用本教程:部署 WordPress 到亚马逊 EC2 实例(亚马逊 Linux 或红帽企业 Linux 和 Linux、macOS 或 Unix)教程第 2 步:将源内容配置为部署到亚马逊 Linux 或红帽企业 Linux 亚马逊EC2实例中的示例。
目前,Ubuntu Server 没有替代示例。
-
在您的开发计算机上,创建名为
CodeDeployDemo-OnPrem
的子目录(子文件夹)来存储示例应用程序修订的文件,然后切换到该子文件夹。在本示例中,我们假设您将该c:\temp
文件夹用作 Windows Server 的根文件夹,或者使用该/tmp
文件夹作为 Ubuntu 服务器的根文件夹。RHEL如果您使用其他文件夹,请务必在整个教程中使用该文件夹取代我们提供的文件夹:对于 Windows:
mkdir c:\temp\CodeDeployDemo-OnPrem cd c:\temp\CodeDeployDemo-OnPrem
对于 Linux、macOS 或 Unix:
mkdir /tmp/CodeDeployDemo-OnPrem cd /tmp/CodeDeployDemo-OnPrem
-
在
CodeDeployDemo-OnPrem
子文件夹的根中,使用文本编辑器创建两个分别名为appspec.yml
和install.txt
的文件:对于 Windows Server 为
appspec.yml
:version: 0.0 os: windows files: - source: .\install.txt destination: c:\temp\CodeDeployExample hooks: BeforeInstall: - location: .\scripts\before-install.bat timeout: 900 AfterInstall: - location: .\scripts\after-install.bat timeout: 900 ApplicationStart: - location: .\scripts\application-start.bat timeout: 900 ValidateService: - location: .\scripts\validate-service.bat timeout: 900
appspec.yml
适用于 Ubuntu 服务器和:RHELversion: 0.0 os: linux files: - source: ./install.txt destination: /tmp/CodeDeployExample hooks: BeforeInstall: - location: ./scripts/before-install.sh timeout: 900 AfterInstall: - location: ./scripts/after-install.sh timeout: 900 ApplicationStart: - location: ./scripts/application-start.sh timeout: 900 ValidateService: - location: ./scripts/validate-service.sh timeout: 900
有关 AppSpec 文件的更多信息,请参阅将应用程序规范文件添加到修订版中 CodeDeploy和CodeDeploy AppSpec 文件参考。
install.txt
:The Install deployment lifecycle event successfully completed.
-
在
CodeDeployDemo-OnPrem
子文件夹的根下,创建scripts
子文件夹,然后切换到该子文件夹:对于 Windows:
mkdir c:\temp\CodeDeployDemo-OnPrem\scripts cd c:\temp\CodeDeployDemo-OnPrem\scripts
对于 Linux、macOS 或 Unix:
mkdir -p /tmp/CodeDeployDemo-OnPrem/scripts cd /tmp/CodeDeployDemo-OnPrem/scripts
-
在
scripts
子文件夹的根目录中,使用文本编辑器为 Windows Server 创建四个名为before-install.bat
、after-install.bat
application-start.bat
、和validate-service.bat
的文件,或者为 Ubuntu Server 创建名为before-install.sh
after-install.sh
application-start.sh
、、、validate-service.sh
的文件,以及:RHEL对于 Windows Server:
before-install.bat
:set FOLDER=%HOMEDRIVE%\temp\CodeDeployExample if exist %FOLDER% ( rd /s /q "%FOLDER%" ) mkdir %FOLDER%
after-install.bat
:cd %HOMEDRIVE%\temp\CodeDeployExample echo The AfterInstall deployment lifecycle event successfully completed. > after-install.txt
application-start.bat
:cd %HOMEDRIVE%\temp\CodeDeployExample echo The ApplicationStart deployment lifecycle event successfully completed. > application-start.txt
validate-service.bat
:cd %HOMEDRIVE%\temp\CodeDeployExample echo The ValidateService deployment lifecycle event successfully completed. > validate-service.txt
适用于 Ubuntu 服务器和:RHEL
before-install.sh
:#!/bin/bash export FOLDER=/tmp/CodeDeployExample if [ -d $FOLDER ] then rm -rf $FOLDER fi mkdir -p $FOLDER
after-install.sh
:#!/bin/bash cd /tmp/CodeDeployExample echo "The AfterInstall deployment lifecycle event successfully completed." > after-install.txt
application-start.sh
:#!/bin/bash cd /tmp/CodeDeployExample echo "The ApplicationStart deployment lifecycle event successfully completed." > application-start.txt
validate-service.sh
:#!/bin/bash cd /tmp/CodeDeployExample echo "The ValidateService deployment lifecycle event successfully completed." > validate-service.txt unset FOLDER
-
RHEL仅适用于 Ubuntu 服务器,请确保四个 shell 脚本具有执行权限:
chmod +x ./scripts/*