Konfigurasi Supervisor Untuk Queue Laravel Di Linux
Halo semuanya!
Jadi, Setelah membenturkan kepala saya di beberapa artikel, posting, dan banyak utas stack overflow, saya akhirnya berhasil mengatur "SUPERVISOR" untuk pemrosesan antrian laravel dan di sini saya menulis posting ini yang mungkin bisa membantu seseorang.
Pada awalnya, dokumentasi resmi muncul sebagai panduan yang rapi tetapi, bagi saya itu sedikit lebih kabur, karena saya ingin segera menyiapkannya untuk situs saya. Jadi, lebih lanjut tanpa menambahkan apa pun dari cerita saya, izinkan saya membagikan langkah-langkah yang berhasil untuk saya.
Bagi yang belum tahu apa itu “supervisor”, berikut dokumentasi resminya:
Supervisor adalah sistem klien/server yang memungkinkan penggunanya untuk mengontrol sejumlah proses pada sistem operasi mirip UNIX.
(Catatan: Pastikan sebelum Anda melangkah lebih jauh, Anda memiliki izin pemasangan yang diperlukan)
Instalasi:
Instalasi supervisor sangat sederhana seperti menarik paket dari repositori! Tergantung pada manajer paket yang diinstal pada sistem Anda atau kebutuhan Anda, Anda dapat menggunakan salah satu dari perintah berikut untuk menginstal supervisor.
$ pip install supervisor
atau
$ yum install supervisor
atau
$ apt-get install supervisor
atau
$ easy_install supervisor
Jika berhasil diinstal, setelah instalasi supervisor akan mulai berjalan secara otomatis. Untuk memeriksa apakah supervisor sedang menjalankan perintah berikut.
$ ps -aux | grep "supervisor"
Konfigurasi:
Setelah diinstal, mengonfigurasi supervisor sebenarnya cukup mudah. Yang perlu kita lakukan hanyalah memperbarui file konfigurasinya. Supervisor dilengkapi dengan file konfigurasi sampel yang dapat kita gunakan secara langsung.
Jalankan perintah berikut untuk menyalin contoh file konfigurasi ke direktori /etc.
$ echo_supervisord_conf > /etc/supervisord.conf
Sekarang, mari buat file konfigurasi khusus untuk mengelola pemrosesan antrian kita. (meskipun kami dapat langsung memodifikasi file konfigurasi yang ada tetapi, saya ingin menjaga semuanya tetap bersih)
Dokumentasi resmi Laravel tentang pekerja antrian memiliki contoh file konfigurasi dasar yang bagus & bersih dan kami dapat dengan mudah mengambilnya. Begini tampilannya, setelah sedikit dimodifikasi.
[program:name_of_worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/artisan/binary artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=someuser
numprocs=8
redirect_stderr=true
stdout_logfile=/path/to/log/file
Saya kira, setiap baris dalam cuplikan di atas cukup jelas! tapi tetap saja atribut perintah adalah yang paling kami minati! (bisa berupa proses/perintah lain yang mungkin ingin kita pantau)
Jadi, buat file (dalam kasus saya my-site-supervisorconf.config) di bawah direktori pengguna Anda atau di mana pun memungkinkan dan rekatkan cuplikan di atas ke dalamnya. (Cukup catat jalur tempat Anda menyimpannya!)
Dalam kasus saya, saya menyimpannya di bawah direktori "situs" saya.
/home/my-site/public_html/my-site-supervisorconf.config
Sekarang sampai pada bagian penting, memberitahu supervisor untuk menghormati file konfigurasi yang baru kita buat. Cukup, buka file konfigurasi sampel yang kami salin di bagian sebelumnya di bawah direktori /etc
dengan editor seperti:
$ vim /etc/supervisord.conf
Dan menuju ke bagian bawah file untuk menemukan beberapa baris yang mirip dengan yang di bawah ini.
;[include]
;files=/somepath/*.ini
Selanjutnya, batalkan komentar direktif [include]
dan tambahkan satu baris lagi atau edit baris yang ada yang mengatakan file
tersebut dan tentukan jalur ke file konfigurasi yang baru dibuat. (Aku menyuruhmu untuk mencatatnya). anda akan berakhir dengan sesuatu yang mirip dengan baris di bawah ini:
[include]
files=/home/my-site/public_html/my-site-supervisorconf.config
(Ya.. saya tahu itu, file sampel berisi banyak hal, tetapi abaikan saja untuk saat ini… Namun, jika Anda benar-benar ingin tahu apa yang dilakukan setiap baris, lihat tautan di bawah ini http://supervisord. org/configuration.html)
Kita hampir selesai!
Artikel Terkait Lainnya :
Memonitor proses kami dengan supervisor :
Sejauh ini kami telah berhasil menginstal & membuat file konfigurasi baru yang menentukan proses (pekerja antrian) yang akan dipantau tetapi sebagai pengawas sudah dimulai dan sedang berjalan, ia tidak mengetahui adanya perubahan.
mari buat supervisor menyadari perubahan kita sekarang!
"Supervisor" hadir dengan alat konfigurasi bernama "supervisorctl" yang pada dasarnya memungkinkan kita untuk mengkonfigurasi, memantau, memulai dan menghentikan proses yang berjalan di bawahnya.
Mari kita gunakan, perintah supervisorctl
untuk menambahkan perubahan konfigurasi baru ke konfigurasi yang sedang dimuat. Untuk melakukannya, jalankan perintah berikut dalam urutan di bawah ini.
(Catatan: meskipun di beberapa utas yang saya temukan, beberapa orang merekomendasikan menjalankan salah satu dari perintah. Tetapi, saya mengikuti urutan berikut dan itu bekerja dengan baik untuk saya)
$ supervisorctl reread
$ supervisorctl update
$ supervisorctl start all
atau
$ supervisorctl start job_worker
(nama pekerja yang ingin Anda jalankan!)
jika Anda mengikuti semuanya dengan benar dan semuanya berjalan dengan baik, Anda akan melihat output yang mirip dengan berikut.
dan akhirnya kita SELESAI!
Itu tidak sulit bukan?
CATATAN:
Jika sesuatu tidak berhasil untuk Anda, coba hentikan dan mulai ulang supervisor lagi dengan
KILL -s SIGTEM $(supervisorctl pid)
untuk memeriksa jumlah proses yang berjalan coba jalankan
$ supervisorctl
dan itu akan menunjukkan sesuatu seperti:
Pembaruan:
Hai Teman-teman, berikut adalah beberapa hal lagi yang dapat membantu Anda untuk men-debug masalah umum.
(Maret 2020):
- Supervisor installed but supervisor.conf file missing?
In few cases when supervisor installed, supervisord.conf file was not published so, here what you can do :
Find the location of supervisord binary with following command and navigate to the directory (here /usr/bin)$ whereis supervisor
Sekarang, cari file bernama echo_supervisord_conf dan arahkan outputnya ke lokasi di mana Anda ingin supervisord.conf disimpan dengan menjalankan file tersebut. Pastikan direktori tujuan ada.
[root@myserver bin]# echo_supervisord_conf > /etc/supervisord/supervisord.conf
2. Program lain menggunakan port HTTP:
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
Masalah ini dapat diatasi hanya dengan menghapus file soket yang terkait dan menyediakan sumber daya untuk file konfigurasi supervisor.
[Catatan: File soket default adalah file /tmp/supervisor.sock.]
[root@myserver supervisor]# rm /tmp/supervisor.sock
dan
[root@myserver supervisor]# supervisord -c supervisord.conf
dan ini harus menyelesaikan masalah.
Saya harap ini akan membantu Anda lebih lanjut. Saya akan terus memperbarui posting bila memungkinkan, silakan terus periksa kembali!