Hướng dẫn cài đặt và chạy cron Supervisor trong Docker

Anh em nào làm về php, cần chạy crontab ngay trên docker của mình, nếu sử dụng default mặc định của docker, nhiều khi không chạy. vậy phải làm sao

Nay giới thiệu anh em gói http://supervisord.org/ để cron.

Như giới thiệu, anh em vào trang chủ ở trên, hướng dẫn cài đặt như sau:

Bước 1:

Gõ : pip install supervisor

Điều kiện là bạn phải cài python trước rồi. Nếu gõ python –version pip –version mà không thấy thì bạn nhớ cài python và pip nhé.

Bước 2:

gõ:echo_supervisord_conf > /etc/supervisord.conf

Trong đó /etc/supervisord.conf chính là đường dẫn bạn lưu file .conf sau này.

Ok, Bây giờ mở file /etc/supervisord.conf lên vào thêm vào cuối file như sau:

[program:Linkuptime]
command=/bin/bash -c “APPLICATION_ENVIRONMENT=local php app/protected/yiic Linkuptime >> /tmp/cronjob/linkuptimechecktype1.log && sleep 20”
autorestart=true

stderr_logfile=/var/log/cronjob/Linkuptimechecktype1.err.log
stdout_logfile=/var/log/cronjob/Linkuptimechecktype1.out.log

stderr_logfile=/var/log/cronjob/Linkuptimechecktype1.err.log
stdout_logfile=/var/log/cronjob/Linkuptimechecktype1.out.log

Ở đây bạn chỉ tới đường dẫn php (gõ which php trong terminal) rồi điền đường dẫn vào chỗ php ở phía trên

Ở trên mình cho 20 giây chạy 1 lần. Function mà mình chạy là Linkuptime

Mình lưu file log vào đường dẫn /tmp/cronjob/linkuptimechecktype1.log

 

Lưu xong, sau đó gõ các câu lệnh sau:

supervisord -c /etc/supervisord.conf

Nếu gõ vậy mà chưa chạy thì gõ :

supervisorctl stop all
ps uax | grep supervisord
kill -9 1909

trong đó 1909 là port mà supervisord đang chạy.

Lưu ý: không được sử dụng quyền sudo khi cron (tức là ko được thêm sudo vào trước các câu lệnh lúc nãy).

;command=/bin/bash -c “APPLICATION_ENVIRONMENT=local php app/protected/yiic Linkuptime check –type=2 >> /tmp/ronjob/linkuptimechecktype1.log && sleep 20”
;command=/bin/bash -c “APPLICATION_ENVIRONMENT=local php app/protected/yiic Linkuptime notify –type=1 >> /tmp/cronjob/linkuptimechecktype1.log && sleep 20”
command=/bin/bash -c “APPLICATION_ENVIRONMENT=local php app/protected/yiic Linkuptime notify –type=2 >> /tmp/cronjob/linkuptimechecktype1.log && sleep 20”

Continue to update….

Lưu ý:

Nếu khi start mà bị lỗi này:unix:///tmp/supervisor.sock refused connection

thì bạn làm như sau:

supervisord -c /etc/supervisor/supervisord.conf
supervisorctl -c /etc/supervisor/supervisord.conf

gõ hai dòng này vào server, Nhưng lưu ý:/etc/supervisor/supervisord.conf chính là đường dẫn chứa file supervisord.conf mà lúc nãy bạn tạo ấy, thay lại bằng đường dẫn của bạn.

Ok, sau đó start lại bằng lệnh:

supervisorctl start all

Ok, Chúc bạn thành công.

Nguồn:stackoverflow.com/questions/18859063/supervisor-socket-error-issue