使用windows在apache上部署多个Django项目

时间:2012-11-28 14:44:12

标签: python django windows apache mod-wsgi

我正在尝试提供域名并在我的apache上运行多个django项目,目前我设法托管一个应用程序并在 127.0.0.1:8888 <上运行它/ strong>设置看起来像这样。

WSGIScriptAlias / C:/Users/ShabeerSheffa/workspace/ApacheDemo/ApacheDemo/wsgi.py
WSGIPythonPath C:/Users/ShabeerSheffa/workspace/ApacheDemo

<Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo>
    <Files wsgi.py>
        Order deny,allow
        Allow from all
    </Files>
</Directory>

我尝试将上面的代码更改为下面的代码,使用域名,以便我可以使用 apachedemo.com 访问它,但却失败了。

NameVirtualHost apachedemo.com   

<VirtualHost apachedemo.com>    
    ServerName apachedemo.com  
    ServerAlias www.apachedemo.com

    WSGIScriptAlias / C:/Users/ShabeerSheffa/workspace/ApacheDemo/ApacheDemo/wsgi.py
    WSGIPythonPath C:/Users/ShabeerSheffa/workspace/ApacheDemo

    DocumentRoot C:/Users/ShabeerSheffa/workspace/ApacheDemo

    <Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>    

</VirtualHost> 

我目前在Windows 7机器上使用端口8888为我的apache,在第一版代码中使用127.0.0.1:8888,但在编辑代码后,apache在重启apache时出错。

这是我的主机文件的样子,我只添加了最后一行。(不太确定为什么在第二行和第三行有<#em>)

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
    127.0.0.1:8888       apachedemo.com       www.apachedemo.com

我想找到两个问题的答案 -

  1. 如何使 apachedemo.com 工作
  2. 如何在同一台服务器上添加其他项目,例如 apachedemo2.com
  3. 编辑:我正在使用eclipse开发我的项目

    非常感谢帮助人员

3 个答案:

答案 0 :(得分:4)

尝试以下配置。您可能还会发现这个question很有用,在mod wsgi文档中,virtualhosts上有一个部分也可能对您有所帮助。

WSGIPythonPath C:/Users/ShabeerSheffa/workspace/ApacheDemo

<VirtualHost apachedemo.com:8888>
    ServerName apachedemo.com
    WSGIScriptAlias / C:/Users/ShabeerSheffa/workspace/ApacheDemo/ApacheDemo/wsgi.py

    <Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>
</VirtualHost>

<VirtualHost apachedemo2.com:8888>
    ServerName apachedemo2.com
    WSGIScriptAlias / C:/Users/ShabeerSheffa/workspace/ApacheDemo/apachedemo2/wsgi.py

    <Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>
</VirtualHost>

<强>更新

下面提到的一条评论是否可以在每个虚拟主机中使用不同的WSGIPythonPath。查看configuration docs WSGIPythonPath只能在上下文服务器配置中,而不能在虚拟主机中。但是,您可以将wsgi文件中的路径添加为shown in this answer。您也可以尝试使用python-path查看WSGIDaemonProcess,如this question所示。

答案 1 :(得分:4)

请务必阅读:

Django 1.4中自动生成的wsgi.py文件以不同的子解释器在同一进程中托管两个Django实例的方式执行。您需要更改wsgi.py文件。

如果您还有任何问题,这是Apache配置可能遇到的任何问题。由于您通过提供任何错误消息而确切地知道错误是什么,因此很难猜出您遇到的问题是什么。

答案 2 :(得分:1)

最好的解决方案是在它自己的Django实例中运行每个Django项目自己的WSGI进程。

WSGIPythonPath /var/www/path/web:/var/www/path/api

WSGIDaemonProcess api_wsgi user=user group=group
WSGIScriptAlias /api /var/www/path/api/wsgi.py
<Location /api>
WSGIProcessGroup api_wsgi
</Location>

WSGIDaemonProcess web_wsgi user=user group=group
WSGIScriptAlias /web /var/www/path/web/wsgi.py
<Location /web>
#SetEnv DJANGO_SETTINGS_MODULE project.settigs
WSGIProcessGroup web_wsgi
</Location>

关于这个主题的帖子: http://www.area0x33.com/blog/?p=155