【问题标题】:Deploying Multiple Django projects on apache using windows使用 windows 在 apache 上部署多个 Django 项目
【发布时间】:2012-11-16 11:03:20
【问题描述】:

我正在尝试提供一个域名并在我的 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 开发我的项目

非常感谢大家的帮助

【问题讨论】:

    标签: python django windows apache mod-wsgi


    【解决方案1】:

    试试下面的配置。您可能还会发现这个 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>
    

    更新

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

    【讨论】:

    • 我假设我必须更改为 因为我的 apache 使用该端口,它仍然无法工作:| , "糟糕!谷歌浏览器找不到 apachedemo.com"
    • 是的,你是对的,应该改成8888。我不知道为什么它不起作用。
    • 我让你的代码工作了 :),只是想知道我是否可以有两个不同的 WSGIPythonPath,因为我有两个项目正在运行..
    • @shabeer90 检查更新后的答案以获得 WSGIPythonPath 问题的解决方案。
    • 我试过 WSGIPythonPath "C:/Users/ShabeerSheffa/workspace/ApacheDemo;C:/Users/ShabeerSheffa/workspace/ApacheDemo2" ,但它只加载 apachedemo.com 而不是 apachedemo2.com,甚至试过像您在另一篇文章中给出的答案中显示的那样添加路径,仍然不起作用
    【解决方案2】:

    确保您阅读:

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

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

    【讨论】:

      【解决方案3】:

      最好的解决方案是在它自己的 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

      【讨论】:

      • 问题是关于 Windows 的。 WSGIDaemonProcess 在 Windows 上不受支持
      • WSGIDaemonProcess 在 Windows 上不可用。主题是关于我们将如何将 WSGIPythonPath 用于虚拟主机的多个实例
      猜你喜欢
      • 2012-12-19
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 2021-01-15
      相关资源
      最近更新 更多