【问题标题】:safely hosting a django project over apache using centos使用 centos 在 apache 上安全地托管 django 项目
【发布时间】:2010-05-24 03:39:12
【问题描述】:

错误可见于: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 比较陌生,所以我可能会忽略一些非常简单的事情。

【问题讨论】:

    标签: django apache permissions


    【解决方案1】:

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

    正如 Ignacio 所建议的,/srv 可能是一个更好的放置位置 - 但同样的权利问题仍然适用。

    【讨论】:

      【解决方案2】:

      好吧,/home 下不是正确的地方,感谢 SELinux。将应用程序放在/srv 下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-15
        • 2018-06-05
        • 2018-08-04
        • 2020-10-27
        相关资源
        最近更新 更多