[英]Placing code outside of document root problems with Apache and Django
我在执行Django关于代码放置的建议时遇到了麻烦。 我搜索了Google,并尝试了所有类型的VirtualHost配置。 但是,我无法让Django站点像Django的内置测试Web服务器那样与Apache一起使用。
我正在使用Django 1.5.4和mod_wsgi
Django文档指出:
该代码应该放在哪里?
如果您的背景是普通的旧PHP(不使用现代框架),则可能习惯于将代码放在Web服务器的文档根目录下(例如/ var / www)。 使用Django,您无需这么做。 将任何这些Python代码放在Web服务器的文档根目录中不是一个好主意,因为这冒着人们可能能够通过Web查看您的代码的风险。 这对安全性不利。
将您的代码放在文档根目录之外的某个目录中,例如/ home / mycode。
在尝试这样做时,我失败了。
这是我的目录结构的示例:我有/ home / user / djangoRoot,我想将其作为文档根目录,将/ home / user / djangoCode放在我的代码放置位置。 我已按照运行django-admin.py startproject djangoSite
的教程django-admin.py startproject djangoSite
并且所有文件夹和文件均已创建。 数据库同步效果很好。 当我使用Django的内置测试Web服务器时,可以查看该站点。 但是我感觉apache虚拟主机出了点问题,因为我无法用apache来查看网站。
同样,本着使代码脱离文档根目录的精神,我希望将djangoRoot作为我的根目录,并将djangoCode作为我的代码目录(其中带有djangoSite / djangoSite目录,这些目录是在运行django-admin.py start project djangoSite
命令后创建的) )。
我试过了
没有工作。
这是我当前的Apache VirtualHost
WSGIPythonPath /home/user/djangoCode/djangoSite/djangoSite
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/user/djangoRoot
<Directory /home/user/djangoRoot>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
WSGIScriptAlias /djangoRoot /home/user/djangoCode/djangoSite/djangoSite/wsgi.py
<Directory "/home/user/djangoCode/djangoSite/djangoSite/wsgi.py">
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
...
</VirtualHost>
目前,这仅允许我查看没有django迹象的文档根目录。 我的虚拟主机配置错误吗? 我是否将此“代码超出文档根目录范围”?
我真的不明白您为什么这么难找到,但是您显然根本没有关注我。 在文档中进行解释的重点是,代码所在的文件系统完全独立于Apache所处的位置。 后者由WSGIScriptAlias的第一个参数给出。 前者由第二个参数给定。
文档根目录是Apache从中提供文件的默认位置。 但是您不提供文件,而是运行代码来提供动态内容。 因此,在WSGIScriptAlias的第一个参数给出的点上,您将代理到WSGI应用程序。 那是您网站的根URL。 在您给出的示例中,这意味着-假设您的域名为example.com
您的Django应用将可以在example.com/djangoRoot
下访问。 如果您实际上是在浏览器中访问过该URL,则将在urls.py中的/
下看到任何配置的页面。 几乎可以肯定这不是您想要的。 在绝大多数情况下,第一个参数(如docs中所示)应为/
。
因此,我不确定您为什么认为这违反了安全警告。 在这里,文档根目录默认保持为默认值-通常为/var/www
/home/user/djangoCode/...
但代码位于/home/user/djangoCode/...
,并位于/
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.