Esecuzione di un'app Raku Cro come servizio persistente


11

Vorrei eseguire un'app perl6 / raku Cro come servizio dietro un server web front-end.

Solo l'esecuzione cro runnon gestirà il riavvio dopo segfaults e riavvii.

Precedentemente con perl5 ho usato FastCGI - tuttavia Cro::HTTP::Serveril Cro::HTTP::Server.new().start()linguaggio non sembra compatibile con l' while $fcgi.accept() {}esempio di FastCGI :: Native .

Il service.p6generato da cro stubha un SIGINTgestore, tuttavia non sono sicuro che questo sia sufficiente per indicarlo in un systemctlservizio, vale a dire

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

In che modo le persone stanno attualmente ospitando app Cro?

Risposte:


12

cro run è inteso come uno strumento di sviluppo, non di distribuzione, e quindi non è in effetti una buona scelta per ospitare i servizi.

Tutti i servizi Cro di cui mi occupo direttamente sono containerizzati ( alcune indicazioni su questo qui ) e quindi eseguiti su un cluster Kubernetes ospitato. Kubernetes si occupa dei riavvii automatici, del lancio di nuove versioni, ecc. Sono anche consapevole di docker-composeessere usato al posto di Kubernetes, che suppongo funzioni, anche se credo che sia anche considerato principalmente uno strumento di sviluppo.

Anche l'impostazione come systemctlservizio dovrebbe funzionare correttamente, a condizione che sia configurato per riavviarsi sempre. Tuttavia, sembra che tu voglia gestireSIGTERM l'arresto pulito per funzionare invece di SIGINT(niente di sbagliato nel gestire entrambi).

Metto anche un server web frontend davanti a Cro (usando Apache, anche se nginx sarebbe una buona scelta), e lo uso anche per fare un po 'di cache di contenuto statico (usando content-controlnei miei percorsi per descrivere la cachability).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.