やりたかった事
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はちゃんと指定しておきましょう
コメント