AWS CodeDeploy 实验
背景
本笔记参考AWS峰会动手实验室Introduction to AWS CodeDeploy。
涵盖的内容包括:
验证是否已安装 CodeDeploy 代理。
配置要部署到 CodeDeploy 的应用程序源内容。
创建 Amazon S3 存储桶,然后将 WordPress 应用程序上传到该存储桶。
将 WordPress 应用程序部署到 Amazon EC2 实例。
监控 WordPress 应用程序部署。
更新 WordPress 应用程序,然后对其进行重新部署。
配置应用程序源的内容
通过这步,我们会:
配置要部署的源应用程序内容。
创建将在部署应用程序时运行的脚本。
创建 CodeDeploy AppSpec 文件。
下载workpress代码
wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/courses/spl-82/v1.4.5.prod-2bbeba30/scripts/WordPress-master.zip
unzip WordPress-master.zip -d /tmp/WordPress_Temp
mkdir -p /tmp/WordPress
#将其解压后的内容复制到 /tmp/WordPress 目标文件夹中。
cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress
#删除临时 /tmp/WordPress_Temp 文件夹和主文件。
rm -rf /tmp/WordPress_Temp
rm -f WordPress-master.zip
创建校本来运行应用程序
在 WordPress 源代码的副本中创建脚本目录。
mkdir -p /tmp/WordPress/scripts
通过运行以下命令创建 install_dependencies.sh 脚本:
nano /tmp/WordPress/scripts/install_dependencies.sh
#!/bin/bash
yum install -y httpd php mariadb-server php-mysqlnd
Ctrl+x然后键入y回车保存退出。
install_dependencies.sh 脚本将安装 Apache、MariaDB 和 PHP。它还会将 MySQL 支持添加到 PHP 中。
通过运行以下命令创建 start_server.sh 脚本:
nano /tmp/WordPress/scripts/start_server.sh
#!/bin/bash
service httpd start
service mariadb start
Ctrl+x然后键入y回车保存退出。
通过运行以下命令创建 stop_server.sh 脚本:
nano /tmp/WordPress/scripts/stop_server.sh
#!/bin/bash
isExistApp=`pgrep httpd`
if [[ -n $isExistApp ]]; then
service httpd stop
fi
isExistApp=`pgrep sql`
if [[ -n $isExistApp ]]; then
service mariadb stop
fi
通过运行以下命令创建 create_test_db.sh 脚本:
nano /tmp/WordPress/scripts/create_test_db.sh
#!/bin/bash
mysql -uroot <<CREATE_TEST_DB
CREATE DATABASE IF NOT EXISTS test;
CREATE_TEST_DB
通过运行以下命令创建 change_permissions.sh 脚本:
nano /tmp/WordPress/scripts/change_permissions.sh
#!/bin/bash
chmod -R 777 /var/www/html/WordPress
使所有脚本都可执行,并列出脚本。
chmod +x /tmp/WordPress/scripts/*
ls -la /tmp/WordPress/scripts
创建 CodeDeploy AppSpec 文件
AWS CodeDeploy 将使用 appspec.yml 文件执行以下操作:
- 将应用程序修订中的源文件映射到目标 Amazon EC2 实例上的目标。
- 指定已部署文件的自定义权限。
- 指定部署期间要在目标 Amazon EC2 实例上运行的脚本。
AppSpec 文件必须命名为 appspec.yml。它必须放置在应用程序源代码的根目录中。在本实验中,根目录为 /tmp/WordPress
AppSpec 文件对于 AWS CodeDeploy 来说是唯一的。它定义了您希望 AWS CodeDeploy 执行的部署操作。您可以将可部署的内容和 AppSpec 文件捆绑成一个归档文件,然后将其上传到 Amazon S3 存储桶或 GitHub 存储库。此归档文件称为应用程序修订(或简称修订)。
在 /tmp/WordPress 中创建特定于应用程序的文件。
nano /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
该 appspec.yaml 文件中,可以看到之前创建的5个脚本。这些脚本将在部署应用程序时运行。
部署 WordPress 应用程序
创建 CodeDeploy 应用程序
aws deploy create-application --application-name WordPress_App
预置Amazon S3 存储桶
aws s3 mb s3://codedeploybucketleoyu
将 WordPress 应用程序上传到 Amazon S3
cd /tmp/WordPress
aws deploy push --application-name WordPress_App --description "This is a revision for the application WordPress_App" --ignore-hidden-files --s3-location s3://codedeploybucketleoyu/WordPressApp.zip --source.
部署应用程序
aws deploy create-deployment-group --application-name WordPress_App --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name WordPress_DG --ec2-tag-filters Key=Name,Value=CodeDeploy,Type=KEY_AND_VALUE --service-role-arn ROLE
将 ROLE 替换为位于这些说明左侧的 CodeDeployRoleARN 的值 arn:aws:iam::173207358131:role/codedeploy-service-role
aws deploy create-deployment-group --application-name WordPress_App --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name WordPress_DG --ec2-tag-filters Key=Name,Value=CodeDeploy,Type=KEY_AND_VALUE --service-role-arn arn:aws:iam::173207358131:role/codedeploy-service-role
上述操作将创建 CodeDeploy 部署组。
aws deploy create-deployment --application-name WordPress_App --s3-location bucket=codedeploybucketleoyu,key=WordPressApp.zip,bundleType=zip --deployment-group-name WordPress_DG --description "This is a revision for the application WordPress_App"
上述操作将部署 WordPress 应用程序。
监控部署
此时访问链接 http://34.220.66.22/WordPress/ 可见WordPress页面
更新和重新部署WordPress应用程序
完成WordPress网站设置
然后登陆,查看网站
修改和重新部署 WordPress 网站
在此任务中,我们将修改 WordPress 站点,然后使用 CodeDeploy 对其进行重新部署。
在部署 WordPress 应用程序期间,change_permissions.sh 脚本更新了 /tmp/WordPress 文件夹的权限,以便所有人都可以对其进行写入。
现在运行以下命令来限制权限,以便只有所有者可以对其进行写入。
sudo chmod -R 755 /var/www/html/WordPress
在 wp-content/themes/twentyfifteen/style.css 文件中修改站点的一些颜色。
cd /tmp/WordPress
sed -i 's/#fff/#768331/g' wp-content/themes/twentyseventeen/style.css
sed 命令将此颜色 (#fff) 更改为 #768331。
调用 AWS CodeDeploy push 命令,将更新后的文件捆绑在一起,将修订上传到 Amazon S3,然后通过以下方式向 AWS CodeDeploy 注册有关上传的修订的信息:
aws deploy push --application-name WordPress_App --s3-location s3://codedeploybucketleoyu/WordPressApp.zip --ignore-hidden-files
此时页面由白色变为绿色了。
结束。
发表回复