Usiłuję skonfigurować serwer, na którym moje repozytorium git będzie dostępne za pomocą HTTP (S).
Używam gitolite i nginx (i gitlab do interfejsu internetowego, ale wątpię, czy to robi jakąkolwiek różnicę).
Przeszukałem całe popołudnie i myślę, że utknąłem.
Wydaje mi się, że zrozumiałem, że nginx potrzebuje fcgiwrap do pracy z gitolitem, więc wypróbowałem kilka konfiguracji, ale żadna z nich nie działa.
Moje repozytoria znajdują się w / home / git / repositories.
Oto trzy konfiguracje nginx, które wypróbowałem.
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;
}
Wynik:
> 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?
i
> 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;
}
Wynik:
> 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?
i
> 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;
}
Wynik:
> 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
i
> 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
Zauważ też, że w każdej z tych konfiguracji, gdy próbuję sklonować nazwę projektu, która tak naprawdę nie istnieje, pojawia się błąd 502.
Czy ktoś już to zrobił? Co ja robię źle?
Dzięki.
AKTUALIZACJA:
Plik dziennika błędów nginx powiedział:
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"
Więc zmieniłem uprawnienia dla /var/run/fcgiwrap.socket, a teraz mam:
> 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
Oto plik error.log, który mam teraz:
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"
Kontynuuję śledztwo.
/usr/lib/git-core/git/projectname.git/info
?Odpowiedzi:
Oto, co ustawiłem w mojej konfiguracji Apache (wiem: nie nginx, ale nadal mogę ci pomóc):
(ze
@H@
ścieżką, gdzie.gitolite.rc
iw moim przypadku repozytoria są przechowywane)Nie widzę
GITOLITE_HTTP_HOME
i nieGIT_HTTP_BACKEND
zdefiniowałem w twojej konfiguracji.Zobacz pełną konfigurację tutaj .
źródło