読者です 読者をやめる 読者になる 読者になる

opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

gitoliteをArchLinuxに導入 (さくらVPS)

ということで久々にまともな記事を書こう。
gitoliteというgitのリポジトリを管理してくれるサーバー的なツールをArchLinuxサーバーに導入し、完璧個人なprivateリポジトリを制作できるようにする。
mercurialにはこういうツールないんですかね... まあいいや。
とりあえずgitoliteは

https://github.com/sitaramc/gitolite/

で、オープンソースで公開されている。

インストール手順は上のリポジトリのREADMEにも書いてるんだけど、英語だし多少わかりにくい部分があったのでここではその補足も兼ねて。基本的な手順はリポジトリのREADMEに倣ってると思うんだけどどうだろう。
とりあえずうちで導入して成功した方法をメモしている。ちなみに導入したのはついさっき。

管理ユーザーを決めて鍵を生成する

管理ユーザーを作る。クライアント側でおk。 ということでMacOSX(クライアント)のopamp(まあ、自分の普段使ってるユーザー)を管理ユーザーにする。(別に別途制作してもいいと思うけど)

管理ユーザーが決まったら、クライアント側で鍵を生成する。

$ ssh-keygen -t rsa

を使い鍵を適当に生成。

今回は鍵の名前を"gitserver_rsa"にした。

鍵を生成したら、~/.ssh/configを設定するのを忘れないように。サンプルとして以下を晒すよ(コピペしても動かないので適切に変更してね)

Host user_server_ip
        user gitolite
        hostname user_server_ip
        port 22
        identityfile ~/.ssh/gitserver_rsa

user_server_ipには、あなたのサーバーのIPアドレスとかドメインを記述すること。
そして一番最後の行は、生成した鍵の名前にすること。今回はgitserver_rsaで作ったので上のようになる。

サーバー側にgitolite用ユーザーを作る

gitoliteをインストールして走らせるユーザーを作成する。

$ sudo adduser

なりuseraddなりして適当に作る。
※ useraddする場合は-mをつけてhomeディレクトリが生成されるようにすること。

今回はこのユーザー名を"gitserver"とした。

gitserverに先ほど生成した鍵を渡す(公開キー)

公開キーを渡す必要がある。ftpなりsshなりDropboxなり何なりで渡す。ftpって実際危ない気がする。
渡された公開キー(今回の場合、鍵名がgitserver_rsaなので渡したファイル名は"gitserver_rsa.pub")は、gitserverユーザーの$HOME以下に保存しておく。

gitoliteをインストールする

gitserverユーザーにログインし、homeに移動

$ cd ~

そして作業をはじめる。

$ git clone git://github.com/sitaramc/gitolite

まずこのようにgitoliteをcloneして

$ mkdir ~/bin

上のようにhome以下にbinディレクトリを作成。

続いて

$ gitolite/install -to $HOME/bin

を実行して$HOME/bin(さっき作った奴)にインストールする。(一瞬で終わる)

※もうcloneしたgitoliteディレクトリは必要ないので消しても構わない。

※あと、$HOME/binにはPATHを通しておくと良い。以下ではPATHは通してあるものとして作業をすすめる。

gitoliteをsetupする

先ほどの公開キーがちゃんとあるのを確認して以下のコマンド
(一応homeに戻るのを忘れないように)

$ cd ~
$ gitolite setup -pk gitserver.pub

これで鍵の登録ができたと思う。(WARNINGとか出るけど正常なので気にしない)

クライアント側に戻って管理用のリポジトリをいじってみる

どうやら新規リポジトリの生成とかユーザーの追加などはクライアント側から管理用リポジトリgitolite-adminをcloneし、更新しcommitしpushすることで実現してるようだ。
ということで早速これをcloneするよ。

最初に決めた管理ユーザーにログインし、早速以下のコマンドを

$ git clone gitserver@host:gitolite-admin

ちょっとだけこのコマンドについて解説すると、cloneの後はURLになっているが

◯◯@△△:gitolite-admin

という部分の、◯◯にはserver側のgitolite用ユーザーの名前(この例だとgitserverになる)。
△△という部分にはhost つまりはサーバーのIPとかドメインになる。
最後のとこは固定。


で、無事cloneできたら設定をいじってみる。
lsしたら"conf"と"keydir"というものがあると思う。

"keydir"はその名の通り、ユーザーの公開キーを管理するディレクトリ。初期ではサーバー管理者のもののみが入ってると思う。

"conf"というのは、設定ファイルが入ってるようだ。今回はこちらをいじってみる。

$ vim conf/gitolite.conf

などと適当なエディタで開いてみると

repo gitolite-admin
    RW+     =   gitserver_rsa

repo testing
    RW+     =   @all

となっている。ここに新しいリポジトリを試しに追加してみる。

今回はちょっとgat3に向けて色々実験したいことがあるのでその実験リポジトリを作る。もちろん自分以外に読んでくださってる方は好きな名前にしていいと思う。

epo gitolite-admin
    RW+     =   gitserver_rsa

repo testing
    RW+     =   @all

repo gat3_for_testing
    RW      =   @all

"@all"にすると全ユーザーからのアクセスを許可するらしい。
今回はちょっと時間もないのでユーザーの作成とかグループの作成については触れないけどね。(今後また記事を書くかも)

RWは上を見てると"+"が要りそうだけど、無くていいのでb



上記のようにできたらcommitしてpushする。

$ git add .
$ git commit -m "added gat3_for_testing repo."
$ git push

と、一連の作業を行い無事pushできたら成功。

作ったテストリポジトリをcloneして見たり。

早速今作ったリポジトリをcloneして更新してpushしてみよう。生成されたリポジトリは全くの空状態だよ。

$ git clone ssh://gitserver@host/gat3_for_testing

ここもさっきと同じで"@"より左にはサーバー側のgitolite用ユーザーの名前を入力すること。これは必須。
で、hostにはサーバーのIPなど。で、最後は先程作ったリポジトリ名を。

これでcloneされる。リポジトリが空っぽだぜ的な警告がでる。

$ cd gat3_for_testing
$ touch README
$ git add .
$ git commit -m "first commit."

と、適当にリポジトリに更新を加えてコミット。
そしてpushするのだが、その前に

$ git push origin master

しておく。どうやら向こうにはmasterブランチすら存在してないようで...

とりあえず、これを実行したら

$ git push

して出来れば成功!!

終わり

終了です。お疲れ様でした。
我ながら比較的スムーズにできた気がする。鍵周りで迷ったけどなんとかなったようだ。


mercurialにはこういうツールってないんですかね... ないなら自作したいけどそんな暇も技術もなかった。


しかしこうしてgit記事を書いてるとgit勢かと思われそうだけどmercurial派なのは揺るぎませんね。
一応最低限度くらいはどっちも使える気がする。


ちなみに今回gat3_for_testingリポジトリで試すことは、ミリ秒のカウントをする実験と新UIの研究というかお試しというか。
まあ、ぼちぼちやっていきますかね。

Firefox ブラウザ無料ダウンロード