如何通过nginx作为用户ww-data运行fastcgi?

我的Django应用程序保存图像,他们被保存为nobody:没有人而不是www-data:就像他们以前在不同的服务器下。 nginx设置为用户www-data,我以root身份运行manage.py runfcgi,因此权限不应该成为问题。

检查ps waux 。 我的怀疑是,你的manage.py runfcgi已经把权限下放给了另外一个用户,以确保你没有以root身份运行脚本 – 这是一个非常危险的事情。

如果是这样的话,解决scheme就像编辑configuration一样简单,但是您正在pipe理您的fcgi实例,并使用www-data:www-data作为用户和组,而不是将任何人放弃权限。

在fastcgi中运行django必须停止并由用户代码启动,如果您调用./manage.py runfcgi,您的用户将拥有该进程。 如果从启动作业运行此操作,则root将拥有该进程,这是不好的,因为它写入的文件和日志不会被其他用户和进程访问,也不会为您的应用程序留下权限沙盒。 最佳做法是使用与apache相同的用户或需要与其共享文件的其他应用程序启动您的应用程序。 如果您的应用程序需要从启动脚本(根上下文)启动,

 sudo -u youruser manage.py runfcgi 

避免你的应用程序以root身份运行。

你提到用户'nobody' – 这是nginx保存文件的默认用户。 我build议你让nginx使用与你的应用程序相同的用户,你可以通过添加

 user youruser; 

在nginx.conf中