使用FastCGI运行Django时的套接字权限

时间:2010-08-07 15:47:45

标签: python django deployment fastcgi

我正在使用标准行运行Django fcgi:

exec setuidgid $USERID $VENVBIN/python $WEBAPP/manage.py runfcgi daemonize=false socket=$FCGISOCKET

问题是只有组在fastcgi进程和webserver之间共享,而不是用户 - 但是默认情况下组没有写权限(hotfix正在手动运行chmod g + w)。

如何强制进程在0770模式下创建套接字?

3 个答案:

答案 0 :(得分:4)

./manage.py runfcgi help说:

umask =在守护进程时使用的UMASK umask(默认为022)。

所以你只需要运行:

./manage.py runfcgi socket=$FCGISOCKET umask=007

将创建一个模式为0770的套接字。请注意,仅当daemonize设置为true(默认值)时才会设置umask。

答案 1 :(得分:1)

找不到用fastcgi做这个的方法,在我的settings.py的末尾添加了一个os.fchmod,这似乎使它工作。仍然是一个可怕的黑客,他们应该允许你在调用服务时设置它。

答案 2 :(得分:1)

使用umask=运行时,

daemonize=false不起作用。在这种情况下,它只会使用您当前的os umask,因此请在脚本之前运行umask 0007