7

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

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 机器上为我的 apache 使用端口 8888,127.0.0.1:8888 适用于代码的第一个版本,但在编辑代码后,apache 在重新启动 apache 时出错。

这就是我的主机文件的样子,我只添加了最后一行。(不太清楚为什么第二行和第三行有 #

# 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

编辑:我正在使用 eclipse 开发我的项目

非常感谢你们的帮助

4

3 回答 3

4

试试下面的配置。您可能还会发现这个问题很有用,并且在 mod wsgi 文档中有一个关于虚拟主机的部分可能对您有所帮助。

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。查看配置文档WSGIPythonPath 只能在上下文服务器配置中而不是虚拟主机中。但是,您可以添加到您的 wsgi 文件本身的路径中,如本答案所示。您也可以尝试使用 python-path 查看 WSGIDaemonProcess,如本问题所示。

于 2012-11-28T15:38:51.640 回答
4

确保您阅读:

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

如果您仍然有任何问题,这是您在 Apache 配置中可能遇到的任何问题的补充。由于尽管您通过提供任何错误消息而对错误的确切含义含糊不清,但很难猜测您遇到的问题是什么。

于 2012-11-28T22:19:53.953 回答
0

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

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

于 2014-04-11T08:22:29.937 回答