我很难实现Django的代码放置建议。我搜索过谷歌,除了尝试所有类型的虚拟主机配置之外。但是,我不能让Django站点像使用Django的内置测试web服务器那样与Apache一起工作。在
我使用的是django1.5.4和mod_wsgi
Django文件指出:
Where should this code live?
If your background is in plain old PHP (with no use of modern frameworks), you’re probably used to putting code under the Web server’s document root (in a place such as /var/www). With Django, you don’t do that. It’s not a good idea to put any of this Python code within your Web server’s document root, because it risks the possibility that people may be able to view your code over the Web. That’s not good for security.
Put your code in some directory outside of the document root, such as /home/mycode.
但在努力做到这一点上,我失败了。在
下面是我的目录结构的一个例子:我有/home/user/djangoot,我希望它作为文档根目录,而/home/user/djangoCode用于放置代码的位置。我已经按照教程运行了django-admin.py startproject djangoSite
,所有的文件夹和文件都是按照它们应该的方式创建的。数据库同步工作得很好。当我使用Django的内置测试web服务器时,我可以查看该站点。但是我觉得我的apache虚拟主机出了问题,因为我不能用apache同样的方式查看站点。在
同样,出于将代码排除在文档根目录之外的精神,我希望djangoot作为我的根目录,djangoCode作为我的代码目录(其中包含运行django-admin.py start project djangoSite
命令后创建的djangoSite/djangoSite目录)。在
我试过了
都没用。在
这里是我当前的apache虚拟主机
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提供文件的默认位置。但你不是在提供文件,而是在运行代码来提供动态内容。因此,您将代理到WSGI应用程序,在WSGIScriptAlias的第一个参数指定的点。这是您站点的根URL。在您给出的示例中,这意味着-假设您的域名是
example.com
-您的Django应用程序可以在example.com/djangoRoot
下访问。如果您在浏览器中实际访问了该URL,您将看到在您的网址.py. 这几乎肯定不是你想要的。在绝大多数情况下,第一个参数(如文档中所示)应该是/
。在所以我不知道你为什么认为这违反了安全警告。在这里,文档根在默认情况下保持在任何位置(通常是}处提供服务。在
/var/www
),但代码位于/home/user/djangoCode/...
中,并在{相关问题 更多 >
编程相关推荐