在apache2服务器上运行的django站点的“正确”权限设置是什么

时间:2012-01-13 20:06:43

标签: django apache ubuntu permissions virtualhost

我是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目录及其子目录的正确权限设置是什么,以便该站点将运行,并且我不会在目录中公开不必要的文件。

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

1 个答案:

答案 0 :(得分:1)

最严格的权限可能是文件0600和dir的0700以及拥有apache进程的用户的所有者。这个用户的操作系统和风格各不相同(例如,对于OSX,它是www,对于Debian / Ubuntu,它是www-data)。

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

此外,在生产服务器中,您希望apache用户能够写入包含Web上载内容的目录。这将在静态文件部分(或在不同的专用静态文件服务器上)的某处。