※
この記事は以下の記事に書きなおしています。
CentOS - gitを使ったデプロイ方法 - Qiita
概要
- Localで開発しているプロジェクトをGitで管理したい。バックアップも兼ねて。
- でもGitHubにリモートリポジトリ(中央リポジトリ)を置いちゃうと公開されるのでそれは無理
- DropBoxに置いてサーバーからPullしたらいいんじゃね?
- でもそれサーバーにDropBox入れないといけないのでめんどくさそう。
- つーか、本番環境にリモートリポジトリ置いたらいいんじゃね?
と言うわけで、本番環境のさくらVPSにGitのリモートリポジトリを置くことにしました。
調べてみるとVPS側に「Gitサーバーを立てる」みたいな記事を見つけたんですが、そんなことしなくても実現可能だとわかりました。
(それ以前にGitサーバーの意味が未だにわかりません)
メリット
- 本番環境に同期できる
- 以前のバージョンに簡単に戻せる
- 複数のPCで開発できる
1. 本番環境に同期できる
以前はrsyncを使って本番環境にプロジェクトをUpLoadしていましたが、
もちろんGit経由でも簡単にできます。
LocalでCommit&Pushして、RemoteでPullするだけです。
2. 以前のバージョンに簡単に戻せる
Localでテストして万全の状態でRemoteに上げてバージョンアップしたつもりが、
本番環境ではうまく動かないなんてことがよくあります。
そんな時もGitですから簡単に以前のバージョンに戻すことができます。
3. 複数のPCで開発できる
なんかもう当たり前のことばっかりで申し訳ないんですが、
git cloneすれば別のPCも開発に参加できます。
やってみよう!(前準備)
Macはもともとターミナルから簡単にSSHでサーバーにログインできますが、
以下の設定をするともっと簡単になります。
~/.ssh/config というファイルを作ります。
host hoge
HostName ***.***.***.**
Port 12345
User myname
IdentityFile ~/.ssh/id_rsa
- HostName :IPアドレス or ドメイン
- Port :設定してある接続用のPort番号
- User :ログインユーザー名
- IdentityFile :ssh鍵の場所
以上の様に設定していると
ssh hoge
だけでログインできるようになります。
そして
hoge:/home/hoge/
という風にパスを指定することができます。
やってみよう!
それでは本題です。
1. まずLocalをGit initしておく
Git init MyProject
もしくはSourceTreeとかでGitリポジトリ作成(開発中のプロジェクトでもOK)
2. VPSでgit init --bareする
cd /home/hoge/git
git init --bare MyProject.git
3. Localでgit remote addする
git remote add server hoge:/home/hoge/git/MyProject.git
追記: 2015/02/28
すでにプロジェクトのremoteをgithub等にしている場合はoriginを追加して、複数のremoteに同時にpushすることができます。
.git/configにurlを追加します。
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@bitbucket.org:myname/MyProject.git
url = hoge:/home/hoge/git/MyProject.git
4. LocalでCommit&Pushする。
(SourceTreeとかでテキトーにやっちゃってください)
5. VPSの中央リポジトリからVPSの別の場所にgit cloneする。
cd /home/projects
mkdir MyProject
git clone /home/hoge/git/MyProject.git
上記が完了したらあとはLocalでガシガシ開発して
LocalでCommit&Push > VPSでPull
これだけでUpLoadできるようになります。
6. remoteにpushしたら勝手にVPSでpullする
追記: 2015/02/28
コメント欄で教えていただきました。
VPSの中央リポジトリのpost-receiveに設定を書き込みます。
cloneした方ではなく、bareの方です。(ここ注意)
vim /home/hoge/git/MyProject.git/hooks/post-receive
#!/bin/sh
cd /home/projects/MyProject
git --git-dir=.git pull origin master
ここまで設定したら、LocalでCommit&Pushだけでアップロードできるようになります。
以上です。