概要
-
GitList というのは、Linuxサーバー上にある プライベートなGitリポジトリをWebインターフェースを通してソースコードや差分、コミット履歴をブラウジングするCGIです。
https://github.com/klaussilveira/gitlist -
PHPで書かれています。
-
類似のものに GitWebとかWebSVNとかありましたけれど、それらは PerlのCGIです。
前提
- Ubuntu24.04 + Apache2 + PHP8.3 で動かしてみます。
- もちろん Gitはインストール済、Gitリポジトリはローカルファイルとして存在。
動かし方手順
- ソースコードリポジトリではなく、以下のURLから TarBallを取得します。
https://github.com/klaussilveira/gitlist/releases /gitlist-2.0.0.zip
- /var/www/html/gitlist/ ディレクトリを掘って、gitlist-2.0.0.zip を展開します
$ cd /var/www/html/gitlist/
$ unzip gitlist-2.0.0.zip
-
/var/www/html/gitlist/var/log/ と
-
/var/www/html/gitlist/var/cache/ ディレクトリを www-data:権限でr/w許可を与えます。
-
apacheのsite 設定ファイル (000-defaultなど) にエイリアスを追加します。(別ファイルにして includeでも良い)
#
# GitList::
#
Alias /gitlist /var/www/html/gitlist/public
<Directory /var/www/html/gitlist/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
- apacheの mod_rewrite モジュールをa2enmodして、 .htaccess ファイルを作って URLの Rewriteルールを追加します。
#
<IfModule mod_rewrite.c>
Options -MultiViews +SymLinksIfOwnerMatch
RewriteEngine On
RewriteBase /gitlist/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L,NC]
</ifmodule>
- 参照する Gitのリポジトリは /var/www/ 下に foo.git/ のようなディレクトリで作ります。
- ディレクトリの設定は gitlist/config/config.yaml 内に記述されているので、そこを触れば、別の場所に移動できます。
- 参照する Gitのリポジトリは safe.directory にしておく必要があるようです。
- (最近はセキュリティがいろいろ問題になるので・・・)
$ git config --global --add safe.directory /var/www/foo.git
- ・・・
- ここまでで、 Ubuntu22.04 (PHP8.1) では動作しますが、 Ubuntu24.04 (PHP8.3)では動きません。
Ubuntu24.04 での動かし方
- TarBallのほうではなく、GitHubにある、GitListのリポジトリをクローンしてきます。
- gitlist/ 直下で、 composer init します。
- そうやって出来た gitlist/vendor/nesbot/ 以下のみを、TarBall のものと差し替えてください。
- :
- もしかしたら、本体ソースの中にまだ PHP8.3非対応部分が残っている可能性はありますが、とりあえず動いている感じです。