git-daemon:“无法在主机(null)端口9418上分配任何侦听套接字”

时间:2011-06-19 02:25:04

标签: linux git daemon

在Debian挤压时,我收到系统日志错误:

unable to allocate any listen sockets on host (null) port 9418

我也无法远程克隆。

文件/etc/service/git-daemon/run

"$(git --exec-path)"/git-daemon --verbose --base-path=/var/cache/git --detach --syslog --reuseaddr --export-all

netstat -l | grep git输出:

tcp        0      0 *:git                   *:*                     LISTEN     
tcp6       0      0 [::]:git                [::]:*                  LISTEN

我目前正在使用sv start/stop命令行重新启动服务,并终止服务进程以确保重新加载。

也许我错过了一些非常愚蠢的东西。 非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

我认为,当您使用--listen的{​​{1}}参数时,它不会抱怨丢失git-daemon ...

答案 1 :(得分:1)

这种问题是一个很好的回应,提醒自己git daemon附带选项:

--init-timeout=<n>
  

建立连接和收到客户端请求之间的超时(以秒为单位)(通常是一个相当低的值,因为它应该基本上是立即的)。

--timeout=<n>
  

特定客户端子请求的超时(以秒为单位)   这包括服务器处理子请求所花费的时间以及等待下一个客户端请求所花费的时间。

这确保了可以为可能不在那里的客户分配套接字而不是保留套接字。

git 2.9.x +(2016年第3季度)将更快地发现这些案件:

commit a43b68aEric Wong (ele828)(2016年5月25日) Junio C Hamano -- gitster --于2016年5月25日commit a43b68a合并)

  

daemon:为所有套接字启用SO_KEEPALIVE

     

&#34; git daemon&#34;在没有指定--[init-]timeout的情况下运行, a   来自静默脱机的客户端的连接可能会挂起   很长一段时间,浪费资源   已启用套接字级KEEPALIVE以允许操作系统注意到此类连接失败。

     

虽然存在--init-timeout--timeout选项,但我从不这样做   没有它们运行git daemon,一些用户可能忘记设置它们   当连接失败时遇到挂起守护进程。

     

启用套接字级别超时,以便内核可以发送keepalive   必要时探测探测失败的连接。

答案 2 :(得分:0)

与git守护程序设置相比,这可以更容易:

  • 对于公共存储库,将其放到github
  • 对于私有存储库,设置sshd / ssh很容易。

问题也发生在我的服务器上。

当我从git://中克隆无法使用时,我使用了两种方法。

1,git over ssh,将用户的公钥附加到〜/ .ssh / authorized_keys,然后访问存储库不需要用户名/密码:

git clone user@host:/path/to/git/repository/myproject.git

2,将存储库放在webserver的可访问目录下,例如

/var/www/git

确保/ var / www /是可访问的,例如它设置为apache httpd的doc root。这让用户至少可以获得它。