75833
Ubuntu 上で Redmine の認証を用いた Git 環境を構築しようとしていますが、Redmine 自体の動作は確認できているものの、Git
リポジトリが正常に動作しません。

具体的には、`git clone` を実行すると認証ダイアログは表示されるものの、リポジトリにアクセスできていない様子。

```

    $ git clone http://example.com/git/REPO.git
    ...
    fatal: repository 'http://example.com/git/REPO.git' not found
    
```

Apache のログ (`/var/log/apache2/access_log`) を見ても、認証は通った後に 404 エラーが出ています。

```

    xx.xxx.xx.xxx - - [14/May/2021:16:30:55 +0900] "HEAD /login?back_url=http%3A%2F%2Fexample.com%2F HTTP/1.1" 200 954 "-" "Git-Credential-Manager/ 
    2.0.394.50751 (Windows; x86-64) CLR/.NET Framework 4.0.30319.42000"
    xx.xxx.xx.xxx - cubick [14/May/2021:16:31:03 +0900] "GET /git/REPO.git/info/refs?service=git-upload-pack HTTP/1.1" 404 435 "-" "git/2.31.1.windows.1"
    
```

また、Apache のログレベルを debug に上げて動作を確認すると、エラーログには以下のように出力されていました。  
git-http-backend が正常に動いていないようです。

```

    [Fri May 14 16:31:03.978678 2021] [core:info] [pid 32123:tid 140292229400320] [client xx.xxx.xx.xxx:50884] AH00130: File does not exist: /usr/lib/git-core/git-http-backend/REPO.git/info/refs
    
```

Redmine 認証を使った Git リポジトリ用の Apache 設定は以下の通りです。

**/etc/apache2/site-enabled/git.conf**

```

    #LogLevel debug
    PerlLoadModule Apache::Authn::Redmine
    
    SetEnv GIT_PROJECT_ROOT /var/lib/git 
    SetEnv GIT_HTTP_EXPORT_ALL
    SetEnv REMOTE_USER $REDIRECT_REMOTE_USER
    
    ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
    
    <Location /git/>
      PerlAuthenHandler Apache::Authn::Redmine::authen_handler
      AuthType Basic
      AuthName "Git Redmine"
    
      AuthUserFile /dev/null
    
      RedmineDSN "DBI:mysql:database=redmine;host=localhost"
      RedmineDbUser "redmine"
      RedmineDbPass "redmine"
      RedmineGitSmartHttp yes
    
      Require valid-user
    </Location>
    
```

**環境:**  
Ubuntu 20.04.2 LTS  
Apache 2.4.41  
Redmine 4.0.8  
Ruby 2.6.7  
Git 2.25.1
CC BY-SA 4.0
2021-05-14T08:25:26.447
75832
2021-05-14T08:25:26.447
3060
question
git ubuntu apache redmine
Redmine 認証を用いた Git リポジトリが正常に動作しない
Apache のデバッグレベルを上げて出力されたメッセージ "AH00130: File does not exist: ..."
を頼りに調べたところ、以下の投稿で紹介されていた回答が参考になりました。

[Apache and git-http-backend - Stack
Overflow](https://stackoverflow.com/q/25995863)

自分の環境では単に CGI モジュールが有効になっていなかったのが原因のようです。

以下のコマンドを実行して CGI モジュールを有効にし、プロセスを再起動後に Git リポジトリから正常に clone することができるようになりました。

```

    $ sudo a2enmod cgi
    $ sudo systemctl restart apache2
    
```
CC BY-SA 4.0
2021-05-14T08:25:26.447
75833
2021-05-14T08:25:26.447
3060
75832
answer