[英]git-daemon: “unable to allocate any listen sockets on host (null) port 9418”
在Debian擠壓時,我收到syslog錯誤:
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
netstat -l | grep git
輸出:
tcp 0 0 *:git *:* LISTEN
tcp6 0 0 [::]:git [::]:* LISTEN
我目前正在使用sv start/stop
命令行重新啟動服務,並終止服務進程以確保重新加載。
也許我錯過了一些非常愚蠢的東西。 任何幫助深表感謝。
這種問題是一個很好的回應,提醒自己git daemon
帶有選項:
--init-timeout=<n>
建立連接的時刻與收到客戶端請求之間的超時(以秒為單位)(通常是一個相當低的值,因為它應該基本上是立即的)。
--timeout=<n>
特定客戶端子請求的超時(以秒為單位)。
這包括服務器處理子請求所花費的時間以及等待下一個客戶端請求所花費的時間。
這樣可以確保為可能不在那里的客戶分配套接字,而不是保留它。
git 2.9.x +(2016年第3季度)將更快地發現這些案件:
請參閱Eric Wong( ele828
) 提交a43b68a (2016年5月25日) 。
(由Junio C gitster
合並- gitster
- in commit a43b68a ,2016年5月25日)
daemon
:為所有套接字啟用SO_KEEPALIVE
當“
git daemon
”在沒有指定--[init-]timeout
情況下運行--[init-]timeout
, 來自靜默脫機的客戶端的連接可能會長時間--[init-]timeout
,浪費資源 。
已啟用套接字級KEEPALIVE
以允許操作系統注意到此類連接失敗。雖然存在
--init-timeout
和--timeout
選項,並且我從未運行過它們的git daemon
,但是一些用戶可能忘記設置它們並在連接失敗時遇到掛起的守護程序進程。啟用套接字級超時,以便內核可以根據需要發送keepalive探測以檢測失敗的連接。
我想,當你使用git-daemon
--listen
參數時,它不會抱怨缺少host
...
與git守護進程設置相比,這可以更容易:
問題也發生在我的服務器上。
從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。 這讓用戶至少可以獲得它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.