Gitリポジトリ管理には、GitLabとか高機能のものもあるが、手軽に使えそうなので「gitolite」を導入する。
gitoliteのaptパッケージはなくなってるので、GitHubから取得しREADMEを参考にインストールする。
尚、gitパッケージはインストール済みとする。
gitoliteでは、管理リポジトリのファイルを編集しpushする事で、ユーザ追加・リポジトリ追加・アクセス制限などができる。
ユーザ名「git」を作成する
$ sudo adduser --system --shell /bin/bash --group --disabled-password --home /home/git git
$ sudo su - git (gitユーザにログインする)
$ mkdir -p $HOME/bin
$ cp /etc/skel/.* . ($HOME/bin にPATHを通す為にログインスクリプトを取得)
$ exit
※ユーザ名は「git」以外でも可能なよう。
管理する端末ユーザで、SSHの公開鍵を作成し、gitユーザからアクセスできる所に置いておく
$ ssh-keygen -t rsa
$ cp .ssh/id_rsa.pub /tmp/hoge.pub
gitユーザで、GitHubよりgitoliteを取得しインストール
$ sudo su - git
$ git clone git://github.com/sitaramc/gitolite
$ gitolite/install -to $HOME/bin
$ gitolite setup -pk /tmp/hoge.pub ($HOME/binにPATHが通ってるものとする)
$ exit
※リポジトリの所在は、/home/git/repositories/ となる。
/home/git/.gitolite.rc の編集
新しく作成するリポジトリが、git-daemon,gitwebのサービスからReadできるように、gitグループからのアクセス権限が設定されるようにしておく。(gitグループに、各サービスのユーザを追加して対応)
#UMASK => 0077,
UMASK => 0027,
※git-daemon, gitwebとの連携 は、それぞれのページ参照
リポジトリのアクセス権変更
gitグループのユーザーがリポジトリにアクセスできるようにするため、リポジトリがあるディレクトリとリポジトリのディレクトリ・ファイルのパーミションを変更する。
# chmod 750 /home/git/repositoris/
# chmod g+r /home/git/projects.list
# chmod -R g+r /home/git/repositories/testging.git
# find /home/git/repositories/testing.git -type d -exec chmod g+x {} +
管理するパソコンのユーザから、管理リポジトリデータを取得
$ git clone git@<サーバIP>:gitolite-admin
- gitolite-admin/conf/フォルダの、gitolite.conf のファイルを編集しpushする事で管理する。
- ユーザの追加はkeydir/に公開鍵のファイルを追加してcommit,push。同じユーザ名で複数のマシンからアクセスしたい場合は、user@hostname.pubというファイル形式にすればOK。
テスト用リポジトリの取得して動作確認する
$ git clone git@<サーバIP>:testing
留意点
- アクセスユーザに、「@all」を指定すると、daemon, gitweb も同時に指定した事になる。
教訓
日本語の説明が欲しいくて、とにかくググってWebを探したりするが、時にはオリジナルの原文を参考にした方が早い。
追記(2016/9月)
Gitサーバは、GitLabに移行した。

【Ubuntu 16.04 LTS Server】GitLabでGitサーバを構築する
gitliteをGitサーバとして使ってきたが、GitLabもaptで簡単にインストール出来るようになってるようで、Ubuntu 16.04 LTS Server にインストールして試す。<追記 2018/05/04>Ubuntu 18.0...
参考
- GitHub gitolite
- Git – Official Ubuntu Documentation
- Git管理の神ツール「Gitolite」なら、ここまでできる! (1/2)
- Git管理の神ツール「Gitolite」なら、ここまでできる! (2/2)
- GitHubで複数のアカウントを使う場合のSSHの設定
- gitolite-tools(リポジトリのバックアップなど)
- gitosisからgitoliteに移行(Ubuntu)
- gitolite v3.2.0 を入れてみた
- CentOS7でgitoliteを導入
- gitoliteとgitweb
- gitリポジトリの公開 web, ssh, git
- gitoliteドキュメントの本拠地?
コメント