【问题标题】:Serving 2 django sites with the same code使用相同的代码为 2 个 django 站点提供服务
【发布时间】:2011-05-05 13:47:37
【问题描述】:

我正在使用 apache 配置为 django 站点提供 apache 和 wsgi,如下所示:

  Alias /media/ /var/www/media/
  Alias /files/ /var/www/files/
  WSGIDaemonProcess fc processes=5 threads=5 display-name=%{GLOBAL}
  WSGIProcessGroup fc
  WSGIScriptAlias / /home/path/to/django.wsgi

应用程序在主机的根目录中提供。我现在想更改它,以便我可以在 http://host/app1 和另一个具有不同 django 设置的 http://host/app2 提供它

如何更改配置以执行此操作?

谢谢

【问题讨论】:

    标签: django apache wsgi


    【解决方案1】:

    每个项目都需要一组WSGI* 指令。 WSGIScriptAlias 的第二个参数告诉 Apache 项目在树中的位置; WSGI 在 URL 传递给 Django 的 URL 解析器之前删除了这个前缀。

    例如:

    WSGIDaemonProcess app1 threads=15
    WSGIScriptAlias /app1 /var/www/django_project1/django.wsgi
    <Location /app1>
    WSGIProcessGroup app1
    </Location>
    
    WSGIDaemonProcess app2 threads=15
    WSGIScriptAlias /app2 /var/www/django_project2/django.wsgi
    <Location /app2>
    WSGIProcessGroup app2
    </Location>
    

    我没有尝试优化这个;可能有更好的方法。但这应该会让你跑起来。

    【讨论】:

    • 这里的原始示例在很多方面都是错误的。使用的 WSGISocketPrefix 是错误的,因为应该只出现一次,并且只在某些情况下使用,而不是总是使用。将用户/组设置为“apache”是多余的,因为这是默认设置,并且“apache”作为用户在许多系统上可能无效。 WSGIProcessGroup 必须由 Location 上下文限定,因此仅适用于一个应用程序。
    • 感谢您的修复。我正在调整我拥有的工作单站点设置,该设置本身尚未优化;例如,用户和组是这样设置的,因为我不知道 Apache 安装(我无法控制)是否为其用户使用了“apache”或“nobody”。设置套接字前缀是因为默认值不是系统管理员想要的。
    【解决方案2】:

    您可以尝试使用第二个 settings.py 创建其他文件夹,并创建指向您的应用、语言环境、静态、模板、urls.py 等的符号链接。

    我有多个项目使用相同的应用程序,所以我将它们放在我添加到 python 路径的独立文件夹中。我也为两个站点使用相同的数据库,但我有不同的 SITE_ID,因此我可以指定我想要拥有我的内容的哪个站点。这样我就可以拥有完全不同的网站,使用不同的模板、样式和具有相同内容的图像。如果两个站点上的 JS 脚本相同,我会创建一个符号链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2019-06-10
      • 2014-07-01
      • 2012-11-20
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多