首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不重启的情况下在Apache中部署PSGI脚本?

如何在不重启的情况下在Apache中部署PSGI脚本?
EN

Stack Overflow用户
提问于 2011-05-25 19:50:40
回答 3查看 2.7K关注 0票数 3

我想部署一个PSGI脚本,运行在Apache2与Plack。Apache配置有:

代码语言:javascript
复制
<Location "/mypath">
  SetHandler perl-script
  PerlResponseHandler Plack::Handler::Apache2
  PerlSetVar psgi_app  /path/to/my/script.psgi
</Location>

当我使用plackup测试脚本时,--reload参数监视.psgi文件上的更新。在生产环境中,出于性能原因,Apache和Plack不检查并重新启动每个更改是很好的,但我如何显式地告诉它们重启Plack::Handler::Apache2和/或PSGI脚本以部署新版本?

它看起来像Plack定期检查一些变化,但我不知道什么时候。此外,它似乎创建了多个实例,所以在/mypath时,我有时会得到不同版本的script.psgi。手动刷新perl响应处理程序会很有帮助,而不必重新启动Apache或等待未知的时间。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-26 04:10:48

简单的回答是你不能,这就是为什么我们建议你使用plackup (和-r)来快速开发,而只将Apache用于部署(生产使用)。

另一种选择是使用一个开发apache进程,并将MaxRequestsPerChild设置为一个非常小的值,这样您就可以在非常短的时间内生成一个新的子进程。我还没有测试过这一点,如果您在同一进程上运行非开发应用程序,那么这样做肯定会影响整个httpd的性能(这本来就不是一个好主意)。

票数 7
EN

Stack Overflow用户

发布于 2011-05-25 20:34:54

Apache2::Reload (未测试)

票数 1
EN

Stack Overflow用户

发布于 2012-05-09 02:44:27

您可以将应用程序移出appache进程,例如

代码语言:javascript
复制
FastCgiExternalServer /virtual/filename/fcgi -socket /path/to/my/socket

用来运行你的程序

代码语言:javascript
复制
plackup -s FCGI --listen /path/to/my/socket --nproc 10 /path/to/my/script.psgi

这样,您可以在不重新启动apache的情况下重新启动应用程序。

如果保存主fcgi进程的pid (--pid $pid_file),就可以轻松地重新启动并加载新代码。

还有一个模块可用于管理(启动、停止、重新启动)所有的fcgi池:https://metacpan.org/pod/FCGI::Engine::Manager::Server::Plackup (未经过测试)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6124010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档