在Apache目录布局上部署Django
我有一个Django应用程序,其目录结构如下在Apache目录布局上部署Django,django,apache,virtualhost,Django,Apache,Virtualhost,我有一个Django应用程序,其目录结构如下 /myapp/ /login/ /myapp_settings/ /subapp1/ /supapp2/ manage.py位于myapp目录中 在项目的url.py中,我有如下url设置: urlpatterns = patterns('', url(r'^subapp1/', include('subapp1.urls')), url(r'^xhr/', include('subapp1.urls')),
/myapp/
/login/
/myapp_settings/
/subapp1/
/supapp2/
manage.py
位于myapp
目录中
在项目的url.py
中,我有如下url设置:
urlpatterns = patterns('',
url(r'^subapp1/', include('subapp1.urls')),
url(r'^xhr/', include('subapp1.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^subapp2/', include('smart_selects.urls')),
# Login / logout.
url(r'^login/$', 'django.contrib.auth.views.login'),
url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/subapp1/'}, name='auth_logout'),
url(r'^logout/(?P<next_page>.*)/$', 'django.contrib.auth.views.logout', name='auth_logout_next'),
)
我使用的每个URL模式是否都需要别名和目录配置?如果是这样的话,我怎样才能重做我的URL模式,这样我就不需要这样做了。我不希望在部署应用程序时必须执行所有这些额外的Apache配置
编辑:我按照Reinbach的建议修改了我的WSGIScriptAlias
。它现在的内容是WSGIScriptAlias//var/www/django projects/myapp/myapp\u settings/wsgi.py
。然而,这仍然返回404。Apache日志中的错误是
[Fri Sep 07 09:11:00 2012][error][client 192.189.x.x]文件不存在:/var/www/html/login
WSGIScriptAlias / /var/www/django-projects/myapp/myapp_settings/wsgi.py
请注意,它在/var/www/html
(默认Apache根目录)中查找,而不是/var/www/django项目
EDIT2:我正在附加此部分的VirtualHost块
WSGIPythonPath /var/www/django-projects/myapp
<VirtualHost sub.example.com:80>
DocumentRoot /var/www/django-projects/myapp
ServerName sub.example.com
WSGIScriptAlias / /var/www/django-projects/myapp/myapp_settings/wsgi.py
Alias /robots.txt /var/www/django-projects/myapp/static/robots.txt
Alias /favicon.ico /var/www/django-projects/myapp/static/favicon.ico
AliasMatch ^/([^/]*\.css) /var/www/django-projects/myapp/static/css/$1
AliasMatch ^/([^/]*\.js) /var/www/django-projects/myapp/static/js/$1
AliasMatch ^/([^/]*\.png) /var/www/django-projects/myapp/static/images/$1
AliasMatch ^/([^/]*\.swf) /var/www/django-projects/myapp/static/swf/$1
Alias /media/ /var/www/django-projects/myapp/media/
Alias /static/ /var/www/django-projects/myapp/static/
<Directory /var/www/django-projects/myapp/static>
Order deny,allow
Allow from all
</Directory>
<Directory /var/www/django-projects/myapp/media>
Order deny,allow
Allow from all
</Directory>
<Directory /var/www/django-projects/myapp/myapp_settings/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
</VirtualHost>
WSGIPythonPath/var/www/django projects/myapp
DocumentRoot/var/www/django projects/myapp
ServerName sub.example.com
WSGIScriptAlias//var/www/django projects/myapp/myapp\u settings/wsgi.py
Alias/robots.txt/var/www/django projects/myapp/static/robots.txt
别名/favicon.ico/var/www/django projects/myapp/static/favicon.ico
别名匹配^/([^/]*\.css)/var/www/django projects/myapp/static/css/$1
别名匹配^/([^/]*\.js)/var/www/django projects/myapp/static/js/$1
别名匹配^/([^/]*\.png)/var/www/django projects/myapp/static/images/$1
别名匹配^/([^/]*\.swf)/var/www/django projects/myapp/static/swf/$1
别名/media//var/www/django projects/myapp/media/
别名/static//var/www/django projects/myapp/static/
命令拒绝,允许
通融
命令拒绝,允许
通融
命令拒绝,允许
通融
我相信您希望更改WSGIScriptAlias,因为您当前希望它能够处理example.com/myapp/login
,而您的示例显示您正在尝试使用example.com/login
WSGIScriptAlias / /var/www/django-projects/myapp/myapp_settings/wsgi.py
请参见我相信您希望更改WSGIScriptAlias,因为您当前希望它能够处理
example.com/myapp/login
,而您的示例显示您正在尝试使用example.com/login
WSGIScriptAlias / /var/www/django-projects/myapp/myapp_settings/wsgi.py
参见长话短说 由于Apache2.4.x不推荐使用Allow和Deny,请改用Require all-grated(或denied) 长话短说 我在尝试用Apache和mod_wsgi设置Django时遇到了同样的问题。我不完全确定为什么会发生这种情况,但当我在httpd.conf中注释掉以下几行时
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
#<Directory />
# AllowOverride none
# Require all denied
#</Directory>
然而,这只是一个尝试和错误的解决方案,我可以想出。我没有深刻理解为什么它会起作用,但“命令和允许”却不起作用
p.p.p.S哦,现在我知道了。自从Apache 2.4.x以来,不推荐使用Allow和Deny。可以找到好答案。长话短说 由于Apache2.4.x不推荐使用Allow和Deny,请改用Require all-grated(或denied) 长话短说 我在尝试用Apache和mod_wsgi设置Django时遇到了同样的问题。我不完全确定为什么会发生这种情况,但当我在httpd.conf中注释掉以下几行时
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
#<Directory />
# AllowOverride none
# Require all denied
#</Directory>
然而,这只是一个尝试和错误的解决方案,我可以想出。我没有深刻理解为什么它会起作用,但“命令和允许”却不起作用
p.p.p.S哦,现在我知道了。自从Apache 2.4.x以来,不推荐使用Allow和Deny。可以找到很好的答案。您需要为此应用程序定义虚拟主机,然后设置“DocumentRoot/var/www/django projects/myapp”。您需要为此应用程序定义虚拟主机,然后设置“DocumentRoot/var/www/django projects/myapp”