我正在尝试在我的Nginx服务器上安装Gitweb.似乎所有东西都配置正确,但我似乎在gitweb.log中收到以下错误:

2015/06/08 08:42:05 [crit] 29135#0: *5 connect() to unix:/var/run/fcgiwrap.socket failed (13: Permission denied) while connecting to upstream, client: 83.36.85.6, server: git.mydomain.co.uk, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/fcgiwrap.socket:", host: "git.mydomain.co.uk"

检查了所有者/权限,似乎一切都很好.

srwxr-xr-x 1 www-data www-data 0 Jun 8 08:44 /var/run/fcgiwrap.socket
ps aux | grep nginx
root     30283  0.0  0.0  90552  1296 ?        Ss   08:59   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
forge    30284  0.0  0.0  90884  1924 ?        S    08:59   0:00 nginx: worker process                           
forge    30285  0.0  0.1  90884  2408 ?        S    08:59   0:00 nginx: worker process                           
root     30528  0.0  0.0  11980   928 pts/0    R+   09:03   0:00 grep --color=auto nginx

套接字必须是客户端和服务器可读写的.假设服务器作为www-data运行并且客户端以group forge运行伪造,以下步骤应该解决问题.
将套接字的组所有权更改为用户forge组.

chgrp forge /var/run/fcgiwrap.socket

更改组权限以允许写入组伪造.

chmod g+w /var/run/fcgiwrap.socket

套接字现在可由服务器和客户端读写.

Linux的环境中如何生成srw-rw---- 的文件权限?

文件属性

  • d 开头是: 目录文件。
  • l 开头是: 符号链接(指向另一个文件,类似于瘟下的快捷方式)。
  • s 开头是: 套接字文件(sock)。
  • b 开头是: 块设备文件,二进制文件。
  • c 开头是: 字符设备文件。
  • p 开头是: 命名管道文件。

创建套接字文件

nc -Ul sock
文件权限
r = 4
w = 2
x = 1
chmod 660 sock