Gitweb
Gitweb は git 自体に含まれているデフォルトのウェブインターフェイスであり cgit, gitosis と行った他の git スクリプトのベースにもなっています。
gitweb は fcgi をネイティブでサポートしているため、cgi スクリプトとしてラッピングする必要はありません: http://repo.or.cz/w/alt-git.git?a=blob_plain;f=gitweb/INSTALL https://sixohthree.com/1402/running-gitweb-in-fastcgi-mode
目次
インストール
gitweb をインストールするには、まず git とウェブサーバーをインストールしてください。ここで、テストを行いたい場合は、git instaweb のヘルプを見て下さい。完全なセットアップをする場合、以下を読んで下さい。
ここでは apache を例として用いますが nginx, lighttpd などを使うことも可能です。
現在の gitweb のデフォルトからウェブサーバーのディレクトリにリンクを作成する必要があります。次の例ではデフォルトのフォルダを使用します:
# ln -s /usr/share/gitweb /srv/http/gitweb
設定
Apache 2.2
以下を /etc/httpd/conf/httpd.conf の最後に追加します:
<Directory "/srv/http/gitweb"> DirectoryIndex gitweb.cgi Allow from all AllowOverride all Order allow,deny Options ExecCGI <Files gitweb.cgi> SetHandler cgi-script </Files> SetEnv GITWEB_CONFIG /etc/conf.d/gitweb.conf </Directory>
バーチャルホストを使っている場合、以下を /etc/httpd/conf/extra/httpd-vhosts.conf に追加します:
<VirtualHost *:80>
ServerName gitserver
DocumentRoot /var/www/gitweb
<Directory /var/www/gitweb>
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
</Directory>
</VirtualHost>
また、設定を /etc/httpd/conf/extra/ の設定ファイルに記述することもできますが、そうするかどうかはあなた次第です。
Apache 2.4
Apache 2.4 の場合、git と apache に加えて mod_perl[リンク切れ: package not found] をインストールしてください。
/etc/httpd/conf/extra/httpd-gitweb.conf を作成:
<IfModule mod_perl.c>
Alias /gitweb "/usr/share/gitweb"
<Directory "/usr/share/gitweb">
DirectoryIndex gitweb.cgi
Require all granted
Options ExecCGI
AddHandler perl-script .cgi
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
SetEnv GITWEB_CONFIG /etc/conf.d/gitweb.conf
</Directory>
</IfModule>
以下の行を /etc/httpd/conf/httpd.conf のモジュールセクションに追記:
LoadModule perl_module modules/mod_perl.so
以下の行を /etc/httpd/conf/httpd.conf の最後に追加:
# gitweb configuration Include conf/extra/httpd-gitweb.conf
Lighttpd
以下を /etc/lighttpd/lighttpd.conf に追加:
server.modules += ( "mod_alias", "mod_cgi", "mod_redirect", "mod_setenv" )
setenv.add-environment = ( "GITWEB_CONFIG" => "/etc/conf.d/gitweb.conf" )
url.redirect += ( "^/gitweb$" => "/gitweb/" )
alias.url += ( "/gitweb/" => "/usr/share/gitweb/" )
$HTTP["url"] =~ "^/gitweb/" {
cgi.assign = ( ".cgi" => "" )
server.indexfiles = ( "gitweb.cgi" )
}
また、GitWeb を正しく表示させるには mimetype.assign の行に ".css" => "text/css" を追加する必要があります。
Nginx
# ln -s /usr/share/gitweb /srv/http とシンボリックリンクを作成した場合、nginx の設定に以下の location を追加:
/etc/nginx/nginx.conf
location /gitweb/ {
index gitweb.cgi;
include fastcgi_params;
gzip off;
fastcgi_param GITWEB_CONFIG /etc/conf.d/gitweb.conf;
if ($uri ~ "/gitweb/gitweb.cgi") {
fastcgi_pass unix:/var/run/fcgiwrap.sock;
}
}
また、fcgiwrap と spawn-fcgi をインストールして fcgiwrap のサービスファイルを編集する必要があります:
/usr/lib/systemd/system/fcgiwrap.service
[Unit] Description=Simple server for running CGI applications over FastCGI After=syslog.target network.target [Service] Type=forking Restart=on-abort PIDFile=/var/run/fcgiwrap.pid ExecStart=/usr/bin/spawn-fcgi -s /var/run/fcgiwrap.sock -P /var/run/fcgiwrap.pid -u http -g http -- /usr/sbin/fcgiwrap ExecStop=/usr/bin/kill -15 $MAINPID [Install] WantedBy=multi-user.target
最後に、サービスを有効化・再起動:
systemctl enable nginx fcgiwrap systemctl start nginx fcgiwrap
Gitweb の設定
次に gitweb の設定ファイルを作成する必要があります。/etc/conf.d/gitweb.conf ファイルを開いて (ファイルが存在しない場合は作成して) 以下のように記述してください:
/etc/conf.d/gitweb.conf
our $git_temp = "/tmp"; # The directories where your projects are. Must not end with a slash. our $projectroot = "/path/to/your/repositories"; # Base URLs for links displayed in the web interface. our @git_base_url_list = qw(git://<your_server> http://git@<your_server>);
"blame" (ソースファイルの各行の著者を表示) を有効にするには、以下の行を追加:
$feature{'blame'}{'default'} = [1];
設定が完了したら、ウェブサーバーを再起動してください。apache の場合:
systemctl restart httpd
lighttpd の場合:
systemctl restart lighttpd
シンタックスハイライト
Gitweb でシンタックスハイライトを使うには、まず highlight パッケージをインストールしてください。
highlight をインストールしたら、以下の行を gitweb.conf に追加します:
$feature{'highlight'}{'default'} = [1];
ファイルを保存すればハイライトが有効になります。
リポジトリの追加
リポジトリフォルダにリポジトリを追加するには、以下のようにリポジトリを作成:
mkdir my_repository.git git init --bare my_repository.git/ cd my_repository.git/ touch git-daemon-export-ok echo "Short project's description" > description
次に config ファイルを開いて以下を追加:
[gitweb]
owner = Your Name
This will fill in the "Owner" field in gitweb. It is not required.
I assumed that you want to have this repository as "central" repository storage where you push your commits to so the git-daemon-export-ok and --bare are here to have minimal overhead and to allow the git daemon to be used on it.
That is all for making a repository. You can now see it on your http://localhost/gitweb (assuming everything went fine). You do not need to restart apache for new repositories since the gitweb cgi script simply reads your repository folder.
参照
This howto was mainly based on the awesome howto from howtoforge: http://www.howtoforge.com/how-to-install-a-public-git-repository-on-a-debian-server. I only picked the parts that are needed to get it working and left the additional things out.