2013-12-30 2 views
1

Я тестирую Django и хочу, чтобы он отвечал только на определенные приложения, например, admin и опросы (из учебника). В остальное время я хочу просто обычный апач. Я смог сделать это, используя переадресацию портов. В частности, я изменил httpd.conf быть:Django отвечает только на конкретные приложения

NameVirtualHost *:8081 

и

<VirtualHost *:8081> 
DocumentRoot /home/ec2-user/srv/mysite 
ServerName <ServerIPAddress> 
#ErrorLog /home/ec2-user/testproject/logs/apache_error.log 
#CustomLog /home/djangotest/helloworld/logs/apache_access.log combined 
WSGIScriptAlias//home/ec2-user/srv/mysite/apache/wsgi.py 
etc... 

Однако, я хочу, чтобы избавиться от 8081, и просто заставить его работать на порту по умолчанию 80? На данный момент оба mysite: 8081/polls/и mysite: 8081/admin/оба работают.

Вот файл WSGI в случае его необходимости:

import os 
import sys 

path= '/home/ec2-user/srv/mysite' 
if path not in sys.path: 
    sys.path.append(path) 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

Edit: Вот urls.py из MySite (не поголовно).

from django.conf.urls import patterns, include, url 
from django.conf import settings 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    # Examples: 
    # url(r'^$', 'mysite.views.home', name='home'), 
    # url(r'^blog/', include('blog.urls')), 
    url(r'^polls/', include('polls.urls',namespace = "polls")), 
    url(r'^admin/', include(admin.site.urls)), 
) 

Вот urls.py для опросов:

from django.conf.urls import patterns, include, url 

from polls import views 

urlpatterns = patterns('', 
    #ex: /polls/ 
    url(r'^$', views.index, name='index'), 
    #ex: /polls/5 
    url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'), 
    # ex: /polls/5/results/ 
    url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'), 
    # ex: /polls/5/vote/ 
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'), 
) 

ответ

2

Изменение WSGIScriptAlias ​​часть вашего apache2 конфигурации, как это:

WSGIScriptAlias /polls /home/ec2-user/srv/mysite/apache/wsgi.py 

Кроме того, поскольку вы собираетесь запускать несколько приложений Django на сервере, вместо использования: os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "mysite.settings"), изменить его на:

os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" 

Из вашего MySITE URLs изменить г '^ /' опросы к г '^'. Вы должны сделать это, потому что apache2 присваивает /опросы запросу / в приложение django. (То же самое объясняет, почему вы должны набирать:/polls/admin).

Вы можете прочитать больше об этом here

WSGIDaemonProcess является рекомендуемым способом развертывания нескольких приложений Django. (Вы найдете много примеров в стеке).

И да, вы можете использовать вышеуказанные настройки с порт: 80.

Для получения дополнительной информации вы можете увидеть это link.

+0

После внесения этого изменения оба сайта admin и polls - 404. Используемые мной URL-адреса: /опросы и /admin. Тем не менее, это 404 подается через Django. – user1357015

+0

Можете ли вы показать свои urls.py –

+0

Я добавил соответствующий раздел, спасибо! – user1357015

Смежные вопросы