Git http (git-http-backend 사용)를 푸시하면 Apache가 작동하지 않습니다.


11

필자는 git-http-backend를 사용하여 "smart-http"모드를 통해 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 및 / 또는 아파치 버전에 문제가 있습니까?

BTW : ServerFault 및 StackOverflow에 대한 모든 git http 관련 질문을 읽었으며 그중 어느 것도 해결책을 제공하지 않았으므로 이것을 중복으로 표시하지 마십시오.


나는 똑같은 문제에 직면하고 있으며 해결책이 있습니까?
Rishi Kulshreshtha

@RishiKulshreshtha : 죄송합니다. 해결책을 찾지 못했습니다. 대신 GitHub로 옮겼습니다 ... 그것은 Deepika의 솔루션을 시도하지 않았다고 말했습니다. 누군가가 그것이 작동하는지 확인할 수 있다면 나는 그 대답을 받아 들일 것입니다.
Nils Magne Lunde

좋아, Deepika의 솔루션을 시도했지만 성공하지 못했습니다.
Nils Magne Lunde

심지어 지금 Deepika의 솔루션을 사용해 보았지만 저에게도 효과가 없었습니다.
Rishi Kulshreshtha

답변:


1

WebDAV가 사용되고 있다는 사실은 CGI 항목이 올바르게 구성되지 않았 음을 의미한다고 생각합니다.

ScriptAlias ​​지시문을 사용하여 지시 한 자습서에서 지시 한대로 사용하십시오.

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

안녕. ScriptAlias ​​지시문을 사용하여 시작했지만 작동하지 않았습니다.
Nils Magne Lunde

여기에도 같은 문제가 있습니다. 해결책을 찾았습니까?
theV0ID

@ theV0ID 아니요, 해결책을 찾지 못했습니다. 로컬 Git 서버 대신 GitHub를 사용하십시오.
Nils Magne Lunde

0

이 문제를 해결하려면 2 단계를 사용하여 Apache 서버에서 WebDav를 활성화해야합니다.

  1. 아파치의 호스트 파일에서 활성화

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. 그런 다음 아파치 서버를 다시 시작하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.