Votre ServerName/ServerAlias directives sont mauvais. ServerName doit être le nom d'hôte. Vous devriez probablement juste de supprimer la directive ServerAlias.
Ensuite, il suffit de faire l'évident et de dupliquer les VirtualHost/Écouter les directives, en changeant simplement le numéro de port et les emplacements des scripts dans le système de fichiers.
Enfin, ne réglez pas le DocumentRoot d'être là où votre Django code est comme il est plus facile d'exposer accidentellement votre code source à télécharger si vous avez des trucs de configuration d'Apache. Donc, il suffit de retirer directive DocumentRoot de VirtualHost pour Django sites.
Listen 80
<VirtualHost *:80>
ServerName www.example.com
WSGIScriptAlias / /opt/django/site1/apache/django.wsgi
Alias /media /opt/django/site1/media/statics
Alias /admin_media /home/myuser/Django-1.1/django/contrib/admin/media
<Directory opt/django/site1/apache>
Order allow,deny
Allow from all
</Directory>
<Directory /home/myuser/Django-1.1/django/contrib/admin/media>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
ServerName www.example.com
WSGIScriptAlias / /opt/django/site2/apache/django.wsgi
Alias /media /opt/django/site2/media/statics
Alias /admin_media /home/myuser/Django-1.1/django/contrib/admin/media
<Directory opt/django/site2/apache>
Order allow,deny
Allow from all
</Directory>
<Directory /home/myuser/Django-1.1/django/contrib/admin/media>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Listen 8090
<VirtualHost *:8090>
ServerName www.example.com
WSGIScriptAlias / /opt/django/site3/apache/django.wsgi
Alias /media /opt/django/site3/media/statics
Alias /admin_media /home/myuser/Django-1.1/django/contrib/admin/media
<Directory opt/django/site3/apache>
Order allow,deny
Allow from all
</Directory>
<Directory /home/myuser/Django-1.1/django/contrib/admin/media>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
J'ai également ajouter un Répertoire manquant directive pour permettre l'accès à des fichiers statiques. Vous devriez passer en revue les chemins cependant.
Assurez-vous de lire:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files
pour de plus amples informations.
Mise à JOUR 1
BTW, puisque vous utilisez PHP en même Apache, vous seriez beaucoup mieux à l'aide de mod_wsgi mode démon et pousser chaque instance de Django dans son propre processus. Qui permet à ces processus multithread, même si les principaux processus Apache sont forcés d'être mono-thread en raison de PHP. Résultat final sera beaucoup beaucoup moins de mémoire utilisée que si l'exécution de plusieurs Django instances dans chaque processus en vertu de la mode imbriqué avec le MPM prefork. Votre Django code doit être thread-safe. Configuration, en plus de ci-dessus serait d'ajouter WSGIDaemonProcess/WSGIProcessGroup à chaque Django VirtualHost, d'où le nom de démon groupe de processus est différent pour chaque serveur Virtuel.
<VirtualHost *:80>
WSGIDaemonProcess site1 display-name=%{GROUP}
WSGIProcessGroup site1
... existing stuff
</VirtualHost>
<VirtualHost *:8080>
WSGIDaemonProcess site2 display-name=%{GROUP}
WSGIProcessGroup site2
... existing stuff
</VirtualHost>
<VirtualHost *:8090>
WSGIDaemonProcess site3 display-name=%{GROUP}
WSGIProcessGroup site3
... existing stuff
</VirtualHost>
Cela permet de plus facilement redémarrer chaque instance de Django sans redémarrer tout de Apache. Lire:
http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process
http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode