【问题标题】:What are the 'correct' permission setting for django site running on apache2 server在 apache2 服务器上运行的 django 站点的“正确”权限设置是什么
【发布时间】:2012-02-10 00:17:12
【问题描述】:

我对 apache 和 django 很陌生,所以如果这个问题很简单,请执行我。我正在尝试将现有站点部署到 apache 服务器。目前,该站点仍在开发中,因此我仅将其部署为本地计算机上的虚拟主机。 我在部署中使用了 Django 的 WSGI 模块。在我网站的配置文件中,我有以下别名:

Alias /media/ /home/tester/Desktop/siteRootDir/media
Alias /content/ /home/tester/Desktop/siteRootDir/content
WSGIScriptAlias /c /home/tester/Desktop/siteRootDir/deploy/site.wsgi

当我运行 apache 并转到 localhost/c 时,我在 apache 日志中收到 (13)PermissionDenied 错误。为了解决这个错误,我(诚然愚蠢地)跑了

chmod -R 777 /home/tester/Desktop/siteRootDir

我知道这不是解决问题的方法,但我只是希望网站能够正常运行,以便继续开发。

所以我的问题是,siteRootDir 目录及其子目录的正确权限设置是什么,这样网站才能运行并且我不会在目录中公开不必要的文件。

另外,我意识到这不是一个理想的设置,当我在生产中部署站点时可能会遇到问题。任何人都可以建议一个更好的组织方法吗? 谢谢!

【问题讨论】:

    标签: django apache ubuntu permissions virtualhost


    【解决方案1】:

    最严格的权限可能是文件的 0600 和目录的 0700 以及作为所有者拥有 apache 进程的用户。此用户因操作系统和风格而异(例如,对于 OSX,它是 www,对于 Debian/Ubuntu,它是 www-data)。

    这对于开发服务器来说可能太紧了。至少您希望能够通过文本编辑器的 IDE 修改所有文件,因此您应该为自己添加 ACL(即编辑 Django 文件、模板和静态文件的用户)。

    另外,在生产服务器中,您希望 apache 用户能够写入保存 Web 上传内容的目录。那将在您的静态文件部分(或在不同的专用静态文件服务器上)的某个位置。

    【讨论】:

    • apache 用户(在我的例子中是 www-data)拥有整个站点目录是否有意义?我更多地考虑让自己成为所有者,并编辑权限设置以允许 apache 访问它需要的任何文件/目录。 (我不太确定这是否是正确的方法)。
    • 我认为您的建议是正确的方法。在我的开发服务器上,我拥有一切 0644 和 0755 并拥有自己。您也可以使用 ACL。那么它将是 0600 和 0700,您自己是所有者,而 setfacl -m u:www-data:rx 则为所有内容。不过,您的 fs 需要支持 ACL。
    • 好的,太好了。最后一个问题,当我投入生产时,这将如何改变?我会让 apache 成为网站目录的所有者吗?还是将所有权保留给生产机器上的用户并再次允许 apache 访问特定文件/目录?
    • 第二个选项。永远不要让 apache 用户成为 siteRootdir 下任何东西的所有者,除了 web 上传目录。您还可以将静态文件与 django 内容完全分开,因此静态文件不会位于 siteRootdir 下(基本上为了清楚起见)。
    猜你喜欢
    • 2011-09-27
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2015-09-07
    相关资源
    最近更新 更多