Exécution d'une application Raku Cro en tant que service persistant

11

Je voudrais exécuter une application perl6 / raku Cro en tant que service derrière un serveur Web frontal.

Le simple fait de courir cro runne gérera pas le redémarrage après des erreurs de segmentation et des redémarrages.

Auparavant avec perl5, j'ai utilisé FastCGI - cependant Cro::HTTP::Serverl' Cro::HTTP::Server.new().start()idiome de ne semble pas compatible avec l' while $fcgi.accept() {}exemple de FastCGI :: Native .

Le service.p6généré par cro stuba un SIGINTgestionnaire, mais je ne sais pas si cela est suffisant pour le pointer dans un systemctlservice, c'est-à-dire

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

Comment les gens hébergent-ils actuellement les applications Cro?

pompier
la source

Réponses:

12

cro run est conçu comme un outil de développement, pas de déploiement, et n'est donc pas un bon choix pour l'hébergement des services.

Tous les services Cro dont je m'occupe directement sont conteneurisés ( quelques conseils à ce sujet ici ), puis exécutés sur un cluster Kubernetes hébergé. Kubernetes s'occupe des redémarrages automatiques, du déploiement de nouvelles versions, etc. Je suis également au courantdocker-compose d' être utilisé à la place de Kubernetes, que je suppose que des œuvres, mais je crois que est également considéré avant tout comme un outil de développement.

Le configurer en tant que systemctlservice devrait également fonctionner correctement, à condition qu'il soit configuré pour toujours redémarrer. Cependant, il semble que vous souhaitiez gérerSIGTERM pour que l'arrêt propre fonctionne au lieu de SIGINT(rien de mal à gérer les deux).

Je place également un serveur Web frontal devant Cro (en utilisant Apache, bien que nginx soit également un bon choix), et l'utilise également pour faire de la mise en cache du contenu statique également (en utilisant content-controldans mes itinéraires pour décrire la cachabilité).

Jonathan Worthington
la source