Howto Nginx + git-http-backend + fcgiwrap (Debian Squeeze)

Sto provando a configurare git-http-backend con Nginx ma dopo 24 ore di tempo perdere e leggere tutto quello che potrei pensare che questo config dovrebbe funzionare ma non lo fa.

server { listen 80; server_name mydevserver; access_log /var/log/nginx/dev.access.log; error_log /var/log/nginx/dev.error.log; location / { root /var/repos; } location ~ /git(/.*) { gzip off; root /usr/lib/git-core; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fastcgi_params2; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param DOCUMENT_ROOT /usr/lib/git-core/; fastcgi_param SCRIPT_NAME git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/repos; fastcgi_param PATH_INFO $1; #fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; } } 

Contenuto di / etc / nginx / fastcgi_params2

  • Qual è la definizione di uno scoppio nell'impostazione Nginx limit_req?
  • Come riscrivere la parte di dominio di Set-Cookie in un proxy inverso di nginx?
  • PHP-FPM smette di rispondere e muore
  • Come abilitare l'intestazione HTTP di charset corretta in NGINX
  • Errore OpenVPN: imansible inserire 'tun': simbolo sconosciuto nel module o parametro sconosciuto (vedi dmesg)
  • Il hook personalizzato post-commit di GitLab CE non funziona
  •  fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param REMOTE_USER $remote_user; # required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; 

    ma il config non sembra funzionare

         $ git clone http: // mydevserver / git / myprojectname /
         Clonazione in myprojectname ...
         avvertimento: il telecommand HEAD si riferisce a un riferimento inesistente, impossibilitato alla cassa.
    

    e posso chiedere un progetto inesistente e riceverò la stessa risposta

         $ git clone http: // mydevserver / git / thisprojectdoesntexist /
         Clonare in questo progetto ...
         avvertimento: il telecommand HEAD si riferisce a un riferimento inesistente, impossibilitato alla cassa.
    

    Se cambio la radice a / usr / lib avrò un errore 403 e questo verrà segnalato al log di errori nginx:

         2011/11/23 15:52:46 [errore] 5224 # 0: * 55 FastCGI inviato in stderr: "Imansible get script
         nome, è DOCUMENT_ROOT e SCRIPT_NAME impostato ed è lo script eseguibile? "mentre
         lettura dell'intestazione di risposta da upstream, client: 198.168.0.4, server: mydevserver,
         richiesta: "GET / git / myprojectname / info / refs HTTP / 1.1", a monte:
         "fastcgi: // unix: /var/run/fcgiwrap.socket:", host: "mydevserver"
    

    Il mio problema principale è con il valore root corretto con questa configuration. Forse ci sono alcuni problemi di autorizzazioni.

    Gli appunti:

    • / var / repos / è di properties; di www-data e contiene cartelle bit git repos.

    • Tutto questo funziona perfettamente usando ssh.

    • Se vado con il mio browser a http: // mydevserver / git / myproject / info / refs , viene risposto da git-http-backend che mi chiede di submit un command.

    • /var/run/fcgiwrap.socket ha 777 permessi.

  • Elenco degli strumenti installati sul server debian / red hat
  • Apache SVN: accesso al repository proibito tramite client, HTTP è ok?
  • Bash Extended Globbing fornisce errori di syntax
  • come abilitare l'evidenziazione di ls in Debian
  • È ansible creare una port USB per l'accesso a un file system?
  • Imansible aggiornare Debian Wheezy a causa dell'errore GPG (NODATA)
  • 3 Solutions collect form web for “Howto Nginx + git-http-backend + fcgiwrap (Debian Squeeze)”

    spostare verso il basso fastcgi_pass ; dovrebbe essere l'ultima linea.

    In primo luogo dovresti impostare i parametri, solo allora fastcgi_pass , altrimenti non otterrai l'ambiente impostato.

    fastcgi_pass unix: /var/run/fcgiwrap.socket;

    Provare a modificare l'ordine tra le due righe del file di configuration:

     include /etc/nginx/fastcgi_params2; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; 

    Questo è probabilmente un bug con la versione di fcgiwrap trovata su debian squeeze (1.0-1 + squeeze1). Vedi http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698071

    L'aggiornamento a fcgiwrap 1.0.3-3 (trovato nel test di debian) mi ha risolto il problema. Ecco la configuration che ho usato (nota che non ho bisogno di definire "root"):

     server { listen 80; server_name mydevserver; access_log /var/log/nginx/dev.access.log; error_log /var/log/nginx/dev.error.log; location ~ /git(/.*) { gzip off; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fastcgi_params2; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /var/repos; fastcgi_param PATH_INFO $1; } } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.