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

Jak*_*kob 3 perl mod-perl plack

我想在Plack中部署一个在Apache2中运行的PSGI脚本.Apache配置有:

<Location "/mypath">
  SetHandler perl-script
  PerlResponseHandler Plack::Handler::Apache2
  PerlSetVar psgi_app  /path/to/my/script.psgi
</Location>
Run Code Online (Sandbox Code Playgroud)

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

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

miy*_*awa 6

简短的回答是你不能.这就是为什么我们建议您使用plackup(使用-r)进行快速开发,并仅将Apache用于部署(生产使用).

另一个选项是有一个开发apache进程,并将MaxRequestsPerChild设置为一个非常小的值,这样你就可以在很短的时间内产生一个新鲜的孩子.我没有对此进行测试,如果运行在同一进程上运行的非开发应用程序(这首先是一个坏主意),这样做肯定会影响整个httpd的性能.