
Ich versuche, Gitolite so zu konfigurieren, dass es mit Gitweb auf Nginx funktioniert. Und obwohl Gitweb einwandfrei funktioniert und alle von Gitolite bereitgestellten Zugriffskontrollfunktionen erkennt, kann ich anscheinend nicht über http auf die Repos selbst zugreifen. Wenn ich beispielsweise versuche, ein Repo abzurufen, erhalte ich:
user@hostname:$ git fetch origin master Username for 'http://git.<hostname>': <Username> Password for 'http://<Username>@git.<hostname>': remote: An error occurred while reading CGI reply (no response received) fatal: unable to access 'http://git.<hostname>/git/<reponame>.git/': The requested URL returned error: 502
Meine aktuelle Nginx-Konfiguration sieht folgendermaßen aus:
server {
listen 127.0.0.1:80;
server_name git.<hostname>;
root /usr/share/gitweb;
# Basic Authentication
auth_basic "Private Git Server";
auth_basic_user_file /srv/etc/.htpasswd;
location ~ /git(/.*) {
root /srv/git/;
client_max_body_size 0;
# fcgiwrap is set up to listen on this host:port
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /srv/git/gitolite-source/src/gitolite-shell;
# export all repositories under GIT_PROJECT_ROOT
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT /srv/http/repositories;
fastcgi_param GITOLITE_HTTP_HOME /srv/git;
fastcgi_param PATH_INFO $1;
fastcgi_pass unix:/var/run/fcgiwrap.sock;
}
try_files $uri @gitweb;
location @gitweb {
fastcgi_pass unix:/var/run/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/gitweb/gitweb.cgi;
fastcgi_param PATH_INFO $uri;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param GITWEB_CONFIG /srv/git/gitweb/gitweb.conf;
include fastcgi_params;
}
}
Gitolite ist in /srv/git installiert und alle Repositories (zusammen mit Gitolite-Konfigurationsdateien usw.) sind in /srv/http gespeichert (Gitolite wird als HTTP-Benutzer ausgeführt). Ich vermute, dass es sich um ein Konfigurationsproblem handelt. Was muss ich tun, um es mit meinem aktuellen Setup möglich zu machen, Git über HTTP zu betreiben? Ich verwende übrigens Arch
Antwort1
Nun, die Lösung war nur einen Schritt entfernt.GITOLITE_HTTP_HOME
Parameter muss nur auf/srv/http;
anstatt/srv/git;.
Und das ist es. Sowohl gitweb als auch git funktionieren perfekt und respektieren die in gitolite.conf festgelegten Berechtigungen.