嘗試通過 http 複製/獲取任何 repo 時出現 Gitolite 502
我正在嘗試將 gitolite 配置為使用 gitweb 在 nginx 上工作。儘管 gitweb 可以完美地工作並辨識 gitolite 提供的所有訪問控制功能,但我似乎無法通過 http 訪問儲存庫本身。例如,當我嘗試獲取 repo 時,我得到:
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
我目前的 nginx 配置如下所示:
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 安裝在 /srv/git 中,所有儲存庫(以及 gitolite 配置文件等)都儲存在 /srv/http 中(在 http 使用者下執行 gitolite)。我懷疑這是一個錯誤配置的問題。我需要做些什麼才能使用我目前的設置通過 http 操作 git?我使用 Arch,順便說一句
好吧,解決方案只有 1 步之遙。**
GITOLITE_HTTP_HOME
參數只需要指向/srv/http;
而不是/srv/git;.
**就是這樣。gitweb 和 git 功能完美,並尊重 gitolite.conf 中設置的權限。