致命:未找到存储库,404

问题描述 投票:0回答:1

我正在尝试使用 git http 后端做我自己的 git 服务器。我使用 nginx 和 fcgiwrap 完成所有这些工作。我还使用 docker 容器而不仅仅是主机。所以我的 nginx 配置如下所示:

        location /git {
            alias /srv/git;
            auth_basic "Restricted"; 
            auth_basic_user_file /etc/nginx/.gitpasswd; 
            fastcgi_pass unix:/var/run/fcgiwrap.socket;  
            include fastcgi_params; 
            fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
            fastcgi_param GIT_HTTP_EXPORT_ALL ""; 
            fastcgi_param GIT_PROJECT_ROOT /srv/git;  
            fastcgi_param PATH_INFO $uri;  

        }

我的 docker 映像(其中 nginx 、 git http 后端和 fcgiwrap 工作)具有用于运行 fcgiwrap 的 Dockerfile 和 docker-entrypoint.sh 。它们看起来像这样:

Dockerfile

FROM ubuntu:24.04

RUN apt-get update && apt-get install -y \
    nginx \
    spawn-fcgi \
    fcgiwrap \
    git \
    git-core \
    libc6 \
    curl \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

docker-entrypoint.sh

#!/bin/bash

echo "Starting fcgiwrap..."
spawn-fcgi -s /var/run/fcgiwrap.socket /usr/sbin/fcgiwrap
if [ $? -ne 0 ]; then
    echo "Failed to start fcgiwrap" >&2
    exit 1
fi

ps aux | grep fcgiwrap

echo "Starting nginx..."
nginx -g "daemon off;"
if [ $? -ne 0 ]; then
    echo "Failed to start nginx" >&2
    exit 1
fi

跑步时一切正常。在我的本地计算机上,我添加此远程网址:https://user:[email protected]/git/chatservice/这是一个示例。当尝试推送时,我收到此错误: fatal: 无法访问 'https://user:[email protected]/git/chatservice/' : 未找到存储库 404.

我尝试检查 git http-backend 是否有效,是的,它有效,并且我检查了包装器是否运行,它也运行,一切都运行得很好,但 nginx 我认为无法找到到此存储库的路径,或者它没有权限,但我检查了它确实有但我认为仍然不起作用。在 nginx 日志中,我只看到发出 404 的请求,仅此而已,没有详细信息。

git docker nginx git-http-backend
1个回答
0
投票

我刚刚在 PATH 信息中添加了 $1 而不是 $uri。因为当使用 reg exp git 后端时只需要路由到存储库而不需要 /git/ 所以要直接获取存储库路径我需要编写 $1

© www.soinside.com 2019 - 2024. All rights reserved.