【问题标题】:Multiple Django applications using virtualenv on Apache 2 on Ubuntu 11在 Ubuntu 11 上的 Apache 2 上使用 virtualenv 的多个 Django 应用程序
【发布时间】:2012-04-17 00:00:59
【问题描述】:

我已经在 Ubuntu 和 Apache 2 上使用 virtualenv 成功设置了一个 Django 应用程序,使用指向我的 virtualenv 位置的 WSGIPythonHome 指令。现在我需要创建一个单独的 Django 应用程序,它将在同一个 Ubuntu 服务器上的不同端口上的 Apache 上运行。我想知道是否有办法让 Apache 运行多个 WSGIPythonHome 实例?目前 WSGIPythonHome 被设置为一个 virtualenv 根,第二个 Django 应用程序上的导入存在问题......

【问题讨论】:

    标签: django apache virtualenv mod-wsgi


    【解决方案1】:

    我在一年前发现的最好的方法是使用 WSGI 作为守护进程并在 daemon 指令中设置 python 路径。示例如下

    <VirtualHost *:80>
        ServerName yourhost.com
    
        <Directory />
          Order deny,allow
          #Require all granted
        </Directory>
    
        #Alias /static /opt/yourhost/static
        WSGIScriptAlias / /opt/yourhost/wsgi.py
    
        WSGIApplicationGroup %{GLOBAL}
    
        WSGIDaemonProcess yourhost.com python-path=/opt/yourhost:/opt/yourhost/venv/lib/python2.7/site-packages processes=2 threads=15 display-name=%{GROUP}
        WSGIProcessGroup  yourhost.com
    </VirtualHost>
    WSGISocketPrefix /var/run/wsgi
    

    【讨论】:

      【解决方案2】:

      您应该在 Apache 中使用单独的 virtual hosts 来执行此操作。每个都可以监听一个特定的端口,并且可以有自己独立的 WSGI 指令。

      【讨论】:

      • 我确实为每个应用程序设置了虚拟主机。我在虚拟主机配置中的哪个位置添加了 WSGI。什么语法。在发布问题之前,我尝试了关于虚拟主机和 WSGI 的快速谷歌搜索,但没有发现任何帮助
      • import os, sys 导入站点site.addsitedir('/home/deploy/virtualenv/expenses/lib/python2.6/site-packages') sys.path.append('/opt/expenses /current/src') os.environ['DJANGO_SETTINGS_MODULE'] = 'expenses.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
      • 以上是我的 wsgi 指令,我有两个,每个应用程序一个...但我看不到在哪里可以添加 WSGIPythonHome 指令
      • 你为什么要发布你的 wsgi 文件?这与它无关。您可以在每个虚拟主机的 Apache 配置中执行此操作。
      • ServerName www.webikentrading.net WSGIScriptAlias / /opt/expenses/current/src/expenses/django.wsgi Alias /static /opt/expenses/current/src/expenses/ common/static Order allow,deny Allow from all Order allow,deny Allow from all
      最近更新 更多