2013-02-17 13 views
6

Qualcuno sa come aggiungere più domini a Django. Ho provato a seguire le guide qui Multiple Sites under single Django project senza fortuna.Siti multipli in Django

La mia configurazione è simile al seguente

Impostazioni

/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> 

Quando riavvio apache non vedo errori, ma quando vado al sito vengo inviato al dominio (non django) configurato nel file httpd.conf principale.

Grazie,

risposta

13

Questa risposta fa l'ipotesi che si desidera avere due nomi di dominio ogni esecuzione progetti Django separate, ma ospitati dallo stesso server Apache. Se questo non è il tuo caso, perfeziona la tua domanda!

Per iniziare con avrete bisogno di due VirtualHost voci nella conf apache (chiamiamolo vostri siti domain1.co.uk e 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> 

Sono necessari i 2 file WSGI (sottolineato due nella conf sopra)

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

e avrà un aspetto simile

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

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

sul settings.py assicurarsi che entrambi i file delle impostazioni hanno differenza SITE_ID = 1 o SITE_ID = 2 e che si punta al corretto urls.py

ROOT_URLCONF = 'urls' 

o

ROOT_URLCONF = 'domain1_urls' 

Gran parte di questa domanda è stata provenienti da esperienza personale e questo post blog. Le directory del tuo progetto e i nomi di dominio sembrano un po 'confusi, ho fatto del mio meglio per inserirli nei posti corretti qui, ma dovrai adeguarti per i tuoi scopi.

Ulteriori

Se si dispone di due siti in esecuzione dallo stesso server, si dovrà essere molto attenti a mantenere la coerenza nel directory di progetto, le directory dei file statici e file di impostazioni ecc Dalla tua domanda che dici i tuoi file di impostazioni sono /opt/django/project/settings.py e /opt/django/project/domain1_settings.py Ciò è abbastanza confuso in quanto sembra che tu abbia una directory di progetto (/opt/django/project). Consiglio vivamente una separazione più forte; come ho descritto in precedenza, magari impostando i vostri progetti (domain1 e domain2) nella directory

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

con impostazioni corrispondenti file

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

ecc Questo dovrebbe rendere più facile individuare cosa non va dove.

+0

Grazie per la risposta. Ho aggiunto le impostazioni che hai suggerito, ma sto vedendo un errore di 500 tramite apache. Quando si passa attraverso i registri mostra che non è in grado di importare il mio nuovo file di impostazioni. Il nuovo file di impostazioni è all'interno della cartella del progetto maint e ho aggiunto la linea nel mio file WSGI che punta ad esso ----> os.environ [ 'DJANGO_SETTINGS_MODULE'] = 'domain1_settings' Grazie, – felix001

+0

Dopo aver aggiunto il correggi il percorso sys del mio file wgsi e assicurandoti che tutte le mie importazioni di progetti/app fossero costanti, tutto iniziò a funzionare. Molte grazie ... – felix001