您的ServerName/ServerAlias指令是错误的。 ServerName应该是主机名。 您可能只需删除ServerAlias。
然后,显然地复制VirtualHost/Listen指令,只需更改端口号和文件系统中脚本的位置。
最后,不要将DocumentRoot设置为Django代码所在的位置,因为如果Apache配置出错,这将更容易意外地将源代码暴露给下载。因此,只需从Django站点的VirtualHost中删除DocumentRoot指令即可。
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>
我还添加了缺失的Directory指令以允许访问静态文件。但是您应该检查路径。
请确保阅读以下内容:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files
以获取更多信息。
更新 1
顺便说一下,由于您在同一个Apache中使用PHP,因此最好使用mod_wsgi守护程序模式,并将每个Django实例推送到自己单独的进程中。这样可以使这些进程成为多线程的,即使主Apache进程由于PHP而被强制成为单线程。最终结果将比在嵌入模式下在每个进程中运行多个Django实例且使用预分配MPM时使用的内存要少得多。您的Django代码只需要是线程安全的。配置除了上述之外,还需要为每个Django VirtualHost添加WSGIDaemonProcess / WSGIProcessGroup,其中守护进程组的名称对于每个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