Menjalankan aplikasi Raku Cro sebagai layanan tetap

11

Saya ingin menjalankan aplikasi perl6 / raku Cro sebagai layanan di belakang server web frontend.

Menjalankan saja cro runtidak akan menangani restart setelah segfault & reboot.

Sebelumnya dengan perl5 saya sudah FastCGI digunakan - namun Cro::HTTP::Server's Cro::HTTP::Server.new().start()idiom tidak terlihat kompatibel dengan FastCGI :: asli ini while $fcgi.accept() {}misalnya.

Yang service.p6dihasilkan oleh cro stubmemang memiliki SIGINThandler, namun saya tidak yakin apakah ini cukup untuk menunjukkannya dalam sebuah systemctllayanan, yaitu

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

Bagaimana orang-orang saat ini meng-hosting aplikasi Cro?

petugas pemadam kebakaran
sumber

Jawaban:

12

cro run dimaksudkan sebagai alat pengembangan, bukan penyebaran, dan memang bukan pilihan yang baik untuk hosting layanan.

Semua layanan Cro yang saya tangani secara langsung di kemas ( beberapa panduan tentang itu di sini ) dan kemudian dijalankan pada kluster Kubernet yang di-host. Kubernetes menangani restart otomatis, meluncurkan versi baru, dll. Saya juga sadar docker-composedigunakan di tempat Kubernetes, yang saya kira berfungsi, meskipun saya percaya itu juga dianggap sebagai alat pengembangan utama.

Menyetelnya sebagai systemctllayanan juga akan berfungsi dengan baik, asalkan dikonfigurasi untuk selalu memulai kembali. Namun, tampaknya Anda ingin menanganiSIGTERM agar shutdown bersih berfungsi, bukan SIGINT(tidak ada salahnya menangani keduanya).

Saya juga menempatkan server web frontend di depan Cro (menggunakan Apache, meskipun nginx juga akan menjadi pilihan yang baik), dan juga menggunakannya untuk melakukan caching konten statis juga (menggunakan content-controlrute saya untuk menggambarkan cachability).

Jonathan Worthington
sumber