cgit(apache2)のインストール方法

cgitのインストール方法をまとめました。

httpdにapache2を使ってます。


1 cgitとは

gitリポジトリをhttpdで閲覧する為のウェブフロントエンドです。

ウェブページにアクセスするとリポジトリの一覧と各リビジョンを閲覧することができます。

git cloneは可能ですが、git pushはできません。

sshで管理されたgitリポジトリを閲覧できるようにすると良いでしょう。

Linuxカーネルのリポジトリもcgitで閲覧できるようになっています。

2 cgitのインストール

2.1 CentOS 7

Fedora 22のSRPMとRPMを利用します。

cgitパッケージはhttpd-filesystemパッケージを必要とするので先にインストールします。

httpd-filesystemパッケージはアーキテクチャ非依存のファイル・ディレクトリ群です。

$ wget https://dl.fedoraproject.org/pub/fedora/linux/releases/22/Everything/x86_64/os/Packages/h/httpd-filesystem-2.4.12-1.fc22.noarch.rpm
$ sudo yum localinstall -y httpd-filesystem-2.4.12-1.fc22.noarch.rpm
$ wget https://dl.fedoraproject.org/pub/fedora/linux/releases/22/Everything/source/SRPMS/c/cgit-0.11.2-1.fc22.src.rpm
$ sudo yum install -y rpmdevtools highlight asciidoc \
libcurl-devel openssl-devel lua-devel gcc
$ rpmbuild --rebuild cgit-0.11.2-1.fc22.src.rpm
$ sudo yum localinstall -y ~/rpmbuild/RPMS/x86_64/cgit-0.11.2-1.el7.centos.x86_64.rpm
$ sudo systemctl enable httpd.service
$ sudo systemctl start httpd.service
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
$ sudo chcon -R --reference=/var/www/cgi-bin/cgit /path/to/repo

/var/www/cgi-bin/cgitがリポジトリがあるディレクトリをアクセスできるように、chconでSELinuxのセキュリティコンテキストを変更します。

2.2 Fedora 22

cgitをdnfでインストールした後、CentOS 7と同様の手順で有効にします。

$ sudo dnf install -y cgit
$ sudo systemctl enable httpd.service
$ sudo systemctl start httpd.service
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
$ sudo chcon -R --reference=/var/www/cgi-bin/cgit /path/to/repo

2.3 Debian 8

apt-getでcgitを取得して、apache2のmod_cgiを有効にします。

$ sudo apt-get install -y cgit
$ sudo a2enmod cgi
$ sudo systemctl restart apache2.service

2.4 Ubuntu 14.04

Debian 8のソースコードをビルドします。

$ sudo apt-get install -y dpkg-dev asciidoc debhelper dh-apache2 \
docbook-xsl liblua5.1-0-dev libssl-dev libxml2-utils tidy xmlto \
apache2
$ rm -rf cgit
$ mkdir cgit
$ cd cgit
$ wget http://ftp.jp.debian.org/debian/pool/main/c/cgit/cgit_0.10.2.git2.0.1-3.debian.tar.xz
$ wget http://ftp.jp.debian.org/debian/pool/main/c/cgit/cgit_0.10.2.git2.0.1-3.dsc
$ wget http://ftp.jp.debian.org/debian/pool/main/c/cgit/cgit_0.10.2.git2.0.1.orig.tar.gz
$ dpkg-source -x cgit_0.10.2.git2.0.1-3.dsc
$ cd cgit-0.10.2.git2.0.1
$ dpkg-buildpackage -us -uc
$ sudo dpkg -i ../cgit_0.10.2.git2.0.1-3_amd64.deb
$ sudo a2enmod cgi
$ sudo a2enconf cgit
$ sudo /etc/init.d/apache2 restart

WARNINGが2万行くらい出るのですが、Debian 8でビルドしても同様なので気にしないことにします(怪しいなぁ)。

3 cgitrcの設定

CentOS 7とFedora 22は/etc/cgitrcのcache-size=1000をコメントアウトしないとトップページのインデックス作成が上手く動作しませんでした。

CentOS 7とFedora 22で上記手順を利用する場合はコメントアウトするようにしてください。

 

scan-pathでディレクトリ配下にある各ディレクトリをgitリポジトリとして公開します。

scan-path=/path/to/repos

個別に設定する場合はrepo.urlやrepo.pathで指定します。

repo.url=name.git
repo.path=/path/to/repo/name.git

4 cgitページへのアクセス

cigtページへアクセスするとリポジトリの内容が表示されました。

http://[ホスト名]/cgit  

https://dl-web.dropbox.com/s/z00g3zuc6qcts3o/0001_cgit.png