ฉันกำลังพยายามติดตั้งเซิร์ฟเวอร์ที่ repo git ของฉันสามารถเข้าถึงได้ด้วย HTTP (S)
ฉันใช้ gitolite และ nginx (และ gitlab สำหรับเว็บอินเตอร์เฟส แต่ฉันสงสัยว่ามันสร้างความแตกต่าง)
ฉันค้นหาตลอดบ่ายและฉันคิดว่าฉันติดอยู่
ฉันคิดว่าฉันเข้าใจแล้วว่า nginx ต้องการ fcgiwrap เพื่อทำงานกับ gitolite ดังนั้นฉันจึงลองใช้การกำหนดค่าหลายอย่าง แต่ไม่สามารถใช้งานได้
ที่เก็บของฉันอยู่ที่ / home / git / repositories
นี่คือการกำหนดค่า 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
ใครทำสำเร็จแล้วในการทำเช่นนี้? ผมทำอะไรผิดหรือเปล่า?
ขอบคุณ
UPDATE:
ไฟล์บันทึกข้อผิดพลาด 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
นี่คือไฟล์ error.log ฉันมีตอนนี้:
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
?