[raku] 영구 서비스로 Raku Cro 앱 실행

프론트 엔드 웹 서버 뒤에서 perl6 / raku Cro 앱을 서비스로 실행하고 싶습니다.

cro runsegfaults 및 재부팅 후 실행 만으로는 재시작을 처리 할 수 ​​없습니다.

이전에는 perl5에서는 FastCGI를 사용했지만 Cro::HTTP::ServerCro::HTTP::Server.new().start()Idioom은 FastCGI :: Native’의 while $fcgi.accept() {}예 와 호환되지 않습니다 .

service.p6의해 생성 된 핸들러가 있지만 서비스 에서이를 가리킬만큼 충분한 지 확실 cro stub하지 않습니다.SIGINTsystemctl

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

사람들이 현재 Cro 앱을 어떻게 호스팅하고 있습니까?



답변

cro run 배포 도구가 아닌 개발 도구로 사용되므로 실제로 서비스를 호스팅하기에 적합하지 않습니다.

내가 직접 처리하는 모든 Cro 서비스는 컨테이너화 되고 (여기에 대한 지침 ) 호스트 된 Kubernetes 클러스터에서 실행됩니다. Kubernetes는 자동 재시작, 새 버전 출시 등을 처리합니다. docker-composeKubernetes 대신 사용되는 것도 알고 있습니다. Kubernetes는 기본적으로 개발 도구라고도 생각합니다.

systemctl항상 다시 시작하도록 구성된 경우 서비스로 설정해도 정상적으로 작동합니다. 그러나, 보인다 당신이 처리하는 것SIGTERM 일 대신에 완전히 종료에 대한 SIGINT(모두 처리와 아무것도 잘못).

또한 Cro 앞에 프론트 엔드 웹 서버를 배치하고 (아파치를 사용하지만 nginx도 훌륭한 선택입니다) 정적 콘텐츠를 캐싱하는데도 사용합니다 ( content-control내 경로에서 캐시 기능 을 설명하는 데 사용).


답변