– CodeDeployで、service httpd stop, service httpd startの処理を入れる
### shellの作成
@local
scripts/stop_server
#!/bin/bash isExistApp = `pgrep httpd` if [[ -n $isExistApp ]]; then service httpd stop fi
scripts/setpermission.sh
#!/bin/bash chmod -R 777 /home/release/storage
scripts/start_server
#!/bin/bash service httpd start
appspec.yml
version: 0.0 os: linux files: - source: / destination: /home/release hooks: ApplicationStop: - location: scripts/stop_server timout: 300 runas: root AfterInstall: - location: scripts/setpermission.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server timout: 300 runas: root
$ git add .
$ git commit -m “appspec.yml update”
$ git push -u origin master
# ec2 -> instance -> start
$ ssh ec2-user@${public_ip} -i ~/.ssh/***.pem
$ cd /home/release
$ ls
LICENSE appspec.yml index.html
// httpd serverをインストール
$ sudo yum update
$ sudo yum install httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
$ sudo systemctl enable httpd
$ sudo systemctl is-enabled httpd
# CodeDeploy -> Applications -> create deployment -> commit idを入力
$ ls
LICENSE appspec.yml index.html scripts
なるほど、appspec.ymlの公式を確認します。
hooksのフローはこちらに掲載されています。
https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html
BeforeInstall – 置き換えタスクセットが作成される前にタスクを実行
AfterInstall – 置き換えタスクセットが作成され、ターゲットグループの 1 つがそれに関連付けられた後、タスクを実行