====== Gitサーバーの構築 - GitWeb ======
Git 2.24
--- //[[http://www.y2sunlight.com|y2sunlight]] 2020-06-04//
[[git:top|Git に戻る]]
本章では、社内用のGitサーバーの構築について説明します。本編の「[[git2:server|Smart HTTPによるGitサーバーの構築]]」によって、基本的なGitサーバーの機能は得られたので、次は、Webベースのブラウジング機能を追加します。Gitには、GitWebと呼ばれるCGIスクリプト(perl5)が付属しているのでこれを利用します。
サーバー環境
* CentOS 7.2 / Apache 2.4 / Git 2.24
関連記事
* [[git2:server|Gitサーバーの構築 - Gitデーモン/Smart HTTP]]
* Gitサーバーの構築 - Git Web
* [[git2:client:windows|Git Windowsクライアント]]
リンク
* [[https://git-scm.com/book/ja/v2/Git%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB|Gitサーバー - GitWeb]] --- Pro Git 2'nd Edition(日本語訳)
* [[https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb|Git on the Server - GitWeb]] --- Pro Git 2'nd Edition(English)
* [[https://git-scm.com/docs/gitweb|gitweb - Git web interface]] --- Git Reference
----
===== GitWebのインストール =====
gitweb(CGI) を IUSリポジトリからインストールします。本章ではgit2.24を使用しているので、パッケージ名は、''git224-gitweb'' です。Gitのインストールについての詳細は本編の [[centos:yum#iusによるgit2の導入|IUSによるgit2の導入]] をご覧ください。
yum install --enablerepo=ius git224-gitweb
/var/www/git/gitweb.cgi
''gitweb.cgi''(Perl5で書かれている) を以下のように編集します。
{{fa>folder-open-o}} ** /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";
...
* 87行目:''$projectroot'' に リポジトリ( 本章では ''/var/git'' )のルートを指定します。
\\
===== Apacheの設定 =====
GitWeb をインストールすると ''/etc/httpd/conf.d/git.conf.rpmnew'' にApacheの設定ファイルの雛形が保存されています。
{{fa>folder-open-o}} ** /etc/httpd/conf.d **
Alias /git /var/www/git
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
これを参考に「[[git2:server|Gitサーバーの構築 - Gitデーモン/Smart HTTP]]」で設定した [[git2:server#Apacheの設定|git.conf]] を書き直します。
{{fa>folder-open-o}} ** /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
Options +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
# アクセス制御
# LAN内の特定のホストのみ許可
Require all denied
Require host localhost
Require ip 127.0.0.1
Require ip 192.168.1.0/24
# Basic認証
AuthType Basic
AuthName "Git Access"
AuthUserFile /var/git/.htpasswd
Require valid-user
# 全開
# Require all granted
* ''/var/www/git'' のエイリアスを ''/gitweb'' に設定します。
* ''/var/www/git'' 下でCGIが動くようにして、''gitweb.cgi'' をインデックスに指定します。
* ''/git'' と ''/gitweb'' の両方で同じアクセス制御ができるように ''LocationMatch'' を変更します。
編集が終わったら、Apacheを再起動します。
systemctl restart httpd
\\
===== GitWebへのアクセス =====
ブラウザで以下のURLにアクセスして下さい。
http://192.168.1.100/gitweb/ # IPアドレスは適宜変更して下さい
[{{:git2:server:gitweb01.png?nolink|}}]
■ ロポジトリの一覧が表示されます。
■ プロジェクト( ここでは ''sandbox.git'' )をクリックして下さい。
[{{:git2:server:gitweb02.png?nolink|}}]
■ プロジェクトの summary が表示されます。\\
■ summaryの他に shortlog, log, commit, commitdiff, tree の表示が出来ます
\\