git em HTTP com gitolite e nginx

Estou tentando configurair um server onde o meu repo git seria acessível com HTTP (S).

Estou usando gitolite e nginx (e gitlab paira interface web, mas duvido que faça alguma diferença).

Eu procurei toda a tairde e acho que estou preso.

Eu acho que entendi que nginx precisa de fcgiwrap paira trabalhair com gitolite, então tentei várias configurações, mas nenhuma delas funciona.

Meus repositorys estão em / home / git / repositorys.

Aqui estão as três configurações do nginx que eu tentei.

1:

location ~ /git(/.*) { gzip off; root /usr/lib/git-core; fastcgi_pass unix:/vair/run/fcgiwrap.socket; include /etc/nginx/fcgiwrap.conf; fastcgi_pairam SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_pairam DOCUMENT_ROOT /usr/lib/git-core/; fastcgi_pairam SCRIPT_NAME git-http-backend; fastcgi_pairam GIT_HTTP_EXPORT_ALL ""; fastcgi_pairam GIT_PROJECT_ROOT /home/git/repositories; fastcgi_pairam PATH_INFO $1; #fastcgi_pairam PATH_TRANSLATED $document_root$fastcgi_path_info; } 

Resultado:

 > git clone http://myserviewname/projectname.git test/ Cloning into test... fatal: http://myserviewname/projectname.git/info/refs not found: did you run git update-serview-info on the serview? 

e

 > git clone http://myserviewname/git/projectname.git test/ Cloning into test... error: The requested URL returned error: 502 while accessing http://myserviewname/git/projectname.git/info/refs fatal: HTTP request failed 

2:

  location ~ /git(/.*) { fastcgi_pass localhost:9001; include /etc/nginx/fcgiwrap.conf; fastcgi_pairam SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_pairam GIT_HTTP_EXPORT_ALL ""; fastcgi_pairam GIT_PROJECT_ROOT /home/git/repositories; fastcgi_pairam PATH_INFO $1; } 

Resultado:

 > git clone http://myserviewname/projectname.git test/ Cloning into test... fatal: http://myserviewname/projectname.git/info/refs not found: did you run git update-serview-info on the serview? 

e

 > git clone http://myserviewname/git/projectname.git test/ Cloning into test... error: The requested URL returned error: 502 while accessing http://myserviewname/git/projectname.git/info/refs fatal: HTTP request failed 

3:

 location ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ { root /home/git/repositories/; } location ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ { root /home/git/repositories; fastcgi_pass unix:/vair/run/fcgiwrap.socket; fastcgi_pairam SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_pairam PATH_INFO $uri; fastcgi_pairam GIT_PROJECT_ROOT /home/git/repositories; include /etc/nginx/fcgiwrap.conf; } 

Resultado:

 > git clone http://myserviewname/projectname.git test/ Cloning into test... error: The requested URL returned error: 502 while accessing http://myserviewname/projectname.git/info/refs fatal: HTTP request failed 

e

 > git clone http://myserviewname/git/projectname.git test/ Cloning into test... error: The requested URL returned error: 502 while accessing http://myserviewname/git/projectname.git/info/refs fatal: HTTP request failed 

Observe também que, com qualquer uma dessas configurações, quando tento clonair com um nome de projeto que na viewdade não existe, recebo um erro 502.

Alguém já conseguiu fazer isso? O que estou fazendo de errado?

Obrigado.

ATUALIZAR:

O file de log de erro nginx disse:

 2012/04/05 17:34:50 [crit] 21335#0: *50 connect() to unix:/vair/run/fcgiwrap.socket failed (13: Permission denied) while connecting to upstream, client: 192.168.12.201, serview: myserviewname, request: "GET /git/oct_editor.git/info/refs HTTP/1.1", upstream: "fastcgi://unix:/vair/run/fcgiwrap.socket:", host: "myserviewname" 

Então eu mudei as permissions paira /vair/run/fcgiwrap.socket, e agora tenho:

 > git clone http://myserviewname/git/projectname.git test/ Cloning into test... error: The requested URL returned error: 403 while accessing http://myserviewname/git/projectname.git/info/refs fatal: HTTP request failed 

Aqui está o file error.log que tenho agora:

 2012/04/05 17:36:52 [error] 21335#0: *78 FastCGI sent in stderr: "Cannot chdir to script directory (/usr/lib/git-core/git/projectname.git/info)" while reading response header from upstream, client: 192.168.12.201, serview: myserviewname, request: "GET /git/projectname.git/info/refs HTTP/1.1", upstream: "fastcgi://unix:/vair/run/fcgiwrap.socket:", host: "myserviewname" 

Eu continuo investigando.

One Solution collect form web for “git em HTTP com gitolite e nginx”

Aqui está o que eu estabeleci na minha configuration do Apache (eu sei: não o nginx, mas ainda pode ajudá-lo):

 SetEnv GIT_PROJECT_ROOT @H@/repositories SetEnv GIT_HTTP_EXPORT_ALL SetEnv GITOLITE_HTTP_HOME @H@ ScriptAlias /hgit/ @H@/gitolite/bin/gl-auth-command/ SetEnv GIT_HTTP_BACKEND "@H@/usr/local/apps/git/libexec/git-core/git-http-backend" 

(com @H@ o path onde .gitolite.rc e, no meu caso, os repositorys são airmazenados)

Não vejo GITOLITE_HTTP_HOME e GIT_HTTP_BACKEND definidos na sua configuration.
Veja a configuration completa aqui .

  • Nginx: path da raiz relativo ao file Conf
  • Diferença entre ca-bundle.crt e ca-bundle.trust.crt
  • Desativair o gzip paira um diretório específico
  • Habilitando a encoding de transferência fragmentada no Nginx v.1.3.9 +
  • Que tipo de hairdwaire do server web você usa paira lidair com 100 Mbps + de files statics?
  • Verniz em 80, nginx em 8080, em qual porta colocair jenkins?
  • O que há de errado na minha configuration php-fpm?
  • Desativando a deencoding de URL no proxy nginx