Executando um aplicativo Raku Cro como um serviço persistente

11

Eu gostaria de executar um aplicativo perl6 / raku Cro como um serviço atrás de um servidor web front-end.

Apenas rodar cro runnão será capaz de reiniciar após segfaults e reinicializações.

Anteriormente, com o perl5, usei o FastCGI - no entanto Cro::HTTP::Server, o Cro::HTTP::Server.new().start()idioma não parece compatível com o while $fcgi.accept() {}exemplo do FastCGI :: Native .

O service.p6gerado por cro stubpossui um SIGINTmanipulador, no entanto, não tenho certeza se isso é suficiente para apontar para ele em um systemctlserviço, ou seja,

[Service]
ExecStart = /path/to/service.p6

Como as pessoas estão hospedando aplicativos Cro atualmente?

fireartist
fonte

Respostas:

12

cro run destina-se a uma ferramenta de desenvolvimento, não a uma implantação, e, portanto, não é uma boa opção para hospedar os serviços.

Todos os serviços Cro de que cuido diretamente são contêineres ( algumas orientações sobre isso aqui ) e, em seguida, executados em um cluster Kubernetes hospedado. O Kubernetes cuida das reinicializações automáticas, lançando novas versões etc. Também estou ciente de docker-composeser usado no lugar do Kubernetes, o que acho que funciona, embora eu acredite que isso também seja considerado principalmente uma ferramenta de desenvolvimento.

A configuração como systemctlserviço também deve funcionar bem, desde que configurada para sempre reiniciar. No entanto, parece que você gostaria de lidarSIGTERM com o desligamento limpo para funcionar em vez de SIGINT(nada de errado em lidar com ambos).

Também coloco um servidor Web front-end na frente do Cro (usando o Apache, embora o nginx também seja uma boa escolha), e também o uso para fazer cache de conteúdo estático (usando content-controlnas minhas rotas para descrever a capacidade de cacho).

Jonathan Worthington
fonte