2011年7月16日土曜日

さくらのVPSにgitのリポジトリをおいてmacから使う

さくらVPSを使って個人的なプロジェクトや設定ファイルのGitレポジトリ管理をしてみます。個人メモ。
(※gitosisなどの高度なgit管理は今回なし。あくまでも個人的にシンプルな管理で)

1.さくらのVPS上でやること

・gitをインストール
yumで直接インストールできないのでWebtaticリポジトリを追加、指定してインストール
$ rpm -ivh http://repo.webtatic.com/yum/centos/5/latest.rpm
$ yum -y install --enablerepo=webtatic git

・gitで使うアカウント作成(今回はkasahi)とりあえずwheelグループに追加
$ useradd kasahi
$ passwd kasahi
$ usermod -G wheel kasahi
$ id kasahi
uid=500(kasahi) gid=500(kasahi) groups=500(kasahi),10(wheel)

・/var/gitをリポジトリのルートにする。
$ mkdir /var/git
$ chmod 775 /var/git
$ chown root:wheel /var/git
$ cd /var/git
$ mkdir demo.git
$ chmod 775 demo.git
$ chown root:wheel demo.git
$ cd demo.git
・gitをshare用にinit
$ git init --bare --shared
Initialized empty shared Git repository in /var/git/demo.git/
これで(空の)共用demo.gitリポジトリができた。

この共用demo.gitにmacからアクセスしてみる。


2.続いて、mac上でやること

・gitのインストール(macのportsから)
$ sudo port install git-core
・git用のユーザ名とメールアドレスを設定
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com

・適当な場所で、さくらVPSで作ったdemo.gitリポジトリをcloneしてみる
$ cd ~/tmp
$ git clone ***.***.***.***:/var/git/demo.git demo-clone

・空のdemo.gitリポジトリにファイルを追加してみる
$ cd demo-clone
$ touch README.txt
$ git commit -am "initial checkin"

[master (root-commit) c045b23] initial checkin
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 README.txt

・demo.gitリポジトリにpushしてみる。
$ git push ***.***.***.****:/var/git/demo.git master

Counting objects: 3, done.
Writing objects: 100% (3/3), 261 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To 182.48.45.221:/var/git/demo.git
 * [new branch]      master -> master

・状態などチェック
$ git log
$ git status
※gitのコマンドは別途勉強。


ここまでで、macからさくらVPS上に立てたgit共用リポジトリを使うことができた。

続いて、コマンドラインからだけではなくwebからもリポジトリの状態が見れるように、gitwebを導入する。


3.gitwebの導入

以下、さくらVPSで作業する。

・まずapacheをインストール
$ sudo yum -y install httpd
・apacheを起動
$ sudo service httpd start

・gitwebをインストール
$ yum -y install --enablerepo=webtatic gitweb
・gitweb用の設定ファイルを修正
/etc/httpd/conf.d/git.conf というファイルが出来てるので修正
Alias /git /var/www/git

<Directory /var/www/git>
    Options +ExecCGI
    AddHandler cgi-script cgi 
    DirectoryIndex gitweb.cgi

    AuthType Basic
    AuthName "Please enter your ID and password"
    AuthUserFile /var/www/git/.htpasswd
    require valid-user
</Directory>

・一応basic認証をいれておく(==> htpasswdファイル生成(作成))※本当はIP制限もかけたほうが安全かも
$ vi /var/www/git/.htpasswd
修正後、 apache を再起動。
$ sudo service httpd restart


次に /var/www/git/gitweb.cgi に git のリポジトリパスを設定する。
72  # absolute fs-path which will be prepended to the project path
73  #our $projectroot = "/pub/scm";
74  #our $projectroot = "/var/lib/git";
75  our $projectroot = "/var/git";        # <---- /var/git を追加

apacheに/var/gitを読み込む権限があるか確認
$ id apache
uid=48(apache) gid=48(apache) 所属グループ=48(apache)
ないので追加
$ sudo usermod -G wheel apache

あとは、***.***.***.***/gitにアクセスすれば、web経由でリポジトリが確認できる。

便利。