Poem/GitList
概要†
- 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非対応部分が残っている可能性はありますが、とりあえず動いている感じです。