Cấu hình Supervisor để chạy Laravel Queue trên linux

Có lẽ mọi người cũng không xa lạ gì về Laravel Queue nên mình sẽ không giới thiệu lại nhé. Mọi người có thể lên Laravel doc để đọc nhé!

Như mọi người cũng biết để Queue được hoạt động, ta phải chạy lệnh:

Queue chạy liên tục ko ngừng nghỉ nên nếu chúng ta dùng terminal (hoặc cmd) thì khi tắt terminal/cmd đi thì coi như queue cũng tắt luôn. Và hôm nay mình sẽ giới thiệu mọi người dùng supervisor để hỗ trợ chúng ta làm điều này.

Supervisor là gì?

Supervisor là công cụ giúp quản lý các tiến trình chạy trên Linux. Một số ưu điểm mà Supervisor như:
- Đảm bảo một tiến trình nào đó luôn luôn chạy không ngừng nghỉ. Nếu vì lý do gì mà nó bị tắt, Supervisor sẽ khởi động process đó lại.
- Tự động chạy một tiến trình khi khởi động hệ thống.
- Quản lý nhiều tiến trình dưới dạng một group các tiến trình , có thể được bật/tắt cùng lúc.
- Log được lại quá trình chạy Queue Job.
- Trong trường hợp tiến trình mà supervisor thực thi phát sinh lỗi, có thể cấu hình để Supervisor retry lại một số lần nhất định trước khi chính thức báo fail.

Cài đặt Supervisor

Để cài Supervisor, mọi người chạy lệnh sau trên Linux:

Sau khi cài đặt xong supervisor được tạo thư mục /etc của máy.

Cấu hình cơ bản Supervisor

Mỗi tiến trình do Supervisor giám sát sẽ được cấu hình ở file dạng .conf nằm trong thư mục /etc/supervisor/conf.d
Cấu trúc 1 file config cơ bản như sau:

[program: tên-bất-kì]: tên program. Mọi người có thể đặt tên bất kỳ gì.
directory: đường dẫn tới program cần run.
command: program muốn run.
autostart: quy định tiến trình có tự chạy ngay khi Supervisor được khởi động hay ko. Thường thì Supervisor được chạy khi boot, nên việc quy định tiến trình có tự chạy hay không sẽ phụ thuộc vào boot.
autorestart: quy định tiến trình có tự khởi động ngay sau khi nó bị tắt vì lý do nào đó (đã chạy xong, bị lỗi, bị timeout…) hay ko.
user: user dùng để thực thi tiến trình.
numprocs: số lượng tiến trình mà Supervisor sẽ chạy. Ví dụ để gửi mail, ta để numprocs=4, nghĩa là 4 tiến trình cùng chạy task gửi mail.
redirect_stderr: nếu là true thì stderr sẽ bị redirect để xuất vào file chỉ định ở stdout_logfile
stdout_logfile: đường dẫn tới file log của mình. File này ko cần tạo trước vì supervisor sẽ tự tạo cho mình
Sau khi cấu hình xong ta chạy lệnh sau để restart lại supervisor

Note: Mỗi khi thay đổi các thông tin cấu hình Supervisor, chúng ta cần phải khởi động lại Supervisor.

Thực thi Supervisor để chạy Laravel Queue

Tạo file laravel-worker.conf trong thư mục /etc/supervisor/conf.d và sửa file

Khởi động queue:

Một số command thường dùng

Kết luận

Như vậy với supervisor thì việc quản lý và chạy Laravel Queue sẽ trở nên dễ dàng hơn, chúng ta cũng ít phải bận tâm tới tiến trình của nó đang chạy ra sao, trừ khi có lỗi thì mới phải vào check log.

Tài liệu tham khảo http://supervisord.org/index.html