gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:04:27 24 4
gpt4 key购买 nike

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

Nginx 当前配置为在 www-data:www-data 下运行。这最大限度地降低了机器其余部分受到损害的风险。 Django/gunicorn 同样应该在 mh00h 以外的用户下运行。但是 gunicorn 实际上应该在什么用户下运行? 没有人,对吗?

接下来:我将我所有的 Web 开发文件存储在 /home/mh00h/development 下。归 mh00h 所有。 /home/mh00h/development/project1(加上除/media 和/static 之外的所有目录/文件)?归 mh00h 所有。我遵循 django two-scoops 最佳实践来创建一个包含静态文件的项目目录。当然,Nginx 现在无法访问 /home/mh00h/development/project1/project1/static 因为所有这些父目录都属于 mh00h,而不是 www-data(./staticwww-data 所有)。

使事情复杂化的是,virtualenvwrapper 在 /home/mh00h/.virtualenvs/ 下创建了我的虚拟环境。

我犹豫要不要放弃两个 scoop 的最佳实践并将 /static 单独存储在 /var/www 中,因为我希望所有这些目录都保持良好的打包状态在一起以便以后轻松传输到其他服务器。另外,如果我将自己与两勺的做法进行比较,我会变得一团糟。

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

谢谢。

最佳答案

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

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

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

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

关于linux - Django : Gunicorn, Nginx 和静态文件的文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24946859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com