2010-09-28 12 views
20

मैं अपाचे और गिट-http-backend.exe का उपयोग कर डब्ल्यूएस 2008 मशीन पर गिट सर्वर (1.7.2.3) स्थापित करने की प्रक्रिया में हूं। मैं एक अच्छी टट here का पालन कर रहा हूं। मैं जीयूआई काम कर रहे है, मैं क्लोन annoymously कर सकते हैं और अगर मैं एक रेपो की config में निम्नलिखित डाल मैं annoymously धक्का कर सकते हैं:विंडोज पर गिट सर्वर सेट करना git-http-backend.exe

[http] 
receivepack = true 

मैं जोड़ लिया है httpd.conf फाइल में निम्नलिखित:

SetEnv GIT_PROJECT_ROOT C:/GIT/Repositories 
SetEnv GIT_HTTP_EXPORT_ALL 
ScriptAliasMatch \ 
     "(?x)^/(.*/(HEAD | \ 
        info/refs | \ 
        objects/(info/[^/]+ | \ 
          [0-9a-f]{2}/[0-9a-f]{38} | \ 
          pack/pack-[0-9a-f]{40}\.(pack|idx)) | \ 
        git-(upload|receive)-pack))$" \ 
        "C:/Program Files (x86)/git/libexec/git-core/git-http-backend.exe/$1" 

<Directory /> 
    Allow from all 
</Directory> 

<LocationMatch "^/git/.*/git-receive-pack$"> 
     AuthType Basic 
     AuthName "Git Access" 
    AuthUserFile C:/GIT/ApacheConfig/users 
    AuthGroupFile C:/GIT/ApacheConfig/groups 
     Require group repogeneral   
</LocationMatch> 

जब मैं "LocationMatch" जोड़ने मैं अभी भी annoymously या यूआरएल, Git क्लोन http://[email protected]

यह एक पासवर्ड और क्लोन के लिए संकेत देगा में एक नाम निर्दिष्ट करने के द्वारा क्लोन कर सकते हैं।

लेकिन जब मैं निम्नलिखित रेपो मैं पाने के लिए पीछे धकेलने के लिए प्रयास करें:

त्रुटि: यूआरएल http://[email protected]/newtestrepo.git/, वापसी कोड 22 घातक पहुंच नहीं सकते: Git-http-धक्का विफल रही

मैं देख कर दिया गया है उदाहरण के लिए http-backend.exe man page पर लेकिन उन्हें काम पर नहीं लाया जा सकता है।

यहाँ, मेरे समूहों फ़ाइल है (यह सिर्फ इतना है कि prod में इस्तेमाल किया जाएगा तो कुछ भी नहीं है उदाहरण बाहर परीक्षण कर रहा है):

jon:$apr1$kEKVExYx$guIF9oYV8buGhFLZr16XN0 
steve:$apr1$jvgjF9nv$PvWsHH.cSOBN5ymk6NT1B0 
admin:$apr1$vzXgDskN$oszCei3tkHNUgtLj2HkHF/ 
web:$apr1$wS0do7hb$VA9tsc9c9LwY5PcjfhdwK0 

मुझे पता है:

admin: jon steve admin 
webview: jon steve web 
repogeneral: jon steve 
testrepo: jon admin 
testrepo2: jon steve web 
यहाँ

उन फाइल है उपयोगकर्ता नाम जोन काम करता है जैसे कि मैंने gui सेक्शन पर निर्देशिका आवश्यकता डाली है, मैं उपयोगकर्ता नाम जोन नो समस्या के साथ लॉगिन कर सकता हूं, (उसी उपयोगकर्ता और समूह फ़ाइलों को स्थानमैच के रूप में इंगित करता है)।

मुझे यकीन नहीं है कि इस बिंदु पर मैं किस कॉन्फ़िगरेशन को याद कर चुका हूं, (इसे कॉन्फ़िगरेशन समस्या मानते हुए)।

इस अंतिम बाधा को पाने पर कोई सलाह शानदार होगी।

संपादित

मैं कुछ और अधिक और यहां खेल रहे हैं जानकारी मेरे पास है है:

अगर मैं के साथ एक रेपो क्लोन:

git clone http://[email protected]/remotetest.git 

मैं भंडार बाहर निकल सकते हैं, लेकिन जब मैं कोशिश करता हूं और वापस धक्का देता हूं:

गिट पुश मूल मास्टर

मैं अपने पासवर्ड के लिए पूछा मिलता है, मैं इसे दर्ज करते हैं, तो इसे फिर से उसके द्वारा मांगी, तो मैं निम्नलिखित त्रुटि मिलती है:

C: \ अस्थायी \ remotetest \ remotetest> Git धक्का मूल मास्टर पासवर्ड: पासवर्ड : त्रुटि: यूआरएल http://[email protected]/remotetest.git/ तक नहीं पहुंच सकता, कोडघातक: git-http-push विफल

मेरे अपाचे पहुंच में।लॉग इन करें मैं निम्नलिखित:

192.168.1.2 - - [29/Sep/2010:21:58:19 +0100] "GET /remotetest.git/info/refs?service=git-upload-pack HTTP/1.1" 200 38 
192.168.1.2 - - [29/Sep/2010:21:58:51 +0100] "GET /remotetest.git/info/refs?service=git-receive-pack HTTP/1.1" 403 - 
192.168.1.2 - - [29/Sep/2010:21:58:51 +0100] "GET /remotetest.git/info/refs HTTP/1.1" 200 - 
192.168.1.2 - - [29/Sep/2010:21:58:51 +0100] "GET /remotetest.git/HEAD HTTP/1.1" 200 23 

दिलचस्प बात यह है कि जब मैं यूआरएल यह कोई बात नहीं है कि मैं क्या पासवर्ड में डाल में उपयोगकर्ता नाम के साथ क्लोन है, यह अभी भी काम करेगा। मुझे लगता है कि ऐसा इसलिए है क्योंकि मुझे गुमनाम रूप से खींचने में सक्षम होना चाहिए। निश्चित नहीं है कि वह उस बिंदु पर पासवर्ड क्यों मांगता है।

मैं भी लॉग गलती से यह देखें:

[Wed Sep 29 22:33:00 2010] [error] [client 192.168.1.2] client denied by server configuration: C:/Program Files (x86)/Git/libexec/git-core/git-http-backend.exe 
[Wed Sep 29 22:33:00 2010] [error] [client 192.168.1.2] client denied by server configuration: C:/Program Files (x86)/Git/libexec/git-core/git-http-backend.exe 

संपादित 2

मैं ऐसा करके पासवर्ड फ़ाइल पुनः बनाने की कोशिश की:

htpasswd -c -m C:/git/apacheconfig/users jon 

लेकिन इससे सहायता नहीं मिली ।

संपादित 3

httpd.conf में पीएचपी config जहां इसे इस्तेमाल करता है एक ही उन मूल प्रमाणीकरण के लिए फ़ाइल:

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"> 
    AuthName "GitUsers" 
    AuthType Basic 
    AuthUserFile C:/GIT/ApacheConfig/users 
AuthGroupFile C:/GIT/ApacheConfig/groups 

    require group webview 
</Directory> 

संपादित 4

ठीक तो मैं प्राप्त कर सकते हैं खुशी से परेशान मोड में क्लोनिंग और धक्का देने के लिए, लेकिन धक्का के लिए प्रमाणीकरण विफल रहता है।

<VirtualHost *:80> 
    SetEnv GIT_PROJECT_ROOT "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/repositories" 
    SetEnv GIT_HTTP_EXPORT_ALL 

    <Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/repositories"> 
     Options Indexes FollowSymLinks MultiViews Includes ExecCGI 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
    </Directory> 

    <LocationMatch "^/repositories/.*/git-receive-pack$"> 
     AuthType Basic 
     AuthName "Git Access" 
     AuthUserFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/repositories/.htpasswd" 
     Require valid-user 
    </LocationMatch> 
    ScriptAliasMatch \ 
      "(?x)^/repositories/(.*/(HEAD | \ 
          info/refs | \ 
          objects/(info/[^/]+ | \ 
            [0-9a-f]{2}/[0-9a-f]{38} | \ 
            pack/pack-[0-9a-f]{40}\.(pack|idx)) | \ 
          git-(upload|receive)-pack))$" \ 
      "C:/Program Files (x86)/Git/libexec/git-core/git-http-backend/$1" 

    ErrorLog C:/GIT/error_log 
    CustomLog C:/GIT/access_log combined 
</VirtualHost> 

दिलचस्प बात यह है कि जब मैं एक नया रेपो बनाया (Git init --bare newrepo.git) यह एक जानकारी का निर्माण नहीं किया:

C:\temp\test2\temp\test>git push origin master 
Password: 
Password: 
error: Cannot access URL http://[email protected]:8000/repositories/test.git/, return code 22 
fatal: git-http-push failed 

मैं निम्नलिखित का उपयोग करने के httpd.conf बदल/फाइल refs। मुझे इसे बनाने के लिए "गिट अपडेट-सर्वर-जानकारी" कमांड करना था।

अपाचे पहुंच लॉग है कि एक संकेत हो सकता है दिलचस्प कुछ है:

192.168.10.97 - - [05/Oct/2010:22:48:26 +0100] "GET /repositories/test.git/info/refs?service=git-receive-pack HTTP/1.1" 200 - 
192.168.10.97 - - [05/Oct/2010:22:48:26 +0100] "GET /repositories/test.git/HEAD HTTP/1.1" 200 23 
192.168.10.97 - - [05/Oct/2010:22:48:28 +0100] "PROPFIND /repositories/test.git/ HTTP/1.1" 405 248 

है कि जब मैं "पुश" वापस रेपो करने के लिए कोशिश कर रहा था, लेकिन वे आदेश और कोई पद प्राप्त कर रहे हैं। सुनिश्चित नहीं है कि PROPFIND क्या है, अभी तक उस पर अधिक जानकारी नहीं मिली है। मुझे लगता है, (चारों ओर पढ़ना), कुछ प्रकार की पुनर्लेखन हो सकती है, जो एक जीईटी में पोस्ट बदल रही है और इसे मार रही है, या कुछ। हालांकि मैं इस बिंदु पर अपनी गहराई से बाहर हूं।

धन्यवाद

+0

मुझे यकीन है कि नहीं कर रहा हूँ क्यों "' htdocs' "' Directory'definition की अवधि में चित्र में आता है:

यहाँ मेरा अंतिम httpd.conf फ़ाइल है। – VonC

+0

जो अपाचे के लिए फ़ाइलों को सेवा देने के लिए डिफ़ॉल्ट स्थान है। मैं रिपॉजिटरीज दिखाने के लिए PHP gui का उपयोग करता हूं, यह वही ऑथ्यूसरफ़ाइल का उपयोग करता है और पॉपअप लॉगिन देता है और उसी उपयोगकर्ता नाम और पासवर्ड के साथ काम करता है। यह सुनिश्चित करने के लिए कि अपाचे उपयोगकर्ता पासवर्ड फ़ाइल को समझ सके, परीक्षण के रूप में इसका उपयोग कर रहा है। – Jon

+0

यह प्रश्न http://serverfault.com/ पर होना चाहिए क्योंकि यह प्रोग्रामिंग के साथ कम करता है और सेटअप और कॉन्फ़िगरेशन के साथ और अधिक नहीं, नहीं? –

उत्तर

23

ठीक है, तो नरक जमे हुए हैं और मुझे अंततः यह काम मिल गया है!

मुझे विश्वास है कि मेरे सेटअप के साथ मूल रूप से गलत दो चीजें थीं।

1) उपयोगकर्ता हो रही प्रमाणीकरण के माध्यम से पारित नहीं किया गया था, मैंने पाया इस मदद की:

SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER 

दूसरी बात मैं शारीरिक "निर्देशिका" काम करने के लिए नहीं मिल सका।

<Directory "C:/GIT/Apache/repositories"> 
Options +ExecCGI 
AuthType Basic 
AuthName intranet 
AuthUserFile "C:/GIT/Apache/config/users" 
Require valid-user 
</Directory> 

इसे हल करने के लिए मैंने पुल और पुश दोनों के लिए स्थान मैच का उपयोग किया। इसका मतलब है कि आपको खींचने और धक्का देने के लिए प्रमाणित करना होगा।यदि आप परेशान करना चाहते हैं तो आप "गिट-अपलोड-पैक" अनुभाग को हटा सकते हैं।

आशा है कि यह किसी और की मदद कर सकता है।

DocumentRoot "C:/GIT/Apache/www" 

<Directory /> 
Options +ExecCGI 
Allow from all 
</Directory> 

<Directory "C:/GIT/Apache/www"> 
    Allow from all 
</Directory> 

<Directory "C:/GIT/Apache/www/secure"> 
AuthType Basic 
AuthName intranet 
AuthUserFile "C:/GIT/Apache/config/users" 
require valid-user 
</Directory> 

SetEnv GIT_PROJECT_ROOT C:/GIT/Apache/repositories 
SetEnv GIT_HTTP_EXPORT_ALL 
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER 
ScriptAliasMatch \ 
    "(?x)^/(.*/(HEAD | \ 
        info/refs | \ 
        objects/(info/[^/]+ | \ 
          [0-9a-f]{2}/[0-9a-f]{38} | \ 
          pack/pack-[0-9a-f]{40}\.(pack|idx)) | \ 
        git-(upload|receive)-pack))$" \ 
        "C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1" 


<LocationMatch "^/.*/git-receive-pack$"> 
Options +ExecCGI 
AuthType Basic 
AuthName intranet 
AuthUserFile "C:/GIT/Apache/config/users" 
Require valid-user 
</LocationMatch> 

<LocationMatch "^/.*/git-upload-pack$"> 
Options +ExecCGI 
AuthType Basic 
AuthName intranet 
AuthUserFile "C:/GIT/Apache/config/users" 
Require valid-user 
</LocationMatch> 
+0

उत्कृष्ट प्रतिक्रिया। धन्यवाद। +1 – VonC

+0

हाय जॉन, आपका काम बहुत अच्छा है। क्या आप मुझे समझने में मदद कर सकते हैं कि आपने उपयोगकर्ताओं को कॉन्फ़िगर कैसे किया है क्योंकि ऐसा लगता है कि यह आपके लिए कोई समस्या नहीं थी – pollux1er

+0

@ pollux1er मैं अंत में जिथब में स्थानांतरित हुआ। मैं केवल अपने स्वयं के लिए इसका उपयोग कर रहा था इसलिए उपयोगकर्ताओं के साथ बहुत चिंता नहीं थी। अब इसके बारे में ज्यादा याद नहीं है, क्षमा करें और जीएल। – Jon

संबंधित मुद्दे