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
これで 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 。動作させるのに必要な部分だけを抜き出しています。