AWSのCodeDeployサービスを使用して、EC2にファイルをデプロイ
現行の環境で、複数ファイルをデプロイする際での手順。
(続けてCodePiplineについても追記)
VPC作成(ネットに接続しているVPCが既にあれば飛ばしてOK)
VPCダッシュボード>VPCウィザードを起動>「パブリックとプライベートサブネットを持つVPC」で選択
IPv4CIDRブロック:10.0.0.0/16
VPC名:わかりやすい任意の名前
パブリックサブネットIPv4CIDR:10.0.0.0/24
パブリックサブネット名:わかりやすい任意の名前
プライベートサブネットIPv4CIDR:10.0.0.1/24
アベイラビリティーゾーン:ap-northeast-1a
プライベートサブネット名:わかりやすい任意の名前
Elastic IP 割り当て ID:用意したElasticIPを選択する(別タブでVPC>Elastic IP>Elastic IP アドレスの割り当て>割り当て)
IAMロール作成
一つ目作成
IAMダッシュボード>ロール>ロールを作成
ユースケースの選択:EC2
ロールの作成:awscodedeployroleを検索して選択
任意のタグと名前(EC2Codedeployroleなど)を付けて作成
二つ目作成
IAMダッシュボード>ロール>ロールを作成
ユースケースの選択:EC2
ロールの作成:awscodedeployroleを検索して選択
任意のタグと名前(deploygroupCodedeployroleなど)を付けて作成
*ロール>作成したロールを選択>信頼関係のタブ>信頼関係の編集
ポリシードキュメント内のService項目を以下に書き換える
"Service": "codedeploy.ap-northeast-1.amazonaws.com"
EC2起動
EC2ダッシュボード>インスタンスを起動
AMI
Amazon Linux 2
インスタンスタイプ
t2.micro
インスタンスの設定
ネットワークとサブネット:インターネットに接続できるもの
自動割り当てパブリック IP:有効
IAM ロール:今回作成したロール
ストレージの追加
デフォルトの汎用SSD
タグの追加
わかりやすい任意の名タグ
セキュリティグループの設定
セキュリティグループの割り当て:新しいセキュリティグループを作成する
セキュリティグループ名:[アプリ名]-sg など
説明:セキュリティグループ名と同じでよい
ルールの追加:HTTP 0.0.0.0/0
インスタンスにSSHで接続する
*WindowsはTeraTermなどを起動
*つなげたいインスタンスのパブリックIPv4アドレスをコピー
*ホスト(T):[インスタンスのIPv4アドレス]
*ユーザー名:ec2-usr
*RSA/DSA/ECDSA/ED25519鍵を使う
*インスタンスを起動したときにダウンロードしたキーペアを選択
ターミナルの操作
vi install.sh
でviエディタへ
以下を貼り付けて保存
sudo yum update
sudo yum install ruby
sudo yum install wget
#!/bin/bash
$CODEDEPLOY_BIN stop
yum erase codedeploy-agent -y
cd /home/ec2-user
wget https://aws-codedeploy-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
以下コマンドで作成したシェルスクリプトに権限を付与
chmod +x install.sh
権限が付与されていることを確認
ll install.sh
シェルスクリプトを実行
./install.sh
LUMPをインストールしておく
sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
sudo yum install -y httpd mariadb-server
sudo systemctl start httpd
sudo systemctl enable httpd
githubの操作
自分のgithub上で新しいリポジトリを作成
gitの操作
gitbashでこちらのAWSのgihubリポジトリのファイルをダウンロードする
git clone git clone https://github.com/aws-samples/aws-codedeploy-samples.git
*appspec.yml内のsourceを書き換える(以下PHPアプリケーションなどの複数ファイルの場合)
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html/
*必要に応じて新しいディレクトリを用意する
mkdir ディレクトリ名
cd ディレクトリ名
*ダウンロードしてきたscriptsディレクトリとappspec.yml、デプロイしたいPHPアプリケーションを一つのディレクトリにまとめる
*githubリポジトリに上記ディレクトリの中身をpush
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/アカウント名/リポジトリ名.git
git push -u origin main
AWS CodeDeployの設定
アプリケーションの作成
Codedeployのコンソール>アプリケーションの作成
アプリケーション名:任意の名前
コンピューティングプラットフォーム:EC2/オンプレミス
デプロイグループの作成
アプリケーション名:任意の名前
サービスロール:今回作成したIAMロール名のサービスロールを選択
デプロイタイプ:インプレース
環境設定:Amazon EC2 インスタンス
インスタンスに設定したタグを指定する
ロードバランサー:有効にするのチェックをはずす
そのほかはデフォルトでデプロイグループの作成
デプロイの作成
アプリケーションは GitHub に格納されています を選択
GitHub トークン名:GitHubアカウント名をで検索し、GitHubアカウントと接続 をクリック
リポジトリ名:アカウント/リポジトリ名
コミットID:最新のコミットIDを入力
「成功」が表示されたらデプロイ完了!