首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Nginx git服务器返回错误500。

Nginx git服务器返回错误500。
EN

Stack Overflow用户
提问于 2015-05-06 07:33:57
回答 1查看 1.7K关注 0票数 1

我正在尝试为一个裸的git存储库设置一个nginx远程服务器(使用ssl),但是在从git (windows 7机器)尝试error 500时获得git clone https://my.domain.com/repo.git

我当前的配置如下所示。

Nginx服务器配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen: 80;
  server_name my.domain.com;
  # Redirect all non-HTTPS traffic to the HTTPS version
  return 301 https://my.domain.com;
}

server {
  listen 443 ssl;
  server_name my.domain.com;
  root /var/www/git;
  index index.html;

  ssl_certificate /etc/nginx/ssl/nxing.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;

  access_log /var/www/git/git.access.log;
  error_log /var/www/git/git.error.log;

  auth_basic "Git authentication required";
  auth_basic_user_file /etc/nginx/users_git;

  location / {
    client_max_body_size 0;

    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT /repo.git;
    fastcgi_param PATH_INFO $1;
    fastcgi_param REMOTE_USER $remote_user;

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

我查阅了这个源代码,以获得关于设置fcgiwrap:http://knowledgebase.cc/en/software-en/linux-en/how-to-install-fcgiwrap-to-serving-cgiperl-scripts-in-nginx/的帮助

运行git clone http://my.domain.com/repo.git时所收到的确切错误

克隆成‘回购’..。致命:无法访问“http://my.domain.com/repo.git”:请求的URL返回错误: 500

这是URL访问日志的摘录:

1xx.xxx.xxx.xx -06/5/2015:17:29:02 +0200 "GET / HTTP/1.1“500 5- "git/1.9.5.msysgit.1”

URL的错误日志为空。

我已经经历了这篇文章中描述的另一个人的每一个步骤和细节:https://superuser.com/questions/719949/centos-5-nginx-git-http-backend,但是到目前为止我还没有成功。

更新#1

我尝试注释nginx服务器配置的位置设置中的快速this参数,并指定位置url本身,结果如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location /repo.git {
  client_max_body_size 0;

  [...] commented fastcgi params [...]
}

现在的结果是,当我尝试使用git clone http://my.domain.com/repo.git时,我在git中获得了以下输出:

克隆成‘回购’..。 “http://my.domain.com”的用户名: git http://git@my.domain.com的密码:. 致命:http://my.domain.com/repo.git/info/refs无效:这是一个git存储库吗?

但是我可以在浏览器中访问http://my.domain.comhttp://my.domain.com/repo.git

更新#2

我在这个网站上得到了一个战利品:http://weininger.net/configuration-of-nginx-for-gitweb-and-git-http-backend.html,它以某种方式帮助我解决了我的问题。

我最后的Nginx服务器配置现在如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 80;
  server_name my.domain.com;
  # Redirect all non-HTTPS traffic to the HTTPS version
  rewrite ^ https://$server_name$request_uri? permanent;
}

server {
  listen 443 ssl;
  server_name my.domain.com;
  root /var/www/git;
  index index.html;

  ssl_certificate /etc/nginx/ssl/nginx.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;

  access_log /var/www/git/git.access.log;
  error_log /var/www/git/git.error.log;

  auth_basic "Git authentication required";
  auth_basic_user_file /etc/nginx/users_git;

  location ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {

    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT /var/www/git;
    fastcgi_param PATH_INFO $uri;
    fastcgi_param REMOTE_USER $remote_user;

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

这使我能够正确地执行git clonegit pull,而不会出现任何错误,但是git push会给出以下错误

计数对象: 4,完成。 三角洲压缩使用最多4个线程。 压缩对象: 100% (2/2),完成。 写入对象: 100% (3/3),312字节,0字节/s,已完成。 共计3 (delta 0),重用0 (delta 0) 错误:解压缩失败:解压对象异常退出 转到http://my.domain.com/repo.git 好了!远程拒绝主->母版(n/a (解包错误)) 错误:未能将一些参考文献推送到“http://my.domain.com/repo

更新#3

似乎unpack failed错误是由于权限问题造成的。即使我做了chown -R git:git repo.git,我也不能推送到存储库。但是做chown -R git:nginx repo.git解决了这个问题。考虑到这是由fastcgi脚本编写的(我想?),这一点我部分理解,而这又是由Nginx生成的。

一些澄清或更深入的解释,为什么这些设置的工作方式,但将是伟大的,但为了更好地学习和理解,如果任何人可以的话。

EN

回答 1

Stack Overflow用户

发布于 2015-05-07 02:19:37

通过大量的搜索和尝试/错误解决了我的问题。我所采取的步骤被详细记录在问题的更新中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30081316

复制
相关文章
如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果
        最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理。今天花点时间,将该方法整理成文。(转载请指明出于breaksoftware的csdn博客)
方亮
2019/01/16
3.9K0
subprocess:Python中创建子进程
subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。
luckpunk
2023/09/29
5480
subprocess:Python中创建子进程
如何在 Python 里优雅地读取文件特定行
如果文件非常大,不能读取到内存中,那么你可能会通过for 循环数行数,数到特定行:
青南
2019/09/16
2.3K0
如何在 Python 中读取 .data 文件?
在本文中,我们将学习什么是 .data 文件以及如何在 python 中读取 .data 文件。
很酷的站长
2023/02/22
5.9K0
如何在 Python 中读取 .data 文件?
python读取特定的行
fr = open(filename) for line in fr.readlines():     if line.startswith("#"):         continue     else:         ## do something with line          ## could use fr.readlines()[1:]  from second line import linecache content_list = linecache.getlines(filenam
py3study
2020/01/13
3.9K0
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/08/03
1.8K0
如何在 Python 中启动后台进程?
如何在 Python 中启动后台进程?
后台进程是在后台运行的程序或任务,它们不会阻塞主程序的执行,并可以在后台处理一些耗时或周期性的任务。在本文中,我们将探讨如何在Python中启动后台进程,并介绍一些内置模块和第三方库来实现这一目标。
网络技术联盟站
2023/07/14
4170
如何在 Python 中启动后台进程?
如何在python中惰性地读取文件?
惰性地读取,就是在读文件的时候,不是直接将整个文件读到内存之中,而是一行一行的读取。这对于读取如网页日志这样的贼大的文件来说,可以减少打开文件的响应时间以及所占用的内存。
灯珑LoGin
2022/10/31
1.8K0
父视图半透明而子视图不半透明
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/50970269
用户1451823
2018/09/13
1.3K0
python readinto直接读取到缓冲区
def read_into_buffer(filename): buf = bytearray(os.path.getsize(filename)) with open(filename, 'rb') as f: f.readinto(buf) return buf
用户5760343
2019/09/30
8810
如何在 Python 中终止 Windows 上运行的进程?
当深入研究Windows操作系统上的Python开发领域时,无疑会出现需要终止正在运行的进程的情况。这种终止背后的动机可能涵盖多种情况,包括无响应、过度资源消耗或仅仅是停止脚本执行的必要性。在这篇综合性的文章中,我们将探讨各种方法来完成使用 Python 终止 Windows 上运行的进程的任务。通过利用“os”模块、“psutil”库和“子流程”模块,我们将为自己配备一个多功能工具包来解决这项势在必行的任务。
很酷的站长
2023/08/11
5840
如何在 Python 中终止 Windows 上运行的进程?
进程中的数据读取和修改
// 获取窗口句柄 HWND hFindWnd = ::FindWindow(NULL, “[窗口标题]”);
ClearSeve
2022/02/16
8580
python 从subprocess运行的子进程中实时获取输出
shell =false 意思是command 使用的不是linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息。 p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行.
多凡
2020/02/11
10.5K0
最佳实践:巧妙kill CRS进程而不导致主机重启
张大朋(Lunar)Oracle 资深技术专家 Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等。 我们都知道,在RAC环境中,如果kill ocssd.bin进程,会引起主机重启。 但是有时候系统已经异常了了,且CRS不能正常关闭,而主机可能是几年没重启的老系统,没人敢重启,现在怎么办? 我们只能尝试手
数据和云
2018/03/06
2K0
最佳实践:巧妙kill CRS进程而不导致主机重启
python multiprocess 子进程和主进程同时抛出异常时子进程无法退出
在使用python的multiprocess库时,如果在主进程中的处理子进程的返回函数callback或者处理子进程的错误的函数errorbackerror中抛出异常,则子进程无法退出。 (1)errorcallback中抛出异常
锦小年
2021/12/08
3.1K0
python multiprocess 子进程和主进程同时抛出异常时子进程无法退出
美好“如祺”而至,安全如影随形
昨天,网约车家族又迎来了一个新成员 —— 如祺出行。 这个由广汽与腾讯等合作方联手打造的共享出行产品,将在广州正式推出市场,以粤港澳大湾区为核心逐步向全国推广,计划一年内开拓5个城市,投放近一万辆新能源车型。 腾讯拿出了用户服务和营销、车联网和平台运营、地图和云服务、生态服务和安全五大核心能力,支持如祺出行。安全能力作为其他四大能力的基石,对出行平台的业务发展至关重要。腾讯安全在如祺出行上也拿出了一整套的解决方案,涵盖安全咨询、应用安全、风控安全,从战略视角帮助如祺出行构建全面的安全体系。 那么
腾讯安全
2019/09/16
1.5K0
美好“如祺”而至,安全如影随形
【说站】python如何在word中读取表格内容
word文件看起来很复杂,不方便结构化。事实上,word文档中大概有几种内容:paragraph(段落)、table(表格)、character(字符)。我现在要分析的word文档基本都是段落和表格。本文主要讲述从word中分析表格,并将表格信息结构化的方法。
很酷的站长
2022/11/24
2K0
python读取文件末尾N行
# -*- coding: cp936 -*- import os,sys,re def lastline(): global pos while True: pos = pos - 1 try: f.seek(pos, 2) #从文件末尾开始读 if f.read(1) == '\n': break except: #到达文件第一行,直接读取
py3study
2020/01/13
3.3K0
点击加载更多

相似问题

Jaeger服务未显示在Jaeger UI中

14

在远程主机(而不是本地)上使用烧瓶虚拟主机

25

MS Excel 365:本地主机urls在本地浏览器中打开,而不是弹出对话框

115

PHP文件在浏览器中打开,而不是运行

31

国际化在本地运行,而不是在远程运行

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文