【发布时间】:2016-03-31 22:55:16
【问题描述】:
我有两个 Django 站点。一个是临时站点,另一个是生产站点。我希望在beta.ialexander.io 和生产站点在ialexander.io 上可见。我在 Apache 中使用 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.conf 我有WSGIScriptAlias / /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- 前缀命名000-ialexander-staging.conf 的原因。我想确保 Apache 首先读取那个,因为它的 WSGIScriptAlias 值为 /beta。
为什么会发生这些事情,我怎样才能让生产站点返回 ialexander.io 而暂存站点返回 beta.ialexander.io?
【问题讨论】:
-
我更像是一个 nginx 人,但是当你在做
WSGIScriptAlias / /var/www/Ullmannite-Staging/Ullmannite/wsgi.py和ServerName beta.ialexander.io时,你做得对。当你这样做时发生了什么才是真正的问题。所以这样做并发布之后发生的事情。 -
当我这样做时,
ialexander.io的行为正常,但是当我访问beta.alexander.io时,它会返回一个不同的网站。它返回一个我为学校制作的关于意大利的网站。如果您访问beta.ialexander.io,您可以看到这些.conf文件的行为。这是要点:gist.github.com/Arcrammer/256ad69a5ccc076fe657de505b83fa8a
标签: python django apache mod-wsgi wsgi