我想在前端Web服务器后面运行perl6 / raku Cro应用程序作为服务。

在段错误和重新启动后,仅运行cro run将无法处理重新启动。

以前,在perl5中我使用过FastCGI-但是Cro::HTTP::ServerCro::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描述可缓存性) )。

09-05 07:49