Ausführen einer Raku Cro-App als dauerhafter Dienst

11

Ich möchte eine perl6 / raku Cro-App als Dienst hinter einem Frontend-Webserver ausführen.

Nur das Ausführen cro runwird nach Neustufen und Neustarts nicht neu gestartet.

Zuvor habe ich mit perl5 FastCGI verwendet - Cro::HTTP::Serverdie Cro::HTTP::Server.new().start()Redewendung sieht jedoch nicht kompatibel mit dem while $fcgi.accept() {}Beispiel von FastCGI :: Native aus .

Das von service.p6generiert hat cro stubzwar einen SIGINTHandler, ich bin mir jedoch nicht sicher, ob dies ausreicht, um in einem systemctlDienst darauf hinzuweisen , d. H.

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

Wie hosten Leute derzeit Cro-Apps?

Feuerwehrauto
quelle

Antworten:

12

cro run ist als Entwicklungstool gedacht, nicht als Bereitstellungstool, und ist daher in der Tat keine gute Wahl für das Hosting der Dienste.

Alle Cro-Dienste, um die ich mich direkt kümmere, sind containerisiert ( einige Anleitungen dazu hier ) und werden dann auf einem gehosteten Kubernetes-Cluster ausgeführt. Kubernetes kümmert sich um den automatischen Neustart, die Einführung neuer Versionen usw. Ich bin mir auch bewusst, docker-composedass Kubernetes anstelle von Kubernetes verwendet wird, was meiner Meinung nach funktioniert, obwohl ich glaube, dass dies auch in erster Linie als Entwicklungswerkzeug angesehen wird.

Das Einrichten als systemctlDienst sollte ebenfalls einwandfrei funktionieren, vorausgesetzt, er ist so konfiguriert, dass er immer neu gestartet wird. Es scheint jedoch, dass Sie damit umgehen möchten,SIGTERM dass das saubere Herunterfahren stattdessen funktioniert SIGINT(nichts Falsches daran, beide zu handhaben ).

Ich platziere auch einen Frontend-Webserver vor Cro (mit Apache, obwohl Nginx auch eine gute Wahl wäre) und verwende dies auch, um statische Inhalte zwischenzuspeichern (wobei content-controlich in meinen Routen die Cachbarkeit beschreibe).

Jonathan Worthington
quelle