我想举办它使用Debian的5同一服务器下的几个场所,说我有site1,site2和site3,并承担我的IP是155.55.55.1:
site1,site2
site3
site1: 155.55.55.1:80 , script at /opt/django/site1/ site2: 155.55.55.1:8080, script at /opt/django/site2/ site3: 155.55.55.1:8090, script at /opt/django/site3/
这是我的默认Apache:
<VirtualHost *:80> ServerName / ServerAlias */ DocumentRoot /opt/django/site1/ LogLevel warn 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 </VirtualHost> <VirtualHost *:80> DocumentRoot "/usr/share/phpmyadmin" ServerName /phpmyadmin Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options Indexes FollowSymLinks AllowOverride None Order Deny,Allow Allow from all </Directory> </VirtualHost>
这是我的wsgi配置site1,位于/opt/django/site1/apache/django.wsgi:
site1
/opt/django/site1/apache/django.wsgi:
import os, sys import django.core.handlers.wsgi sys.path.append('/opt/django') sys.path.append('/opt/django/site1') os.environ['DJANGO_SETTINGS_MODULE'] = 'site1.settings' application = django.core.handlers.wsgi.WSGIHandler()
如何添加site2和site3,它们是基于Django的网站,将像一样提供服务site1?
site2
Django
你的ServerName / ServerAlias指令错误。ServerName应该是主机名。你可能应该删除ServerAlias。
然后只需执行明显且重复的VirtualHost / Listen指令,只需更改文件系统中脚本的端口号和位置即可。
最后,不要将DocumentRoot设置为你的Django代码所在的位置,因为如果你填充Apache配置,它很容易意外地暴露你的源代码以供下载。因此,只需从VirtualHost for Django网站删除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指令,以允许访问静态文件。但是,你应该查看路径。