Gitwebを使用してnginxで動作するようにgitoliteを構成しようとしています。また、gitwebが問題なく動作し、gitoliteが提供するすべてのアクセス制御機能を認識しているにもかかわらず、http経由でリポジトリ自体にアクセスできないようです。たとえば、レポをフェッチしようとすると、次のようになります。
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を実行)に保存されます。見当違いの問題だと思います。現在の設定でgitover httpを操作できるようにするには、何をする必要がありますか?私はアーチを使用しています、ところで
さて、解決策はわずか1ステップでした。 GITOLITE_HTTP_HOME
パラメータは/srv/http;
の代わりに/srv/git;.
そしてそれだけです。 gitwebとgitはどちらも完全に機能し、gitolite.confで設定された権限を尊重します。