2013-05-30 48 views
0

一个比较的mod_perl与FastCGI的时总是列出的好处,是为mod_perl的你必须完全重新加载应用程序,并纷纷停工,但FastCGI的,你可以重新加载应用程序,而不有停机时间。但是,我找不到如何做到这一点的任何示例。是否有可能重新加载正在使用fastcgi运行的Catalyst应用程序而没有任何停机?我遵循这个guide让我的Catalyst应用程序启动并运行。谢谢!与无需停机nginx的和FastCGI重装性催化剂

回答

0

我能够通过结合这个guide的脚本和answer中发现的bash脚本的一部分来创建一个我想要的脚本。如果你把脚本/etc/init.d,然后更改顶部的相应增值经销商,该脚本可以是相当有用的。呼唤:

service script reload 

/etc/init.d/script reload 

可让您在无需停机,而新的代码加载了。该脚本可以找到here。你只需要下载脚本,在顶部改变变量,做

chmod +x script 

并将其移到/etc/init.d,然后你就可以走了! :)

0

是。下运行的FastCGI(不管它是否使用催化剂与否)的应用程序可以简单地exit;和FastCGI将立即生成一个替换过程,条件是FastCGI的具有用于应用程序定义的AppClass和AppClass配置有正-processes计数。

如果没有AppClass或-processes为0,则在下一个请求进入应用程序的URI时将创建替换进程。这可能会导致第一个请求在等待应用程序启动时稍微延迟,但请求仍然会正常处理。

在任何一种情况下,如果应用程序在完成当前请求后被允许为exit,而不是在请求中断时允许应用程序被中断(例如,与kill -9)。

+0

因此,如果我要'kill'在FastCGI下运行的应用程序的每个pid,这些会重新加载对我的应用程序所做的任何更改,然后我可以继续正常使用它? – srchulo

+0

正确。如果应用程序走任何原因(死亡,退出,崩溃...)的FastCGI会自动更换产卵。 –

+0

我看到FastCGI的是重生的过程,每当我杀了他们,但这些过程似乎并没有在新的代码已经重新加载,因为我没有看到,我所做的更改。但是,如果我杀了FastCGI进程然后重新启动它,那么我确实看到了更改。 – srchulo