Ответ 1
Директивы ServerName/ServerAlias неверны. Имя_сервера должно быть именем хоста. Вероятно, вы должны просто удалить ServerAlias.
Затем просто сделайте очевидные и повторяющиеся директивы VirtualHost/Listen, просто изменив номер порта и расположение сценариев в файловой системе.
Наконец, не устанавливайте DocumentRoot в качестве кода вашего Django, так как это упрощает случайное раскрытие исходного кода, если вы загружаете конфигурацию Apache. Поэтому просто удалите директиву DocumentRoot с сайта VirtualHost для сайтов Django.
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>
Я также добавляю отсутствующую директиву каталога для доступа к статическим файлам. Однако вы должны просмотреть пути.
Убедитесь, что вы читаете:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files
для получения дополнительной информации.
ОБНОВЛЕНИЕ 1
Кстати, поскольку вы используете PHP в том же Apache, вам будет намного лучше использовать режим демонов mod_wsgi и вытолкнуть каждый экземпляр Django в отдельный процесс. Это позволяет многопроцессорным процессам, хотя основные процессы Apache вынуждены быть однопоточными из-за PHP. Конечный результат будет намного меньше используемой памяти, чем при запуске нескольких экземпляров Django в каждом процессе в встроенном режиме с помощью предпрофессионального MPM. Ваш код Django просто должен быть потокобезопасным. Конфигурация в дополнение к выше была бы добавить WSGIDaemonProcess/WSGIProcessGroup для каждого Django VirtualHost, где имя группы процессов демона отличается для каждого VirtualHost.
<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>
Это также позволяет вам более легко перезапускать каждый экземпляр Django без перезагрузки всего Apache. Читайте:
http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode