AWS CodeDeploy如何在EC2实例上执行终端命令实现部署自动化
AWS CodeDeploy 自动执行部署操作实现方案
你可以通过CodeDeploy原生的AppSpec配置文件绑定生命周期钩子,实现部署过程中自动执行自定义命令,具体操作如下:
实现步骤
- 首先在你的Django项目根目录新建
appspec.yml配置文件,该文件必须放在部署制品包的根目录,CodeDeploy会自动识别该配置执行对应操作 - 新建脚本目录存放自定义执行命令,避免配置文件过于冗余
- 配置完成后将项目代码、
appspec.yml、脚本目录一起打包为zip/tar.gz格式的制品包,上传到CodeDeploy对应的制品源即可
配置示例
appspec.yml 参考配置
version: 0.0 os: linux files: # 配置构建包代码映射到EC2实例的目标路径,可按需修改为你的项目实际部署路径 - source: / destination: /opt/bitnami/projects/your-django-project permissions: # 匹配Bitnami环境默认的运行用户权限,避免访问报错 - object: /opt/bitnami/projects/your-django-project pattern: "**" owner: bitnami group: daemon hooks: # 构建包解压完成后执行目录创建、文件复制等初始化操作 AfterInstall: - location: scripts/init_env.sh runas: root # 初始化完成后重启Apache服务生效配置 ApplicationStart: - location: scripts/restart_apache.sh runas: root
自定义脚本示例
在项目根目录新建scripts目录,存放两个脚本文件,打包前先执行chmod +x scripts/*.sh给脚本赋予执行权限:
scripts/init_env.sh存放目录创建、文件复制命令
#!/bin/bash # 按需修改为你需要创建的目录路径 mkdir -p /opt/bitnami/projects/your-django-project/static mkdir -p /opt/bitnami/projects/your-django-project/media # 按需修改为你需要复制的文件路径 cp /data/backup/.env /opt/bitnami/projects/your-django-project/.env # 统一修正项目目录权限 chown -R bitnami:daemon /opt/bitnami/projects/your-django-project
scripts/restart_apache.sh存放服务重启命令
#!/bin/bash /opt/bitnami/ctlscript.sh restart apache
注意事项
- 提前确认EC2实例上已安装并正常运行CodeDeploy Agent,可执行
sudo systemctl status codedeploy-agent查看运行状态 - 如果执行权限相关报错,可给codedeploy用户配置免密sudo权限,在
/etc/sudoers.d/codedeploy文件中添加内容:codedeploy ALL=(ALL) NOPASSWD:ALL
内容的提问来源于stack exchange,提问作者Volatil3
相关产品推荐
相关产品推荐

