Запуск приложения Raku Cro в качестве постоянной службы

11

Я хотел бы запустить приложение perl6 / raku Cro в качестве службы для внешнего веб-сервера.

Просто запуск cro runне будет обрабатывать перезапуск после segfaults & rebots.

Ранее с perl5 я использовал FastCGI - однако Cro::HTTP::Server«s Cro::HTTP::Server.new().start()идиома не выглядит совместимым с FastCGI :: туземца while $fcgi.accept() {}. Например ,

У service.p6сгенерированного cro stubдействительно есть SIGINTобработчик, однако я не уверен, достаточно ли этого, чтобы указать на него в systemctlсервисе, т.е.

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

Как люди в настоящее время размещают приложения Cro?

fireartist
источник

Ответы:

12

cro run предназначен для разработки, а не для развертывания, и поэтому он не является хорошим выбором для размещения сервисов.

Все службы Cro, о которых я непосредственно позабочусь, упакованы в контейнеры ( некоторые рекомендации по этому поводу здесь ) и затем работают в размещенном кластере Kubernetes. Kubernetes позаботится об автоматическом перезапуске, развертывании новых версий и т. Д. Я также знаю, docker-composeчто его используют вместо Kubernetes, что, я думаю, работает, хотя я считаю, что это также рассматривается в первую очередь как инструмент разработки.

Настройка его в качестве systemctlслужбы также должна работать нормально при условии, что она настроена на постоянный перезапуск. Тем не менее, кажется, что вы хотите обработатьSIGTERM чистое отключение, чтобы работать вместо SIGINT(ничего плохого в обработке обоих).

Я также размещаю веб-сервер внешнего интерфейса перед Cro (используя Apache, хотя nginx тоже content-controlподойдет) , а также использую это для некоторого кэширования статического содержимого (используя мои маршруты для описания кэшируемости).

Джонатан Уортингтон
источник