Como publicar um repositório git via HTTP usando o nginx?

7

Eu tenho um servidor do CentOS 5 em domain.fr. Eu estou tentando definir um subdomínio para que eu possa usá-lo com git: git.domain.fr

Meus repositórios estão em / home / git (exemplo /home/git/repos.git)

Eu instalei git-http-backend e Nginx. Eu configurei um repositório assim:

cd /home/git/repos.git && git --bare init

Eu configurei meu git.conf (incluído em nginx.conf ) como abaixo.

No entanto, no shell do meu cliente, recebo o erro fatal "repositório não encontrado": git clone http://git.domain.fr/repos.git

Alguém sabe o que devo fazer? Parece tão simples, estou ficando frustrado porque tenho certeza que não é nada.

server {

    listen          80;
    server_name     git.domain.fr;
    root            /home/git;

    location ~ /(/.*) {

        include /etc/nginx/fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME /usr/bin/git-http-backend;
        fastcgi_param   GIT_HTTP_EXPORT_ALL     true;
        fastcgi_param   GIT_PROJECT_ROOT        /home/git;
        fastcgi_param   PATH_INFO               $1;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
    }
}
    
por Charaf 21.02.2014 / 17:10

1 resposta

1

Encontrei este snippet em um SO Q & A intitulado: Como servir o GIT através do HTTP via NGINX com usuário / senha? .

http {
    ...
    server {
        listen       80;
        server_name  git.mydomain.com;

        location ~ /git(/.*) {
            # fcgiwrap is set up to listen on this host:port
            fastcgi_pass  localhost:9001;
            include       fastcgi_params;
            fastcgi_param SCRIPT_FILENAME     /usr/lib/git-core/git-http-backend;
            # export all repositories under GIT_PROJECT_ROOT
            fastcgi_param GIT_HTTP_EXPORT_ALL "";
            fastcgi_param GIT_PROJECT_ROOT    /srv/git;
            fastcgi_param PATH_INFO           $1;
        }
    }
}

Eu gostaria de ter certeza de que sua configuração espelha isso o máximo possível. Além disso, como acredito que o Apache está acessando o diretório /home/git , você precisa cuidar para que esse usuário possa fazê-lo. Além disso, se você estiver usando o SELinux, você precisa ter certeza de que o processo (httpd) tem contextos apropriados adicionados ao /home para que ele também possa acessar este diretório.

Consulte o seu arquivo de log /var/log/httpd/error_log para obter mais detalhes sobre onde o Apache está ficando desarmado.

    
por 21.02.2014 / 19:41