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.