Chạy ứng dụng Raku Cro như một dịch vụ bền bỉ


11

Tôi muốn chạy ứng dụng perl6 / raku Cro như một dịch vụ đằng sau máy chủ web frontend.

Chỉ chạy cro runsẽ không xử lý khởi động lại sau khi segfaults & khởi động lại.

Trước đây với Perl5 Tôi đã sử dụng FastCGI - tuy nhiên Cro::HTTP::Server's Cro::HTTP::Server.new().start()thành ngữ không giống tương thích với FastCGI :: Native của while $fcgi.accept() {}ví dụ.

Việc service.p6được tạo bởi cro stubkhông có SIGINTtrình xử lý, tuy nhiên tôi không chắc liệu điều này có đủ để chỉ ra nó trong một systemctldịch vụ hay không, nghĩa là

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

Mọi người hiện đang lưu trữ ứng dụng Cro như thế nào?

Câu trả lời:


12

cro run được dự định như một công cụ phát triển, không phải là một công cụ triển khai và vì vậy thực sự không phải là một lựa chọn tốt để lưu trữ các dịch vụ.

Tất cả các dịch vụ Cro tôi trực tiếp chăm sóc đều được đóng gói ( một số hướng dẫn về điều đó tại đây ) và sau đó chạy trên cụm Kubernetes được lưu trữ. Kubernetes đảm nhiệm việc khởi động lại tự động, tung ra các phiên bản mới, v.v. Tôi cũng nhận thức docker-composeđược việc sử dụng thay cho Kubernetes, mà tôi đoán là hoạt động, mặc dù tôi tin rằng đó cũng được coi là công cụ phát triển.

Thiết lập nó như một systemctldịch vụ cũng sẽ hoạt động tốt, miễn là nó được cấu hình để luôn khởi động lại. Tuy nhiên, có vẻ như bạn muốn xử lýSIGTERM để tắt máy sạch sẽ hoạt động thay vì SIGINT(không có gì sai khi xử lý cả hai).

Tôi cũng đặt một máy chủ web frontend trước Cro (sử dụng Apache, mặc dù nginx cũng là một lựa chọn tốt) và cũng sử dụng nó để thực hiện một số bộ nhớ đệm của nội dung tĩnh (sử dụng content-controltrong các tuyến của tôi để mô tả bộ nhớ cache).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.