我想在前端Web服务器后面运行perl6 / raku Cro应用程序作为服务。
在段错误和重新启动后,仅运行cro run
将无法处理重新启动。
以前,在perl5中我使用过FastCGI-但是Cro::HTTP::Server
的Cro::HTTP::Server.new().start()
习惯用法看上去与FastCGI :: Native的while $fcgi.accept() {}
示例不兼容。service.p6
生成的cro stub
确实具有SIGINT
处理程序,但是我不确定这是否足以在systemctl
服务中指向它,即
[Service]
ExecStart = /path/to/service.p6
人们目前如何托管Cro应用程序?
最佳答案
cro run
旨在作为一种开发工具,而不是一种部署工具,因此,对于托管服务而言,确实不是一个好的选择。
我直接处理的所有Cro服务都经过容器化(some guidance on that here),然后在托管的Kubernetes集群上运行。 Kubernetes负责自动重启,推出新版本等。我还知道docker-compose
可以用来代替Kubernetes,我猜它可以起作用,尽管我相信它也被认为主要是一种开发工具。
如果将其配置为始终重新启动,则将其设置为systemctl
服务也应该可以正常工作。但是,似乎可以使用you'd want to handle SIGTERM
而不是SIGINT
进行完全关闭(处理这两者都没错)。
我也确实将一个前端Web服务器放置在Cro的前面(使用Apache,尽管nginx也是一个不错的选择),并且还使用它来对静态内容进行一些缓存(在我的路由中使用content-control
描述可缓存性) )。