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

我有一台标准的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两幕式最佳实践,在其中创建包含静态文件的项目目录.当然,Nginx现在无法访问/ home / mh00h / development / project1 / project1 / static,因为所有这些父目录均由mh00h而非www-data拥有(./static由www-data拥有).

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

我不愿透露两个独家新闻的最佳做法,并将/ static分别存储在/ var / www中,因为我希望所有这些目录都很好地打包在一起,以便以后方便地传输到其他服务器.另外,如果我将自己与两个小勺子做的比较,那会让我感到混乱.

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

谢谢.

最佳答案
除非另有要求,否则生产环境中的所有文件和目录均由具有755/644文件权限的root:root拥有.某些私有文件(例如私有密钥等)仅可由需要它们的用户/进程读取,而仍只能由root写入.

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

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

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

相关文章

文章浏览阅读3.7k次,点赞2次,收藏5次。Nginx学习笔记一、N...
文章浏览阅读1.7w次,点赞14次,收藏61次。我们在使用容器的...
文章浏览阅读1.4k次。当用户在访问网站的过程中遇到404错误时...
文章浏览阅读2.7k次。docker 和 docker-compose 部署 nginx+...
文章浏览阅读1.3k次。5:再次启动nginx,可以正常启动,可以...
文章浏览阅读3.1w次,点赞105次,收藏182次。高性能:Nginx ...