Poem/GitList

Newest

概要

  • GitList というのは、Linuxサーバー上にある プライベートなGitリポジトリをWebインターフェースを通してソースコードや差分、コミット履歴をブラウジングするCGIです。
    https://github.com/klaussilveira/gitlist
  • PHPで書かれています。
  • 類似のものに GitWebとかWebSVNとかありましたけれど、それらは PerlのCGIです。

https://iruka-git.github.io/ATMEL_AVR/jpg/Poem/gitlist1.png

前提

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