Gitweb
Gitweb は git 自体に含まれているデフォルトのウェブインターフェイスです。
Gitweb は fcgi をネイティブでサポートしているため、cgi スクリプトとしてラッピングする必要はありません。[1]
目次
インストール
Gitweb をインストールするには、まず git と ウェブサーバー をインストールしてください。ここで、テストを行いたい場合は、git instaweb
のヘルプを見て下さい。完全なセットアップをする場合、以下を読んで下さい。
以下のすべての例では、perl-cgi パッケージを インストール する必要があります。(FS#45431)
Web サーバーの設定
Apache
/etc/httpd/conf/httpd.conf
の最後に次の行を追加します:
Alias /gitweb "/usr/share/gitweb" <Directory "/usr/share/gitweb"> DirectoryIndex gitweb.cgi Options ExecCGI Require all granted <Files gitweb.cgi> SetHandler cgi-script </Files> SetEnv GITWEB_CONFIG /etc/gitweb.conf </Directory>
または、etc/httpd/conf/extra/gitweb.conf
のような別のファイルに追加します。
次に、httpd.conf
の末尾に次の行を追加します:
# gitweb configuration Include conf/extra/gitweb.conf
Apache が Gitweb の表示を拒否し、代わりに Perl スクリプトのプレーンなソースコードを出力する場合は、Apache が CGI の実行を許可するように設定されていない可能性があります。httpd.conf
で次のコメントが解除されていることを確認してください。
<IfModule !mpm_prefork_module> LoadModule cgid_module modules/mod_cgid.so </IfModule> <IfModule mpm_prefork_module> LoadModule cgi_module modules/mod_cgi.so </IfModule>
httpd.service
を 再起動 して、これらの変更を適用します。Apache を使用した CGI 実行の詳細については、https://httpd.apache.org/docs/2.4/howto/cgi.html を参照してください。
Lighttpd
以下を /etc/lighttpd/lighttpd.conf
に追加:
server.modules += ( "mod_alias", "mod_cgi", "mod_redirect", "mod_setenv" ) setenv.add-environment = ( "GITWEB_CONFIG" => "/etc/gitweb/gitweb.conf" ) url.redirect += ( "^/gitweb$" => "/gitweb/" ) alias.url += ( "/gitweb/" => "/usr/share/gitweb/" ) $HTTP["url"] =~ "^/gitweb/" { cgi.assign = ( ".cgi" => "" ) server.indexfiles = ( "gitweb.cgi" ) }
次に、lighttpd.service
を 再起動 して、これらの変更を適用します。また、GitWeb を正しく表示させるには mimetype.assign
の行に ".css" => "text/css"
を追加する必要があります。
Nginx
この場所を nginx 設定に追加します (場所を変更することもできます):
/etc/nginx/nginx.conf
location /gitweb.cgi { include fastcgi_params; gzip off; fastcgi_param SCRIPT_FILENAME /usr/share/gitweb/gitweb.cgi; fastcgi_param GITWEB_CONFIG /etc/gitweb.conf; fastcgi_pass unix:/run/fcgiwrap.sock; } location / { root /usr/share/gitweb; index gitweb.cgi; }
Nginx#CGI 実装 に従う場合は、include fastcgi_params;
を include fastcgi.conf;
に置き換えてみてください。
最後に、fcgiwrap ををインストールして fcgiwrap.socket
を 起動/有効化 します。
Gitweb の設定
すべての設定オプションのリストについては、gitweb.conf(5) を参照してください。
基本設定
ファイル /etc/gitweb.conf
を開き (存在しない場合は作成し)、これをその中に配置します:
/etc/gitweb.conf
# 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];
設定が完了したら、Web サーバーを 再起動 します。
リポジトリの追加
リポジトリを追加するには、リポジトリフォルダに移動し、リポジトリを次のように作成します:
$ 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
次に、gitweb.config
ファイルを開き、これを追加します。
gitweb.config
[gitweb] owner = Your Name
これにより、Gitweb の "owner" フィールドが入力されます。必須ではありません。
これは、このリポジトリを、コミットをプッシュする "central" リポジトリストレージとして使用し、オーバーヘッドを最小限に抑え、git デーモンを使用できるようにするために git-daemon-export-ok と --bare がここにあることを前提としています。
リポジトリの作成は以上です。これで http://localhost/gitweb で確認できるようになります (すべてがうまくいったと仮定します) Gitweb CGI スクリプトはリポジトリフォルダーを読み取るだけなので、新しいリポジトリのために Apache を再起動する必要はありません。
シンタックスハイライト
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" フィールドが入りますが、必須ではありません。
上記の設定では、このリポジトリをコミットのプッシュ先の"中央"リポジトリストレージとして扱っているので、オーバーヘッドを最小限に抑え、git デーモンを使えるようにするために git-daemon-export-ok と --bare を使っています。
上記の設定でリポジトリが作成できます。全て上手く設定できていれば http://localhost/gitweb で確認できます。gitweb の cgi スクリプトがリポジトリのフォルダを読み込むので、リポジトリを追加したときに apache を再起動する必要はありません。
トラブルシューティング
An error occurred while reading CGI reply (no response received)
http://localhost/gitweb をブラウザで開いたときに、このエラーメッセージが表示されることがあります。コマンドラインで gitweb.cgi
を実行することで、完全なエラーメッセージを取得することができます (ln -s /usr/share/gitweb /srv/http
を実行している場合):
$ perl /srv/http/gitweb/gitweb.cgi
Can't locate CGI.pm in @INC (you may need to install the CGI module) (@INC contains: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl .) at gitweb/gitweb.cgi line 13.
この問題を解決するには、perl-cgi をインストールしてください。バグレポートも存在します: FS#45431。
参照
- How To Install A Public Git Repository On A Debian Server — このページは主に HowtoForge を基にしています。