Git 2.24
— y2sunlight 2020-06-04
本章では、社内用のGitサーバーの構築について説明します。本編の「Smart HTTPによるGitサーバーの構築」によって、基本的なGitサーバーの機能は得られたので、次は、Webベースのブラウジング機能を追加します。Gitには、GitWebと呼ばれるCGIスクリプト(perl5)が付属しているのでこれを利用します。
サーバー環境
関連記事
リンク
gitweb(CGI) を IUSリポジトリからインストールします。本章ではgit2.24を使用しているので、パッケージ名は、git224-gitweb
です。Gitのインストールについての詳細は本編の IUSによるgit2の導入 をご覧ください。
yum install --enablerepo=ius git224-gitweb
インストールの途中で、インストールしても良いか確認される (Is this ok [y/d/N]:
) ので y
と回答します。正常にインストールされると最後に、完了のメッセージが表示されます。
ここでインストールしたCGI (gitweb.cgi
) は以下に設置されます。
/var/www/git/gitweb.cgi
gitweb.cgi
(Perl5で書かれている) を以下のように編集します。
/var/www/git
... 85 # absolute fs-path which will be prepended to the project path 86 #our $projectroot = "/pub/scm"; 87 our $projectroot = "/var/git"; ...
$projectroot
に リポジトリ( 本章では /var/git
)のルートを指定します。
GitWeb をインストールすると /etc/httpd/conf.d/git.conf.rpmnew
にApacheの設定ファイルの雛形が保存されています。
/etc/httpd/conf.d
Alias /git /var/www/git <Directory /var/www/git> Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex gitweb.cgi </Directory>
これを参考に「Gitサーバーの構築 - Gitデーモン/Smart HTTP」で設定した git.conf を書き直します。
/etc/httpd/conf.d
# 環境設定 SetEnv GIT_PROJECT_ROOT /var/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ # GitWeb Alias /gitweb /var/www/git <Directory /var/www/git> Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex gitweb.cgi </Directory> # アクセス制御 <LocationMatch "^/(git|gitweb)"> <RequireAny> <RequireAny> # LAN内の特定のホストのみ許可 Require all denied Require host localhost Require ip 127.0.0.1 Require ip 192.168.1.0/24 </RequireAny> # Basic認証 AuthType Basic AuthName "Git Access" AuthUserFile /var/git/.htpasswd Require valid-user </RequireAny> # 全開 # Require all granted </LocationMatch>
/var/www/git
のエイリアスを /gitweb
に設定します。/var/www/git
下でCGIが動くようにして、gitweb.cgi
をインデックスに指定します。/git
と /gitweb
の両方で同じアクセス制御ができるように LocationMatch
を変更します。編集が終わったら、Apacheを再起動します。
systemctl restart httpd
ブラウザで以下のURLにアクセスして下さい。
http://192.168.1.100/gitweb/ # IPアドレスは適宜変更して下さい
■ ロポジトリの一覧が表示されます。
■ プロジェクト( ここでは sandbox.git
)をクリックして下さい。
■ プロジェクトの summary が表示されます。
■ summaryの他に shortlog, log, commit, commitdiff, tree の表示が出来ます