web-dev-qa-db-ja.com

Git Push over http(git-http-backendを使用)とApacheが機能しない

私は必死にgit-http-backendを使用して「smart-http」モードでPush for gitを動作させるように努めています。しかし、何時間もテストとトラブルシューティングを行った後も、

error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-Push failed`

私は最新バージョンのUbuntu(12.04)、Apache2(2.2.22)、およびGit(1.7.9.5)を使用しており、インターネット上で見つかったさまざまなチュートリアルを次のように実行しています http://www.parallelsymmetry.com /howto/git.jsp

私のVHostファイルは現在次のようになっています。

<VirtualHost *:80>

    SetEnv GIT_PROJECT_ROOT /var/www/git
    SetEnv GIT_HTTP_EXPORT_ALL
    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

    DocumentRoot /var/www/git

    ScriptAliasMatch \
            "(?x)^/(.*?)\.git/(HEAD | \
                                            info/refs | \
                                            objects/info/[^/]+ | \
                                            git-(upload|receive)-pack)$" \
            /usr/lib/git-core/git-http-backend/$1/$2

    <Directory /var/www/git>
            Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>

/var/www/gitフォルダーの所有権をroot.www-dataに変更し、テストリポジトリでgit config http.receivepack trueを実行して匿名プッシュを有効にしました。私も認証されたユーザーで試しましたが、同じ結果が得られました。

リポジトリは以下を使用して作成されました:Sudo git init --bare --shared [repo-name]

Apache2のaccess.logを見ると、WebDAVが使用されようとしており、git-http-backendが起動されないように見えます。

127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/info/refs?service=git-receive-pack HTTP/1.1" 200 207 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/HEAD HTTP/1.1" 200 232 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "PROPFIND /git/hello.git/ HTTP/1.1" 405 563 "-" "git/1.7.9.5"

何が悪いのですか? gitやApacheのバージョンに問題があるのでしょうか。

ところで、私はServerFaultとStackOverflowですべてのgit http関連の質問を読みましたが、どれも解決策を提供しなかったので、これを重複としてマークしないでください。

11

WebDAVが使用されているということは、CGIが適切に構成されていないことを意味します。

ScriptAliasディレクティブは、フォローしていると言ったチュートリアルでの表示と同じように使用してください。

ScriptAlias /git /usr/lib/git-core/git-http-backend

これを修正するには、2つのステップを使用してApacheサーバーでWebDavを有効にする必要があります

  1. apacheのvhostファイルで有効にする
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

DocumentRoot /var/www/git

<Directory /var/www/git>
        Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews

        AllowOverride None
        Order allow,deny
        allow from all
        Dav On
</Directory>
  1. コマンドプロンプトでこのコマンドを実行します

    a2enmod dav_fs

  2. 次に、Apacheサーバーを再起動します。

0