Uruchamianie aplikacji Raku Cro jako usługi trwałej

11

Chciałbym uruchomić aplikację perl6 / raku Cro jako usługę za serwerem frontendowym.

Samo uruchamianie cro runnie obsłuży restartowania po segfaultach i restartach.

Wcześniej z perl5 Użyłem FastCGI - jednak Cro::HTTP::Serverjest Cro::HTTP::Server.new().start()idiom nie wygląda kompatybilny z FastCGI :: rodzimych za while $fcgi.accept() {}przykład.

service.p6Generowane przez cro stubma SIGINTobsługi, jednak jestem pewien, czy jest to wystarczające do punktu do niego w systemctlsłużbie, tj

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

Jak ludzie obecnie hostują aplikacje Cro?

strażak
źródło

Odpowiedzi:

12

cro run jest przeznaczone jako narzędzie programistyczne, a nie narzędzie do wdrażania, a zatem nie jest dobrym wyborem do hostowania usług.

Wszystkie usługi Cro, którymi bezpośrednio się zajmuję, są konteneryzowane ( kilka wskazówek tutaj na ten temat ), a następnie uruchamiane na hostowanym klastrze Kubernetes. Kubernetes zajmuje się automatycznymi restartami, wdrażaniem nowych wersji itp. Mam również świadomość, że jestem docker-composeużywany zamiast Kubernetes, co, jak sądzę, działa, chociaż uważam, że jest to również przede wszystkim narzędzie programistyczne.

Ustawienie go jako systemctlusługi również powinno działać poprawnie, pod warunkiem, że jest skonfigurowane tak, aby zawsze się restartowało. Wygląda jednak na to, że zamiast tego chciałbyś zająćSIGTERM się czystym zamknięciem SIGINT(nic złego w obsłudze obu).

Umieszczam również frontendowy serwer WWW przed Cro (używając Apache, chociaż nginx też byłby dobrym wyborem), a także używam tego do buforowania zawartości statycznej (używając content-controlw moich trasach do opisania buforowalności).

Jonathan Worthington
źródło