使用centos在apache上安全地托管django项目

时间:2010-05-24 03:39:13

标签: django apache permissions

错误可以在http://djaffry.selfip.com:8080/

看到

根据django的网站,我有一个项目工作得很好,但是我把所有文件都放在/ var / www /下并且我的理解有限,这很糟糕。

“如果您的背景是PHP,那么您可能习惯将代码放在Web服务器的文档根目录下(在/ var / www这样的地方)。使用Django,您不会这样做。它不是将任何这些Python代码放在​​Web服务器的文档根目录中是个好主意,因为它可能会使人们可能通过Web查看您的代码。这对安全性不利。

将您的代码放在文档根目录的外部目录中,例如/ home / mycode。“

所以我去了/home/tipu/stuff/并执行了django-admin.py startproject twingle。然后我去了apache并做了

<VirtualHost *:8080>
    ServerName tweet_search_engine
    DocumentRoot /home/tipu/stuff/twingle/
</VirtualHost>

<Directory /home/tipu/stuff/twingle>
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE settings
  PythonOption django.root /home/tipu/stuff/twingle
  PythonDebug On
  PythonPath "['/home/tipu/stuff/', '/home/tipu/stuff/twingle/'] + sys.path"
</Directory>

现在我收到403 Forbidden错误..知道我做错了什么?我是Linux(CentOS)和django的新手,所以我可能会看到一些非常简单的东西。

2 个答案:

答案 0 :(得分:1)

这几乎肯定只是一个访问权限问题。 Apache用户需要访问项目路径中所有目录的权限 - home,home / tipu,home / tipu / stuff,home / tipu / stuff / twingle等等。您需要找出Apache正在运行的用户,并为这些目录授予读取权限。

正如伊格纳西奥所说,/ srv可能是一个更好的地方 - 但同样的权利问题仍然适用。

答案 1 :(得分:0)

好吧,/home下的/srv不是正确的地方,感谢SELinux。将应用置于{{1}}下。