如何基于子域运行两个单独的Django站点?

时间:2016-03-31 22:55:17

标签: python django apache mod-wsgi wsgi

我有两个Django网站。一个是暂存站点,另一个是生产。我希望在IF()处显示暂存​​网站,在beta.ialexander.io处显示正在生产的网站。我在Apache上使用ialexander.io。以下是两个mod_wsgi文件:

.conf

ialexander.conf

# WSGI Stuff WSGIPythonPath /var/www/Ullmannite <VirtualHost *:80> # WSGI Stuff WSGIScriptAlias / /var/www/Ullmannite/Ullmannite/wsgi.py # Identification ServerName ialexander.io ServerAdmin Alexander2475914@gmail.com # Public files Alias /assets /var/www/Ullmannite/public # Logs ErrorLog ${APACHE_LOG_DIR}/iAlexander-Error.log CustomLog ${APACHE_LOG_DIR}/iAlexander-Access.log combined # Access DocumentRoot "/var/www/Ullmannite/public" <Directory "/var/www/Ullmannite/Ullmannite"> <Files "wsgi.py"> Require all granted </Files> </Directory> <Directory "/var/www/Ullmannite/public"> Require all granted </Directory> </VirtualHost>

000-ialexander-staging.conf

我几周来一直在努力解决这个问题。最初在# WSGI Stuff WSGIPythonPath /var/www/Ullmannite-Staging <VirtualHost *:80> # WSGI Stuff WSGIScriptAlias /beta /var/www/Ullmannite-Staging/Ullmannite/wsgi.py # Identification ServerName ialexander.io ServerAdmin Alexander2475914@gmail.com # Public files Alias /assets /var/www/Ullmannite-Staging/public # Logs ErrorLog ${APACHE_LOG_DIR}/iAlexander-Staging-Error.log CustomLog ${APACHE_LOG_DIR}/iAlexander-Staging-Access.log combined # Access DocumentRoot "/var/www/Ullmannite-Staging/public" <Directory "/var/www/Ullmannite-Staging/Ullmannite"> <Files "wsgi.py"> Require all granted </Files> </Directory> <Directory "/var/www/Ullmannite-Staging/public"> Require all granted </Directory> </VirtualHost> 我有000-ialexander-staging.confWSGIScriptAlias / /var/www/Ullmannite-Staging/Ullmannite/wsgi.py,但这并没有给我我需要的东西。我不记得发生了什么事,因为这是两周前的事。

目前我已ServerName beta.ialexander.io已停用,因为它会破坏另一个(000-ialexander-staging.conf)。但是,当我启用ialexander.conf并访问000-ialexander-staging.conf时,我会看到生产网站。

我知道有一个小问题,你必须按顺序拥有http://ialexander.io/beta个值的网站。如果我有第一个WSGIScriptAlias在第二个之前设置为WSGIScriptAlias,那么它将首先发送该/。这就是我用000-ialexander-staging.conf前缀命名000-的原因。我想确保Apache首先阅读那个,因为它的WSGIScriptAlias值为/beta

为什么会发生这些事情?如何让生产网站返回ialexander.io但是beta.ialexander.io的暂存状态?

1 个答案:

答案 0 :(得分:0)

这是我在Windows的一个httpd.conf文件中执行的操作:

*注意:

  1. WSGIPythonPath以外的VirtualHost - 如果存在,则两个VirtualHost不能有不同的python-django配置
  2. 分开了两个django项目
  3. 我们要分开的域名是(www.)ialexander.iobeta.ialexander.io
  4. 没有使用virtualenv。 (我不确定这是否会成为问题......)

    # for the public site
    <VirtualHost *:80>
    DocumentRoot "/var/www/Ullmannite/public"
    ServerName ialexander.io 
    ServerAlias www.ialexander.io 
    
    WSGIScriptAlias / /var/www/Ullmannite/Ullmannite/wsgi.py
    # ...other things the same...
    
    </VirtualHost>
    
    # for the staging site
    <VirtualHost *:80>
    DocumentRoot "/var/www/Ullmannite-Staging/public"
    ServerName beta.ialexander.io 
    
    WSGIScriptAlias / /var/www/Ullmannite-Staging/Ullmannite/wsgi.py
    # ...other things the same...
    
    </VirtualHost>