2015年3月24日火曜日

GitlistでGithubみたいにWebからリポジトリを見られるようにした

GithubみたいにWebからリポジトリを確認したいな.

ODROID C1のUbuntuサーバ構築も一段落ついたので,今回はGitリポジトリをWebから閲覧できるようにしたいと思います. gitlistを使って実現します.チーム内だけの非公開リポジトリをつくるときなどに便利そうですよね.
gitlistでgitリポジトリを表示したところ

インストールと設定

$git clone https://github.com/klaussilveira/gitlist.git

$cd gitlist
$less README.md
Apacheは前回の通りインストール済みです.
$sudo apt-get install apache2

しかしREAD.mdによるとrewriteモジュールが必要なようなので有効にします.
$sudo apt-get install php5 
$sudo a2enmod rewrite 
gitlistはPHPで書かれているそうですが,まだPHPをインストールしていなかったので,インストールします.
$sudo apt-get install php5
$sudo a2enmod php5

さて,デプロイします.Apacheで設定したDocumentRootのディレクトリ以下にコピーするだけです.
cacheディレクトリがなければ作成してパーミッション変更.設定ファイルはサンプルをコピーして使います.
$sudo mv gitlist /var/www/html
$sudo chmod 777 cache
$cp config.ini-example config.ini
$emacs config.ini
[git]
client = '/usr/bin/git' ; ←git実行ファイルの場所
default_branch = 'master' ; ←デフォルトのブランチはマスターにするよ
repositories[] = '/home/git/repositories/' ;←リポジトリの場所,複数ある場合は改行して追記

; hidden[] = '/home/git/repositories/BetaTest' ; ←隠したいリポジトリを書く

debug = false
cache = true
theme = "default"
baseurl = "http://localhost/gitlist"; ←これを追記している記述を見かけます.

URLをRewriteするための.htaccessが既にgitlistの中に入っていると思います. Apache側で.htaccessを許可するか,.htaccessの中身を<Direcotry>セクションで書いてやるかして,,

これで,OKなはずです.Webブラウザからhttp://xxx.xxx.xx/gitlistで表示されるはず..

遭遇したトラブル?

空白ページが表示された( ゚Д゚)ヒョエー

blank pageです.真っ白.色々試行錯誤した結果ですが,gitのリポジトリディレクトリ(repositories)はApacheのユーザすなわちwww-dataでもアクセスできる許可が要るようです.リポジトリディレクトリのパーミッションを775など公開用にしてやるか,リポジトリのグループにwww-dataを足すなど,方法はいくつかあると思いますが,ともかくパーミッションがないとWebからも見れないみたいです.

私の場合は,リポジトリの持ち主はroot:repoでrepoグループに属していればアクセス可能にしていたので,
sudo gpasswd -a www-data repo
www-dataをrepoに追加して対応しました.

リポジトリの中身を見ようとすると404 NOT FOUND.

.htaccessを使用するなどして適切なRewrite設定ができていないとリポジトリの一覧ページが表示されても,リポジトリの中身を見ようとすと404エラーになりました.