Gitにプッシュして自動的に本番環境に反映させる

サーバー開発
この記事は約3分で読めます。
スポンサーリンク

やりたかった事
Gitのマスターブランチにプッシュしたら自動的にサイトに反映させる

出来上がった物
本番サーバーにGitリポジトリをおいて、そこにプッシュしたら本番のディレクトリを更新する

必要なもの
SSHでGitコマンドが使えるサーバー

今回はAWSでEC2を利用する機会があったのでそこにGitを導入し、リポジトリを置くことにしました
GitHubでCIとか利用すればGitHubにデータを置いて更新できるのでしょうけど、外部サーバーにアップロードする部分が手間だったのでやめました
Github側で本番環境に対しpullさせるよう命令を出すみたいな感じですかね。双方向の設定が大変そう。

なので本番サーバーにGitリポジトリを置くことにしました

EC2にssh接続します
Gitが使えるようにGitコマンドはインストールしておきます
gitリポジトリを置きたい場所に移動してリポジトリを作るコマンドを叩きます

cd /home/user
git init --bare --shared test.git

/home/user/test.gitのような形でディレクトリができます

あとは、sshでローカルからここに向けてプッシュするだけです
push先設定をこんな感じにすればOK
もちろんIPアドレスの部分はサーバーに合わせて変更してほしい
ssh接続ができるように設定がなっていればpushできるはず

ssh://0.0.0.0/home/user/test.git

ではEC2でこのpushされたデータをcloneします

git clone /home/user/test.git /home/user/test-clone

こんな感じで。パスの部分が同サーバーなのでそのディレクトリになる感じ。

これでGitリポジトリと更新する先が用意できました。

/home/user/test.gitの中にあるものをいじってgitにpushされた時に実行するコマンドを書きます

vim /home/user/test.git/hooks/post-receive

ここにpushされた時に走らせたいコマンドを書いていきます
hooksの中には他にもファイルがありプッシュ時以外も色々なタイミングでコマンドを走らせることができます

!#bin/bash

cd /home/user/test-clone
git --git-dir=.git pull origin master

これで自動的にmasterブランチのデータに更新してくれます。
直接データいじったりしちゃうとコンフリクトしたりするので基本イジらないこと。
何かあったら直接リセットすれば何とかなる。.gitignoreはちゃんと指定しておきましょう

コメント

タイトルとURLをコピーしました