もくじ
注意
- ソースの更新は必ずGitやS3から行う
直接EC2にファイルを追加してはいけない
デプロイでこける - 最初のデプロイはin-place
- 2回目以降は「Blue-Green」+ 「AllAtOnce」
ロードバランサ
- ALBを用意しておく
本番用と確認用の2つが必要 - ターゲットグループの作成
・本番用ターゲット Honban-Target
スティキーセッションの「維持」設定40分 ●重要
・確認用ターゲット Kakunin-Target
EC2をセットアップする
- ミドルウェアの構成完了
- ヘルスチェックファイルの設置
- ALBに設置してみて動作を見る
- AMIを作成
→EC2を削除する
appspec.ymlをプロジェクトのルートに設置する
appspec.yml version: 0.0 os: linux files: - source: / destination: /var/www/
# vi /etc/httpd/conf.d/asg.example.net.conf <VirtualHost *:80> ServerName asg.example.net DocumentRoot /var/www/httpdocs Timeout 120 KeepAlive On KeepAliveTimeout 120 MaxKeepAliveRequests 100 LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined </VirtualHost>
# vi /var/www/httpdocs/index.php <?php echo "v0"; echo "<hr/>"; echo gethostname();
# vi /var/www/httpdocs/healthcheck.html ok
systemctl restart httpd systemctl enable httpd
EC2にCodeDeploy Agentをインストール
$ sudo yum install ruby $ sudo yum install wget $ aws s3 cp s3://aws-codedeploy-ap-northeast-1/latest/install . --region ap-northeast-1 $ chmod +x ./install $ sudo ./install auto $ sudo service codedeploy-agent status The AWS CodeDeploy agent is running as PID 3635
AutoScaling
- 起動設定
・IAMロール:EC2Role ●重要
・CloudWatch 詳細モニタリングを有効化 ●重要 - AutoScalingグループ
・Auto Scalingグループは作成しておく
・タグ
・Name = ASG-APP-v0-
・IPを降るように設定すること(デフォルト)
→AutoScalingグループ作成後に、「編集」から
ターゲットグループ「Honban-Target」に紐づける - AutoScalingグループによってEC2が自動作成される
CodeDeployにデプロイ
GitHubにリポジトリを用意してアプリをアップロードしておく
トークンの作成
Setting >> Developper Setting >> Personal access tokens
リポジトリ情報を控えておく
リポジトリ名 yuukanehiro/sampleapp コミットID d6a3ba3ehogehoge8d627dcb47a51
IAMロール作成
- EC2ロール
「ロールの作成」から、「AWSサービス」「EC2」
- CodeDeploy用ロール
インラインポリシーの編集
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" } ] }
EC2の作成
タグ
- Name:deploy
- Value:app-server
IAMロールの割り当て
EC2ロールを割り当てる
CodeDeploy
- アプリケーションの作成
デプロイタイプは「インプレースデプロイ」
最初はBlue環境がない為 - デプロイグループの作成
- デプロイの作成
控えていた下記情報を入力する
- トークンID
- リポジトリ名
yuukanehiro/sampleapp - コミットID
d6a3ba3ehogehoge8d627dcb47a51
デプロイを実行する
CodeDeployから自動的にデプロイされていく、ファイルがアップロードされるだけでサーバはダウンしない。
更新の手順
- ALBターゲットグループを新しく作成する v2-Target
- AutoScalingグループを作成し、ターゲットグループv2-Targetと紐づける
- CodeDePloy