血与泪的教训
一定要好好看说明文档
比如 用 CodeDeploy 之前 要先装好它的代理 CodeDeploy agent (哭)
使用CodeDeploy
-
安装代理
安装需要的命令工具sudo yum update
sudo yum install ruby
sudo yum install wget
清除任何以前的代理缓存信息的 AMI
#!/bin/bash CODEDEPLOY_BIN="/opt/codedeploy-agent/bin/codedeploy-agent" $CODEDEPLOY_BIN stop yum erase codedeploy-agent -y
切换到默认目录
cd /home/ec2-user
获取所在区域的 CodeDeploy 资源工具包文件。
区域标识符是您所在地区的标识符。
例如:
替换bucket-name替换为aws-codedeploy-us-east-2
替换区域标识符替换为us-east-2wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install
例:
wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/latest/install
给下载的文件赋予执行权限。chmod +x ./install
Tips:
蓝色表示目录;
绿色表示可执行文件,可执行的程序;
红色表示压缩文件或包文件;
浅蓝色表示链接文件;
灰色表示其它文件;安装代理(自动最新版)
sudo ./install auto
到这里,CodeDeploy的代理安装完成。
查看服务状态:sudo service codedeploy-agent status
命令行启动服务
sudo service codedeploy-agent start
-
配置必须的执行文件 appspec.yml
appspec.yml文件为CodeDeploy必须的执行文件,在根目录新建 appspec.yml文件和scripts文件夹。
appspec.yml基础文件内容:
version: 0.0
os: linux
files:
- source: /
destination: /home/ec2-user/
hooks:
ApplicationStop:
- location: scripts/stop-process.sh
timeout: 180
runas: root
ApplicationStart:
- location: scripts/start-process.sh
timeout: 300
runas: ec2-user
引用的两个文件放在scripts文件夹
start-process.sh
#!/bin/bash
java -jar /tmp/artifact_name.jar > /dev/null 2> /dev/null < /dev/null &
stop-process.sh
#!/bin/bash
ps -ef | grep artifact_name.jar | grep -v grep | awk '{print $2}' | xargs kill