帮助在单个子域下设置多个django站点

帮助在单个子域下设置多个django站点,django,apache2,fastcgi,Django,Apache2,Fastcgi,在同一子域下,我需要设置几个独立的站点,每个站点运行django,这些站点是完全独立的。每个站点都应该位于自己的子目录中,并且这些子目录必须有密码保护 例如: subdomain.example.com/site1 subdomain.example.com/site2 我正在使用apache2,并且有一个用于子域的虚拟服务器条目。django使用FastCGI运行 基本上,我不知道如何设置它。我应该在子域的条目中输入什么?通常,对于子域下的单个django站点,我会将WSGIScriptA

在同一子域下,我需要设置几个独立的站点,每个站点运行django,这些站点是完全独立的。每个站点都应该位于自己的子目录中,并且这些子目录必须有密码保护

例如:

subdomain.example.com/site1
subdomain.example.com/site2
我正在使用apache2,并且有一个用于子域的虚拟服务器条目。django使用FastCGI运行

基本上,我不知道如何设置它。我应该在子域的条目中输入什么?通常,对于子域下的单个django站点,我会将WSGIScriptAlias放在指向应该执行的python脚本的位置,但是对于多个站点,我该怎么做呢? 请帮忙 谢谢
konstantin

这些不是独立的虚拟主机

它们是虚拟主机中单独的“位置”(或“目录”)

您将执行以下类似的操作

  ServerName example.com
  DocumentRoot /opt/app/site1/public_html
  Alias /media/site1 /opt/app/site1/media
  DocumentRoot /opt/app/site2/public_html
  Alias /media/site2 /opt/app/site2/media

  RewriteEngine On
  RewriteRule ^/(media/site1.*)$ /$1 [QSA,L,PT]
  RewriteRule ^/(media/site2.*)$ /$1 [QSA,L,PT]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^/site1(.*)$ /mysite1.fcgi/$1 [QSA,L]
  RewriteRule ^/site1(.*)$ /mysite2.fcgi/$1 [QSA,L]
[这是未经测试的,因为我们使用mod_wsgi进行此操作。]

以下是我的配置:

ServerName subdomain.example.com
文档根/路径
WSGIScriptAliasMatch^/([^/]+)/sites/$1/httpd/django.wsgi
命令拒绝,允许
通融

警告。如果可以避免,则不应使用WSGIScriptAliasMatch。不正确使用它将导致脚本名称设置不正确,从而导致应用程序中反向URL的构造错误。所以,如果你沿着这条路走,要小心。
  ServerName example.com
  DocumentRoot /opt/app/site1/public_html
  Alias /media/site1 /opt/app/site1/media
  DocumentRoot /opt/app/site2/public_html
  Alias /media/site2 /opt/app/site2/media

  RewriteEngine On
  RewriteRule ^/(media/site1.*)$ /$1 [QSA,L,PT]
  RewriteRule ^/(media/site2.*)$ /$1 [QSA,L,PT]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^/site1(.*)$ /mysite1.fcgi/$1 [QSA,L]
  RewriteRule ^/site1(.*)$ /mysite2.fcgi/$1 [QSA,L]
<VirtualHost *:12665> ServerName subdomain.example.com DocumentRoot /path WSGIScriptAliasMatch ^/([^/]+) /sites/$1/httpd/django.wsgi <DirectoryMatch ^/sites/[^/]+/httpd> Order deny,allow Allow from all </DirectoryMatch> </VirtualHost>