さくらのVPSに10分でgitホスティングを構築する
gitoliteというソフトウェアを使うと簡単にgitのセンターリポジトリを構築できる。安くて使い勝手のいいさくらのVPSに構築することで、簡単にプライベートなgitリポジトリを持つことができるのだ。
先日社内に発足した「もくもく会」的な集いで構築してみたので、作業メモを晒しておく。
VPSのOSはデフォルトのCentOS 5.5 64bitを前提にしているが、yum以外は他のOSでもあまり変わらないだろう。
ちなみにリモート(サーバ)のコマンドは緑、ローカル(ワークステーション)のコマンドは青で表記している。
gitのインストール (3分)
yumのリポジトリにrpmforgeを追加する。こちらの記事を参考に「サードパーティ製リポジトリ追加」を実行しよう。
% sudo wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
% sudo rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
追加したらgitのインストール。
% sudo yum install git
git管理用ユーザの作成と設定 (1分)
ここではgitoliteというユーザがgitへのアクセスを行うことにする。
# useradd gitolite
# passwd gitolite
ローカルから鍵認証で入れるように設定しておく。やることは…
- /home/gitolite/.ssh/を作り、パーミションを0700にする。
- /home/gitolite/.ssh/に公開鍵(id_ras.pub)をコピーする。
- authorized_keysという名前に変更し、パーミションを0600にする。
% cd ~
% mkdir .ssh -m 0700
% cp id_rsa.pub .ssh/authorized_keys
% chmod 0600 .ssh/authorized_keys
ローカルからログインできればok。
% ssh gitolite@sakura_vps.exapmle.com
gitoliteのインストール (1分)
以下の作業はすべて「ローカルのマシン」で行うということに注意。
% git clone git://github.com/sitaramc/gitolite
% cd gitolite/src
インストールコマンドのヘルプを見てみる。
% ./gl-easy-install --help
Usage: ./gl-easy-install [-q] user host [port] admin_name # install
./gl-easy-install [-q] user host [port] # upgrade
(snip)
ユーザ名、サーバのホスト名、管理者名が必要。
nameはgitolite接続用のユーザ名。先ほど作った「gitolite」のこと。admin_nameは自分の名前。
% ./gl-easy-install --help gitolite sakura_vps.example.com {admin_name}
-qオプションは「quiet mode」。仕組みが気になるならつけないで実行し、出力を読んでみよう。基本的にはenterを押していくだけ。
途中、gitoliteアクセス専用のキーペアを作る。パスフレーズの入力を求められるのでお好みのものを。サーバ側のauthorized_keyを見るといろいろ制限されてるので、個人的にはパスフレーズなしでもいいと思う。
インストーラがしてくれることは…
- gitoliteアクセス用キーペアの作成
- SSH設定ファイルの追記
作成してくれるキーペアは以下の2ファイル。
~/.ssh/{admin_user}
~/.ssh/{admin_user}.pub
~/.ssh/configには以下が追記される。
host gitolite
user {user}
hostname sakura_vps.example.com
port 22
identityfile ~/.ssh/{admin_user}
リポジトリへのアクセス (1分)
.ssh/configに設定されていれば、管理者は以下でリポジトリにアクセスできる。
gitolite:reponame.git
他のユーザがアクセスするには以下。下はSSHが22番以外のポートで待ち受けている場合に使う。
gitolite@sakura_vps.exapmle.com:reponame.git
ssh://gitolite@sakura_vps.exapmle.com:22/reponame.git
ユーザの追加 (3分)
hogeさんを追加してみよう。
% ssh-keygen -t rsa
以下のファイルが作られる。
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
秘密鍵(id_rsa)はhogeさんに渡す。安全な方法でね。
公開鍵(id_rsa.pub)はadminリポジトリにcommitする。
% mv ~/.ssh/id_rsa.pub ~/gitolite-admin/keydir/hoge.pub
公開鍵の名前は{username}.pubに固定されている。「.pub」で終わらないと怒られるので注意。
あとはgitでaddしてcommitしてpushすれば、hogeさんはリポジトリへのアクセスが可能になる。「設定ファイルにhogeさんの名前がないが大丈夫か?」と警告してくれるという親切設計。
hogeさん側は、リポジトリへアクセスするときもらった秘密鍵を使う、という設定を~/.ssh/configに書いておく。
Host sakura_vps.exapmle.com
Port 22
IdentityFile ~/.ssh/hoge
すでに「testing」というリポジトリが存在するので、cloneしてみよう。
% git clone gitolite@sakura_vps.exapmle.com:testing.git
リポジトリの追加 (2分)
~/gitolite-admin/conf/gitolite.confを編集する。「testing」があるので参考にしよう。Rは読み込み、Wは書き込み、+はrewindの権限。先頭に「@」がつくとグループ指定になる。
repo dotfiles
RW+ = kwappa
ファイルごと / パスごとに制限かけるなど細かい設定もできるようだ。詳細はPro Gitとcloneしたgitoliteのconf/example.confを参考にしよう。
まとめ
実は足すと11分経過しているし、そもそも10分というタイトルが釣りだしごめんなさい。
しかし、gitのリモートリポジトリを簡単に持てるのは非常にありがたい。すべてのコードをgithubに晒すわけにはいかないよね。今後は個人webのソースなどもどんどんこっちで管理してしまおう。
なお、この記事の内容はほとんどこちらの記事とかぶってしまっている。社内もくもく会でやった内容を記録するために書いていたら、すでに先達がいた…というわけ。しっかり参考にさせていただいた(ありがとうございました)。
また、もくもく会で参照していたのは「Pro Git」の4-8。日本語版にはまだ反映されていないので、英語がんばろう。
Links
- sitaramc/gitolite - GitHub
- さくらのVPS|VPS(仮想専用サーバ)はさくらインターネット
- gitolite で Git リポジトリへの SSH アクセスを制御する - WebOS Goodies
- http://webos-goodies.jp/archives/access_control_to_git_repositories_with_gitlite.html
- さくらVPSでyumを設定して簡単にパッケージ管理する – さくらVPS設定メモ3 | Curiosity Drives Me
- Pro Git - Pro Git 4.8 Git on the Server Gitolite