【发布时间】:2014-07-21 00:50:45
【问题描述】:
我目前正在使用 Plack::Handler::Apache2 调用的 PSGI 应用程序运行 Apache/mod_perl。我们遇到的问题是每个 Apache 进程都使用到 PostgreSQL 数据库的连接,这很昂贵。为了解决这个问题,我们计划将 PSGI 应用程序与 Apache 分开运行,并让所有 Apache 进程通过 UNIX 域套接字与其通信。在我的情况下,您会推荐什么设置?
我的计划是使用 plackup 运行它:
plackup -s FCGI -E production --nproc 100 --daemonize --listen /tmp/myapp.sock \
/usr/local/bin/myapp.psgi
我询问了 Plack 的作者 Tatsuhiko Miyagawa,是否建议将 plackup -s FCGI 用于生产目的。他提供了以下答案:
"虽然它可以用于生产,但我通常建议使用其他 专用服务器,例如 Starman、Starlet 或 uwsgi。 FCGI 是一个 例外,因为我们没有特定的 FCGI 守护进程,除了 默认的 Plak::Handler。我们计划从 Plack 中分离出 FCGI 核心并将其单独安装。”
现在,直到 FCGI 从 Plack 中分离出来,问题是,在 Apache 之外使用 FastCGI 运行 PSGI 应用程序的最佳方法是什么?
【问题讨论】:
-
我会考虑在 Perl 的 IRC 频道中发布这个问题。它们可能比您想象的更有帮助。 :) 祝你好运。
-
您是否有理由要使用 FCGI 而不是运行单独的 Plack 网络服务器并使用 Apache 的 ProxyPass?
标签: apache perl fastcgi plack psgi