Nginx/git/fastcgi 服务器不工作

Nginx/git/fastcgi 服务器不工作

我使用 FastCGI 在 Nginx 上设置了 Git 服务器所需的所有组件,并按照一些教程的综合建议最终得到了这样的配置:

server {
  listen 80;
  listen [::]:80;

  server_name example.com www.example.com;

  return 301 https://example.com$request_uri;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  root /path/to/site;
  index index.html;

  server_name example.com www.example.com;

  # ... Some ssl stuff here ...

  location ~ /git(/.*) {
    auth_basic "Access denied";
    auth_basic_user_file /path/to/auth;

    client_max_body_size 0;

    fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;

    include fastcgi_params;

    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT /path/to/site/git;
    fastcgi_param PATH_INFO $1;
    fastcgi_param REMOTE_USER $remote_user;

    fastcgi_pass unix:/var/run/fcgiwrap.socket;
  }
}

但是,使用窗口 git 客户端,尝试对在中找到的存储库执行任何操作https://example.com/git/test.git都会导致客户端出现以下错误:

fatal: repository 'https://example.com/git/test.git/' not found

服务器上出现以下错误:

2016/01/07 16:59:05 [error] 5155#0: *579 FastCGI sent in stderr: "Not a git repository: '/path/to/site/git/test.git'" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: example.com, request: "GET /git/test.git/info/refs?service=git-receive-pack HTTP/1.1", upstream: "fastcgi://unix:/var/run/fcgiwrap.socket:", host: "example.com"

这很奇怪,因为/git/test.git我之前在文件夹中运行过git init --bare命令,所以存储库肯定在那里。我还尝试过,chmod 0777 test.git -R以防它无法读取存储库或其他东西,但那没有效果。

我尝试了许多相同配置的变体,但我只是不明白这里出了什么问题,因此如能得到任何帮助我将不胜感激。

答案1

尝试在你的 git 项目文件夹 (/path/to/site/git/test.git) 中运行它

git --bare init
git update-server-info

这应该会准备好 git 目录并创建必要的文件。我认为你只是错过了第二步。

相关内容