Gitweb

提供: ArchWiki
2015年7月8日 (水) 12:03時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

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 の場合、gitapache に加えて 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;
        }
}

また、fcgiwrapspawn-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

これで gitweb の "Owner" フィールドが入りますが、必須ではありません。

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.

参照

このページは主に howtoforge を基にしています: http://www.howtoforge.com/how-to-install-a-public-git-repository-on-a-debian-server 。動作させるのに必要な部分だけを抜き出しています。