🫠
【AWS】EC2環境でのファイル自動更新とバージョン管理手順まとめ
はじめに
今回はAWS EC2 環境で、Git を活用したファイルのバージョン管理と自動更新方法について解説します。この手法を用いることで、リモートリポジトリの変更を EC2 インスタンスに反映させ、プロジェクトの最新状態を維持することができます。
1. 環境設定
まずは EC2 インスタンスをセットアップします。
必要な環境
- EC2 インスタンス(Amazon Linux 2023 推奨)
- Git のインストール
sudo yum update -y
sudo yum install git -y
Git の設定を行います。
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
リポジトリのクローン
cd /home/ec2-user
git clone <リポジトリのURL>
cd <プロジェクト名>
2. 手動での Git 操作
リモートリポジトリからの更新を手動で確認します。
現在の状態を確認
git status
変更を適用
git pull origin <branch_name>
競合が発生した場合、対象ファイルを解決し git add
で変更をステージングした後にコミットします。
3. 自動更新の仕組み
変更を自動で反映するには、inotify-tools
を使用します。このツールを用いることで、ファイルシステムイベント(変更、作成、削除など)を監視できます。
inotify-tools
のインストール
sudo yum install inotify-tools -y
inotify-tools
の活用
4. 変更があった場合に Git の更新を自動実行するスクリプトを作成します。
自動更新スクリプト
以下のスクリプトを auto_pull.sh
として保存します。
#!/bin/bash
WATCH_DIR="/home/ec2-user/<プロジェクト名>"
LOG_FILE="/home/ec2-user/auto_pull.log"
while inotifywait -r -e modify,create,delete $WATCH_DIR; do
cd $WATCH_DIR
git stash
git pull origin <branch_name> >> $LOG_FILE 2>&1
git stash pop
echo "Changes pulled and applied at $(date)" >> $LOG_FILE
done
スクリプトに実行権限を付与します。
chmod +x auto_pull.sh
crontab
での自動起動設定
5. EC2 インスタンス起動時に自動で auto_pull.sh
を実行するよう設定します。
crontab
の設定
crontab -e
以下を追加します。
@reboot /home/ec2-user/<プロジェクト名>/auto_pull.sh
crontab
を再起動します。
sudo systemctl restart crond
6. トラブルシューティング
git pull
で競合が発生
問題: 解決方法:
競合ファイルを解決し、以下のコマンドを実行します。
git add .
git rebase --continue
inotify-tools
が動作しない
問題: 解決方法:
スクリプトのパスや実行権限を確認してください。また、ログファイルを確認してエラーメッセージを確認します。
tail -f /home/ec2-user/auto_pull.log
これで AWS EC2 環境における自動更新の仕組みが完成です。この手順を活用すれば、効率的にリモートリポジトリの変更をインスタンスに反映できます。
Discussion