运行 作为持久服务的 Raku Cro 应用程序
Running a Raku Cro app as a persistent service
我想 运行 perl6/raku Cro 应用程序作为前端网络服务器后面的服务。
Just 运行ning cro run
不会在段错误和重启后处理重启。
以前使用 perl5 我使用过 FastCGI - 但是 Cro::HTTP::Server
的 Cro::HTTP::Server.new().start()
习语看起来与 FastCGI::Native 的 while $fcgi.accept() {}
示例不兼容。
cro stub
生成的 service.p6
确实有一个 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
(处理两者都没有错)。
我还在 Cro 前面放置了一个前端 Web 服务器(使用 Apache,尽管 nginx 也是一个不错的选择),并且还使用它来缓存一些静态内容(使用 content-control
在我的路线中描述可缓存性)。
我想 运行 perl6/raku Cro 应用程序作为前端网络服务器后面的服务。
Just 运行ning cro run
不会在段错误和重启后处理重启。
以前使用 perl5 我使用过 FastCGI - 但是 Cro::HTTP::Server
的 Cro::HTTP::Server.new().start()
习语看起来与 FastCGI::Native 的 while $fcgi.accept() {}
示例不兼容。
cro stub
生成的 service.p6
确实有一个 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
(处理两者都没有错)。
我还在 Cro 前面放置了一个前端 Web 服务器(使用 Apache,尽管 nginx 也是一个不错的选择),并且还使用它来缓存一些静态内容(使用 content-control
在我的路线中描述可缓存性)。