2012-01-13 82 views
3

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

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我得到了(13)在Apache日志PermissionDenied错误。要解决这个错误,我(admitedly愚蠢)跑

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

我知道这是不是处理问题的方式,但我只是想在现场工作,所以我可以继续发展。

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

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

回答

1

最严格的权限可能是文件的0600和dir的0700以及拥有apache进程的用户的拥有者。这个用户根据操作系统和风格的不同而不同(例如,OSX是www,Debian/Ubuntu是www数据)。

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

另外,在生产服务器中,您希望apache用户能够写入用于存放网络上传内容的目录。那可能在你的静态文件部分(或者在不同的专用静态文件服务器上)。

+0

对于apache用户(www-data在我的情况)拥有整个站点目录是否合理?我正在考虑更多地保持自己作为所有者,并且编辑权限设置以允许apache访问它需要的任何文件/目录。 (但我不太确定这是否是正确的方法)。 – EagerToLearn 2012-01-13 20:27:44

+0

我认为你所建议的是正确的方法。在我的开发服务器上,我拥有一切0644和0755以及我自己的所有者。你也可以使用ACL。那么它将是0600和0700,你自己作为所有者和setfacl -m u:www-data:rx的一切。虽然你的fs需要支持ACL。 – 2012-01-13 20:43:40

+0

好吧,那太好了。最后一个问题,当我投入生产时,这将如何改变?我会让apache成为网站dir的所有者吗?或保留生产机器上的用户的所有权,并再次允许apache访问特定的文件/目录? – EagerToLearn 2012-01-13 21:25:58

相关问题