CentOSのアップデートが最近遅いので
ScientificLinux6.1を使ってGit Serverを立ててみた。(UbuntuでもOKでした)
ざっと調べたところ gitosisとgitoliteというのが2つあったが、前者のほうは開発が止まっているようだったのでgitoliteを使うことにした。
必要な環境
・クライアント(MacかLinuxが楽。Windowsのやり方はここでは紹介していません)
・サーバー(Linux系だったらだいたいOKだと思います)
事前準備
・クライアント、サーバー共にgitをインストールしておく
以下手順(サーバー側とクライアント側の作業があるので気をつけてください)
サーバー
まず gitolite という名前でユーザを作成。GUI(system->administration->Users and Groups)を使って
やると簡単にできます。
コマンドでやる場合は,
> useradd gitolite
> passwd gitolite
あとsshのキー保存用のディレクトリを作っておきます
> su gitolite
> mkdir ~/.ssh
クライアント
> ssh-keygen -t rsa
でsshのキーを作成します。
保存場所や名前はデフォルトでよいです。パスワードは任意。
この結果 ~/.ssh/以下に id_rsa, id_rsa.pubが生成されます。
前者が秘密鍵で後者が共通鍵です。
ここで名前を変えておきます。 {user_name}は自由に決めてください。
> mv id_rsa {user_name}
> mv id_rsa.pub {user_name}.pub
次に共通鍵をサーバーに保存します。{server_name}はサーバーのホスト名かipアドレス。
> scp ~/.ssh/{user_name}.pub gitolite@{server_name}:/home/gitolite/.ssh
(connection refused ではじかれた場合はサーバー側のsshdが動いていないか設定がおかしいかなのでなおす)
sshでログインできるか確認
> ssh gitolite@{server_name}
ここで特に
The authenticity of host can't be established ...などと出なければOKです。
サーバー
> su gitolite
> cp ~/.ssh/{user_name}.pub /tmp
> cd ~
> git clone git://github.com/sitaramc/gitolite
> cd gitolite
> src/gl-system-install
> vi ~/.bashrc
PATH="$PATH":/home/gitolite/bin
を追加
> source ~/.bashrc
> gl-setup /tmp/{user_name}.pub
hit-enterでENTERキーを押すとviが起動するので:qでぬける。
クライアント
> cd ~/.ssh
> touch config
> vi config
以下の内容をconfigファイルに記載{server_name},{user_name}は前記と同じにする。
host gitolite
user gitolite
hostname {server_name}
port 22
identityfile ~/.ssh/{user_name}
gitolite-adminの設定用のディレクトリを保存するディレクトリ(任意)に移動します。
> cd ~/{WORK_DIR}
> git clone gitolite:gitolite-admin
これで何事も無くダウンロードできたらほぼ問題ないと思います。
ちなみに、私はここで以下のエラーでかなり手こずりましたが、この手順でやれば出ませんでした。
fatal:gitolite-admin.git does not appear to be a git repository
git clone gitolite@{server_name}:repositories/gitolite-adminとやると一見うまくいったように見えますが、pushができなくなるので無駄です。
上記エラーではまった場合のチェックポイント
・サーバー:/home/gitolite/.ssh/authorized_keysの中身を確認。
⇒command="/home/gitolite/bin/gl-auth-command {user_name} ではじまってるか?なかったら最初からやりなおしてみる。。他に変なのがまじってたら消す。
・サーバー:/home/gitolite/.gitolite/keydirに{user_name}.pubがはいってるか?
一応pushできるか確認
> cd gitolite-admin
> touch README
> git add .
> git commit -m "add README file"
> git push
以上で最初の設定は完了です。
0 件のコメント:
コメントを投稿