2013-02-17 13 views
6

Kann jemand mehrere Domänen zu Django hinzufügen. Ich habe versucht, die Führer hier Multiple Sites under single Django project ohne Glück zu folgen.Mehrere Websites in Django

Meine Konfiguration sieht wie folgt aus

Einstellungen

/opt/django/project/settings.py

/opt/django/project/domain1_settings.py

URL

/opt/django/project/urls.py

/opt/django/project/domain1_urls.py

wsgi

/opt/django/project/domain1/domain1.wsgi

Apache

/etc /httpd/conf.d/django.conf

<VirtualHost * > 
    ServerName domain1.co.uk 
    ServerAlias www.domain1.co.uk direct.domain1.co.uk 
    WSGIDaemonProcess domain1 processes=5 python-path=/usr/bin/python threads=1 
    WSGIScriptAlias//opt/django/project/domain1/domain1.wsgi 
    ErrorLog logs/domain1-error.log 
    CustomLog logs/domain1-access.log common 
</VirtualHost> 

Wenn ich Apache neu starte, sehe ich keine Fehler, aber wenn ich auf die Seite gehe, werde ich an die (nicht django) Domäne gesendet, die in der Haupt-httpd.conf konfiguriert ist.

Danke,

Antwort

13

Diese Antwort macht die Annahme, dass Sie zwei Domain-Namen jeweils laufende separate Django Projekte haben wollen, aber aus dem gleichen Apache-Server gehostet werden. Wenn dies nicht der Fall ist, verfeinern Sie Ihre Frage!

So starten Sie mit zwei VirtualHost Einträge in Ihrer Apache-conf brauchen werden (lassen Sie uns Ihre Websites rufen domain1.co.uk und domain2.co.uk)

# Virtual hosts setup 
NameVirtualHost * 
<VirtualHost *> 
    ServerName domain1.co.uk 

    WSGIDaemonProcess APPLICATION_NAME processes=5 python-path=/opt/django/project/domain1:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6  threads=1 
    WSGIScriptAlias//opt/django/project/domain1/domain1.wsgi 
</VirtualHost> 

<VirtualHost *> 
    ServerName domain2.co.uk 

    WSGIDaemonProcess APPLICATION_NAME_www processes=5 python-path=/opt/django/project/domain2:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1 
    WSGIScriptAlias//opt/django/project/domain2/domain2.wsgi 
</VirtualHost> 

Sie auch 2 wsgi Dateien müssen (wies zwei in der conf oben)

/opt/django/project/domain1/domain1.wsgi 
/opt/django/project/domain1/domain2.wsgi 

und wird so etwas wie

aussehen
import os 
import sys 
from django.core.handlers.wsgi import WSGIHandler 

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' 
# or  project.domain1_settings 
application = WSGIHandler() 

Auf den settings.py sicher, dass beide Einstellungen Dateien Differenz SITE_ID = 1 oder SITE_ID = 2 und dass Sie auf die richtige urls.py

ROOT_URLCONF = 'urls' 

oder

ROOT_URLCONF = 'domain1_urls' 

Ein großer Teil dieser Frage darauf hat aus eigener Erfahrung übernommen wurden und dies blog Post. Ihre Projektverzeichnisse und Domainnamen scheinen ein wenig verwirrend zu sein. Ich habe mein Bestes getan, um sie an die richtigen Stellen zu setzen, aber Sie müssen sich für Ihre eigenen Zwecke anpassen.

Zusätzliche

Wenn Sie zwei Seiten haben aus dem gleichen Server ausgeführt wird, werden Sie sehr vorsichtig sein müssen, um die Konsistenz über Projektverzeichnisse zu halten, statische Dateiverzeichnisse und Einstellungsdateien usw. Aus Ihrer Frage Sie sagen Ihre Einstellungsdateien sind /opt/django/project/settings.py und /opt/django/project/domain1_settings.py Dies ist ziemlich verwirrend, da es scheint, dass Sie ein Projektverzeichnis haben (/opt/django/project). Ich würde eine stärkere Trennung dringend empfehlen; wie ich oben beschreiben, vielleicht Ihre Projekte (domain1 und domain2) in Verzeichnissen

/opt/django/project/domain1/ 
/opt/django/project/domain2/ 

mit entsprechenden Einstellungen Einstellungsdateien

/opt/django/project/domain1/settings.py 
/opt/django/project/domain2/settings.py 

usw. Dies sollte es leichter zu erkennen, was falsch wohin geht.

+0

Vielen Dank für Ihre Antwort. Ich habe die Einstellungen hinzugefügt, die Sie vorgeschlagen haben, aber ich sehe ein 500-erro über Apache. Beim Durchlaufen der Logs zeigt sich, dass es meine neue Einstellungsdatei nicht importieren kann. Die neue Einstellungsdatei ist im maint Projektordner, und ich habe die Zeile hinzugefügt: In meiner wsgi Datei ----> os.environ [ ‚DJANGO_SETTINGS_MODULE‘] = ‚domain1_settings‘ Dank ihn zeigen, – felix001

+0

Nach der Zugabe Sys Pfad zu meiner wgsi Datei korrigieren und sicherstellen, dass alle meine Projekt/App Importe konstant waren, alles begann zu arbeiten. Vielen vielen Dank ... – felix001