多个Django项目apache虚拟主机

时间:2016-10-24 15:44:49

标签: django apache mod-wsgi

我是阿帕奇的新手。 所以我试图在一个Ubuntu服务器上运行至少两个不同的django项目,只有一个IP地址。

  • IP:123.456.789
  • Domain 1:Project1的www.example.de
  • 域名2: www.test.de for Proejct2

两个域的DNS都指向相同的IP地址。 我在守护进程模式下使用带有mod_wsgi的apache2。 每个项目在〜/中都有自己的目录。 我还在Project directorys中安装了一个带有python的virtaulenv

问题在于无论我如何配置apache2.conf,两个域都指向Project1。 奇怪的是,当我评论apache2.conf中的所有自定义设置时,他们甚至会这样做。 有人可以解释一下吗?

这是我的apache2.conf

with MyData as
(
  SELECT to_date('2016-10-01','YYYY-MM-DD') MY_DATE, 20 AMOUNT FROM DUAL UNION
  SELECT to_date('2016-08-01','YYYY-MM-DD') MY_DATE, 10 AMOUNT FROM DUAL UNION
  SELECT to_date('2016-07-01','YYYY-MM-DD') MY_DATE, 17 AMOUNT FROM DUAL 
),
MyResult AS (
  SELECT 
    D.*  
  FROM MyData D
  ORDER BY 
    DECODE(
      12*TO_CHAR(MY_DATE,'YYYY') + TO_CHAR(MY_DATE,'MM'),
      12*TO_CHAR(SYSDATE,'YYYY') + TO_CHAR(SYSDATE,'MM'),
      -1,
      12*TO_CHAR(MY_DATE,'YYYY') + TO_CHAR(MY_DATE,'MM')) 
  DESC
)
SELECT * FROM MyResult WHERE RowNum = 1

即使我的配置有问题,为什么我在评论此博客中的所有内容时仍会运行? apache从哪里获取信息?

2 个答案:

答案 0 :(得分:1)

<VirtualHost *:80>

ServerName www.example1.com
ServerAlias example1.com
ServerAdmin admin@example1.com

DocumentRoot "/var/www/example1"

WSGIScriptAlias / /var/www/example1/example1/wsgi.py
WSGIDaemonProcess www.example1.com python-path=/var/www/example1:/usr/local/lib/python2.7/site-packages

<Location />
WSGIProcessGroup www.example1.com
</Location>

<Directory /var/www/example1>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

ErrorLog /var/www/logs/example1.log

</VirtualHost>


<VirtualHost *:80>

ServerName www.example2.com
ServerAlias exolcorporation.com
ServerAdmin admin@example2.com

DocumentRoot "/var/www/example2"

WSGIScriptAlias / /var/www/example2/example2/wsgi.py
WSGIDaemonProcess www.example2.com python-path=/var/www/example2:/usr/local/lib/python2.7/site-packages

<Location />
WSGIProcessGroup www.example2.com
</Location>

<Directory /var/www/example2>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

ErrorLog /var/www/logs/example2.log

</VirtualHost>

尝试替换路径和域名 在WSGIDaemonProcess中使用virtualenv的路径 我没有在这个例子中使用virtualenv 这段代码在aws ubuntu

上工作正常

答案 1 :(得分:1)

有关为什么您的请求可能最终由错误的Django实例处理的主题已在博客文章中详细记录:

该博客文章中描述了可能出现问题的多种情况。

在您的情况下,它听起来像第二个虚拟主机,如果在单独的文件中,可能没有启用,因此Web服务器甚至没有读取文件。结果是,如果使用基于名称的虚拟主机找不到合适的匹配,Apache会将所有请求发送到第一个VirtualHost。

我建议将语法错误添加到第二个虚拟主机(&#39; xxx&#39;在一行上)并查看Apache在尝试启动时是否输出错误。这将确认是否正在读取文件。