在主机上部署具有敏感代码的Django站点

时间:2014-07-25 16:01:45

标签: django web-hosting

我一直在我的本地计算机上开发一个包含敏感(即专有)代码的站点,使用apache2对其进行测试,我最终将使用Web主机进行设置。我有点小心,因为“这段代码应该在哪里生活?”请注意Django教程中的here

  

此代码应该在哪里生效?

     

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

     

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

我的主人告诉我,我将获得一个/ home /目录,并且该网站将位于/ home / www。在我将所有内容发送给他之前,我正试图模仿我的目录结构,以确保它尽可能顺利。我的问题是,如果我希望我的所有代码都存在于/ www目录之外(根据上面的Django教程推荐),/ www目录中的实际内容是什么?

我的开发目录结构基本上是这样的:

project
    db
    app1
    app2
    mysite (contains settings.py, wsgi.py, etc.)
    static
    templates (contains my base.html, and custom templates for admin, etc.)

app1和app2是我开发的Django应用程序,以插入mysite。那么什么文件夹/文件需要进入home / www目录,什么可以安全地存在于home / mycode中?

1 个答案:

答案 0 :(得分:1)

您的静态和媒体(用户上传)文件夹robots.txt等应位于www目录中。基本上任何由您的网络服务器而不是Django直接提供的文件。其他文件应该在此目录之外。

您的网络服务器应将www目录中未找到的所有请求指向您的wsgi应用程序,该应用程序不需要网址可访问的代码。

原因是你的网络服务器没有执行python文件中的代码,与php文件相比。如果您的代码存在于您的Web根目录中,那么人们只需转到example.com/src/settings.py即可阅读您的设置文件。应该读取图像,普通的html /文本文件和javascript,但是应该执行的任何代码都应该存在于web根目录之外。 Django将执行文件并生成用户实际应该看到的响应。