Запуск програми Raku Cro як постійний сервіс


11

Я хотів би запустити додаток perl6 / raku Cro як службу за веб-сервером інтерфейсу.

Просто запущений cro runне оброблятиме перезавантаження після segfaults та перезавантажень.

Раніше з 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?

Відповіді:


12

cro run призначений як інструмент розробки, а не розгортання, тому справді не є вдалим вибором для розміщення служб.

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.