gitでWebページのデプロイ
銀鷹です。
お題の通りですが、金曜日に研究室のWebページのデプロイを
gitで出来るようにしたのでまとめておきます。
今までは、Webページの管理者がWinSCPとかで頑張ってやってたんだけど、
更新が衝突することが多かったのでやってみた。
あと、ついでに研究室のGitLabにもミラーリポジトリを作ったので更新履歴がWebでも見れる。
git万歳。
必要な手順については、以下のとおり。
1. Webページ用のbareリポジトリの作成
どこか、適当な場所に作る。
gitでpushする際に、SSHでログインするので、SSHでログイン出来るユーザのホームに作った。
mkdir -p ~/repos/web cd ~/repos/web $ git init --bare --shared=true
bareリポジトリ
作業ファイルのない、管理情報だけのリポジトリらしい。
つまるところ、普段pushする先のリポジトリ(サーバ側のリポジトリ)ということなんだと思う。
2. baraリポジトリをWebページのDocumentRootでclone
cd /var/www sudo git clone ~/repos/web ##/var/www/webがDocumentRoot sudo chown -R yutaka:yutaka web/
3. bareリポジトリにhookを設定
post-receive(クライアントからのpushが終わったら呼ばれる)で、
2.でcloneしたリポジトリ(DocumentRoot)でpullするhookを設定する。
cd ~/repost/www/hooks cp post-receive.sample post-receive echo "(cd /var/www/web; git --git-dir=.git pull)"
4. クライアントでcloneしてWebページのコンテンツをデプロイ
まずは、SSHの設定をする。
# .ssh/config Host web-deploy User yutaka Port 10022 Hostname 10.0.0.1 IdentityFile ~/.ssh/id_rsa
設定が終わったらリポジトリをcloneする。
cd git clone web-deploy:~/repos/web
リポジトリに変更を加えてpush、これでWebページのコンテンツが更新される。
cd web echo "test" > test.txt git add . git commit -m "add: test.txt" git push
以上で設定は完了。
これで、gitで簡単なデプロイが出来るようになる。
研究室の環境では、これに加えて、事前に作成したミラーへもpushするようにしてあるので、
ミラーが登録されているGitLabで更新履歴が見れるので便利。
感想
適当にbareリポジトリを作っておくと、あとはSSHでログインさえ出来ればcloneやpushが出来て、
hookを仕掛けるだけでお手軽にこういった環境を作れるのは便利だ。
今回の場合、基本的には静的なコンテンツしか無いので、単純にpullで済むけど、
そうじゃない場合はhookに頼るんじゃなくて、fabricとかを使ったほうがいいのかな?
いまいち、gitでのデプロイと他のデプロイツールの使い分けがわからない。