12

我想在前端网络服务器后面运行一个 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 应用程序?

4

1 回答 1

12

cro run旨在作为开发工具,而不是部署工具,因此确实不是托管服务的好选择。

我直接处理的所有 Cro 服务都是容器化的(这里有一些指导),然后在托管的 Kubernetes 集群上运行。Kubernetes 负责自动重启、推出新版本等。我也知道docker-compose它被用来代替 Kubernetes,我猜它是可行的,尽管我相信它也被认为主要是一种开发工具。

systemctl只要配置为始终重新启动,将其设置为服务也应该可以正常工作。但是,您似乎想要处理SIGTERM干净的关闭工作而不是SIGINT(处理两者都没有错)。

我还在 Cro 前面放置了一个前端 Web 服务器(使用 Apache,尽管 nginx 也是一个不错的选择),并且还使用它来缓存静态内容(content-control在我的路由中使用来描述可缓存性)。

于 2019-11-12T23:24:33.147 回答