AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 500245
Accepted
rorycl
rorycl
Asked: 2013-04-18 07:31:08 +0800 CST2013-04-18 07:31:08 +0800 CST 2013-04-18 07:31:08 +0800 CST

mod_wsgi :在虚拟主机之间共享守护进程

  • 772

我有许多网站,每个网站都使用相同的 5 个 Django 应用程序(具有本地设置),托管在 Apache 上。目前每个站点应用程序都有自己的配置如下:

WSGIDaemonProcess api_example threads=15 maximum-requests=2000
WSGIProcessGroup api_example
WSGIScriptAlias /api /var/www/sites/example/api/site.wsgi

是否可以在虚拟主机之间共享守护进程,但保持本地设置处于活动状态?我的目标是节省内存,并减少为服务请求启动的 Apache 进程的数量(其中一些应用程序是仅偶尔使用的管理/支持控制台)。

- 编辑 -

正如 Graham Dumpleton 在这里阐述的:mod_wsgi daemon mode - WSGIDaemonProcess per virtual host configuration? ,应该有可能“只要 [因为它具有] 相同的服务器名称,就可以访问先前虚拟主机中的守护进程定义。” 请注意,正如 Graham 指出的那样,WSGIApplicationGroup 指令必须从默认值进行调整,可能调整为 %{GLOBAL} 或 %{ENV:variable}。

我不确定如何在虚拟主机中“使用”服务器级声明。是否可以使用具有本地设置的服务器级守护进程?

apache-2.2
  • 1 1 个回答
  • 861 Views

1 个回答

  • Voted
  1. Best Answer
    rorycl
    2013-05-04T09:00:15+08:002013-05-04T09:00:15+08:00

    以上问题的答案,总结为:

    1. 是否可以在虚拟主机之间共享 wsgi 守护进程?
    2. 是否可以将每个虚拟主机中的每个应用程序分开(同时共享守护进程)以便本地设置生效?
    3. 如果 1. 和 2. 是可能的,一个重启/关闭守护进程可以节省内存吗?

    以上所有问题的答案都是肯定的。

    下面是一个示例配置,以 Debian 的 apache2 配置为例:

    ...
    # Include definition of wsgi_daemons above the vhost configs
    Include /etc/apache2/wsgi_daemons/
    
    # Include the virtual host configurations:
    Include /etc/apache2/sites-enabled/
    ...
    

    定义一些 wsgi 守护进程,例如:

    WSGIDaemonProcess wsgi_support threads=5 \
    display-name=wsgi_support inactivity-timeout=600
    

    在您的虚拟主机配置中,按照以下行定义一个块:

    <Location /support/console>
        WSGIProcessGroup wsgi_support
        WSGIApplicationGroup <this_vhost>_support
        # WSGIApplicationGroup %{GLOBAL} does not work!!!
    </Location>
    WSGIScriptAlias /support/ /var/www/<this_vhost>/support/site.wsgi
    

    这是做什么的:

    • 名称为“wsgi_support”的守护进程将在 Apache 启动/重新启动时启动
    • 当<this_vhost>的支持应用程序被访问时,它将附加到 wsgi_support 守护进程,因为这是由 WSGIProcessGroup 指令定义的
    • 为了确保<this_vhosts>该应用程序的副本在其自己的命名空间中运行(例如,如果您正在运行 Django 应用程序,这一点至关重要,因为设置仅在启动时评估)虚拟主机被赋予其自己的 WSGIApplicationGroup。这会导致主守护进程为 的应用生成一个子解释器<this_vhost>。
    • 最后,超时指令使守护进程在规定的不活动时间后重新启动,释放子解释器使用的内存。这非常适合支持控制台等很少使用的应用程序。

    请阅读http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives上的优秀文档。

    最初有两件事让我感到困惑:没有在正确的位置定义 wsgi_daemon(这非常愚蠢),并且没有意识到 WSGIProcessGroup 指令指向 WSGIDaemonProcess 定义。

    • 1

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve