繁体   English   中英

Django的文件权限:Gunicorn,Nginx和静态文件

[英]File permissions for Django: Gunicorn, Nginx, and Static Files

我有一台标准的ubuntu 14.04机器。 我每天在用户mh00h下使用它。 我有兴趣将这台机器用作生产服务器。 如何管理Django和Nginx的文件权限?

Nginx目前配置为在www-data:www-data下运行。 这可以最大限度地降低机器其他部件受到危害的风险。 Django / gunicorn同样应该在mh00h以外的用户下运行。 但是用户应该使用gunicorn实际运行? nobody ,对吗?

下一篇:我将所有的web开发文件存储在/home/mh00h/development mh00h拥有。 /home/mh00h/development/project1 (plus all dir/files but /media and /static) mh00h拥有。 我遵循django双勺最佳实践来创建一个包含静态文件的项目目录。 当然,Nginx现在无法访问/home/mh00h/development/project1/project1/static因为所有这些父目录都归mh00h ,而不是www-data./staticwww-data )。

为了使问题复杂化,virtualenvwrapper在/home/mh00h/.virtualenvs/下创建我的虚拟环境。

我不愿意在/var/www分别从两个scoop的最佳实践和store /static分离出来,因为我希望所有这些目录保持良好的打包状态,以便以后轻松传输到其他服务器。 另外,如果我将自己与双勺的比较方式进行比较,那会让我感到麻烦。

  1. 我的静态文件应该存储在哪里?
  2. django应该在哪里存储特定文件?
  3. 哪些用户/组应该能够访问1和2中的哪一个?
  4. virtualenvwrapper环境应该存储在哪里?
  5. 这些位置应具有哪些权限?

谢谢。

除非另有要求,否则我们的生产环境中的所有文件和目录都由root:root拥有,具有755/644文件权限。 一些私有文件(想想私钥等)只能由需要它们的用户/进程读取,同时仍然只能由root写入。

至于项目结构:我们所有项目都在/srv/www/vhosts.d/下有一个专用目录。 虚拟环境存储在/srv/www/virtualenvs 将它们存储在您的主文件夹中是完全可能的,但我觉得这种核心方法更符合生产服务器的想法。 通过正确的设置,所有用户也可以访问所有虚拟环境。

我们的主项目目录包含几个脚本(manage.py和几个部署/更新脚本),并进一步拆分为子目录:即web包含公共文件, src包含源代码, frontend包含模板文件夹和sass文件夹。 整个项目目录包含在git存储库中,但特定于部署的文件(用户上载的文件,搜索索引,加密密钥)都在.git-ignore

我们的nginx进程以www-data运行。 通常,每个Django项目都有自己的用户,gunicorn进程以该用户身份运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM