我有以下目錄結構Django部署在Apache - 目錄佈局
/myapp/
/login/
/myapp_settings/
/subapp1/
/supapp2/
manage.py
是在myapp
目錄Django應用程序。
在項目的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'),
)
當部署在發展runserver
,一切正確的鏈接和負載。當我將整個myapp
目錄部署到Apache上的Django根目錄時,我發現它沒有按預期鏈接。
例如,如果我鏈接到example.com/login/
,我得到一個Apache 404.我認爲這是因爲我沒有爲該特定目錄定義的虛擬目錄配置。
,我有以下設置Apache中我的應用程序:
WSGIScriptAlias /myapp /var/www/django-projects/myapp/myapp_settings/wsgi.py
WSGIPythonPath /var/www/django-projects/myapp
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>
我需要一個別名和我使用的每個URL模式目錄配置?如果是這樣,我如何重做我的URL模式,以便我不需要這樣做。我不想在部署應用程序時做所有這些額外的Apache配置。
編輯:我修改了我的WSGIScriptAlias
萊納巴赫的建議。現在它讀取WSGIScriptAlias//var/www/django-projects/myapp/myapp_settings/wsgi.py
。然而,這仍然會返回一個404在Apache日誌中的錯誤表示
[Fri Sep 07 09:11:00 2012] [error] [client 192.189.x.x] File does not exist: /var/www/html/login
注意,它看起來在/var/www/html
(默認的Apache根),而不是/var/www/django-projects
EDIT2:我附加這個部分的VirtualHost塊
您將需要爲此應用程序定義一個VirtualHost,然後設置「DocumentRoot/var/www/django-projects/myapp」 – Reinbach