HTTP पर gitolite और nginx के साथ git करें


10

मैं एक सर्वर को सेटअप करने की कोशिश कर रहा हूं, जहां मेरा गिट रेपो HTTP (एस) के साथ सुलभ होगा।

मैं gitolite और nginx का उपयोग कर रहा हूं (और वेब इंटरफ़ेस के लिए gitlab लेकिन मुझे संदेह है कि इससे कोई फर्क नहीं पड़ता)।

मैंने पूरी दोपहर खोज ली है और मुझे लगता है कि मैं फंस गया हूं।

मुझे लगता है कि मैं समझ गया हूं कि गिगलाइट के साथ काम करने के लिए nginx को fcgiwrap की आवश्यकता है, इसलिए मैंने कई कॉन्फ़िगरेशन की कोशिश की, लेकिन उनमें से कोई भी काम नहीं करता है।

मेरी रिपॉजिटरी / होम / गिट / रिपॉजिटरी हैं।

यहाँ तीन nginx विन्यास मैंने कोशिश की है।

1:

   location ~ /git(/.*) {
       gzip off;
       root /usr/lib/git-core;

       fastcgi_pass  unix:/var/run/fcgiwrap.socket;
       include /etc/nginx/fcgiwrap.conf;

       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 /home/git/repositories;
       fastcgi_param PATH_INFO $1;
       #fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    }

परिणाम:

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

तथा

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

2:

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

परिणाम:

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

तथा

> git clone http://myservername/git/projectname.git test/
Cloning into test...
error: The requested URL returned error: 502 while accessing http://myservername/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:/var/run/fcgiwrap.socket;
    fastcgi_param SCRIPT_FILENAME   /usr/lib/git-core/git-http-backend;
    fastcgi_param PATH_INFO         $uri;
    fastcgi_param GIT_PROJECT_ROOT  /home/git/repositories;  
    include /etc/nginx/fcgiwrap.conf;
  }

परिणाम:

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

तथा

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

यह भी ध्यान दें कि उन किसी भी विन्यास के साथ, जब मैं एक प्रोजेक्ट नाम के साथ क्लोन करने का प्रयास करता हूं जो वास्तव में मौजूद नहीं है, तो मुझे 502 त्रुटि मिलती है।

क्या कोई ऐसा करने में पहले से ही सफल रहा है? मैं क्या गलत कर रहा हूं?

धन्यवाद।

अपडेट करें:

nginx त्रुटि लॉग फ़ाइल ने कहा:

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

इसलिए मैंने /var/run/fcgiwrap.socket के लिए अनुमतियां बदल दी हैं, और अब मेरे पास है:

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

अब मेरे पास एरर.लॉग फ़ाइल है:

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, server: myservername, request: "GET /git/projectname.git/info/refs HTTP/1.1", upstream: "fastcgi://unix:/var/run/fcgiwrap.socket:", host: "myservername"

मैं जांच करता रहता हूं।


उपयोगकर्ता, उपवास प्रक्रिया के तहत चल रहा है, निर्देशिका में प्रवेश करने के अधिकार /usr/lib/git-core/git/projectname.git/info?
जान मारेक

{ln -s / home / git / usr / lib / git-core / git} या सेट {root / home;}} -लेकिन सेकेंड सुरक्षा की समस्या हो सकती है
fantastory

जवाबों:


1

यहाँ मैं अपने अपाचे विन्यास में क्या सेट करता हूं (मुझे पता है: नगनेक्स नहीं, लेकिन फिर भी आपकी मदद कर सकता है):

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"

( @H@पथ के साथ जहां .gitolite.rcऔर मेरे मामले में, रिपॉजिटरी संग्रहीत हैं)

मैं आपके कॉन्फ़िगरेशन में नहीं देखता GITOLITE_HTTP_HOMEऔर GIT_HTTP_BACKENDपरिभाषित करता हूं । यहाँ पूर्ण विन्यास
देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.