Nên thiết lập cronjob dưới quyền của user nào khi setup shedule trong Laravel
Chào mọi người.
E đang tìm hiểu chức năng schedule trong laravel.
Như hướng dẫn thì phải setup 1 cronjob.
* * * * * php /usr/share/nginx/html/laravelProject/artisan schedule:run
Nhưng em k biết là nên setup cronjob trên với quyền user nào.
E có thử setup với quyền root thì sảy ra 1 số vấn đề như:
Sau khoảng N ngày thì file laravel.log của laravel lại bị xóa đi.
Nên nếu lúc đó mà schedule của em chạy, có log ra cái gì đó thì file laravel.log sẽ đc tạo lại dưới quyền root.
File do root sỡ hữu nên ở các tiến trình khác sẽ ko ghi đc log vì bị permission.
Rất mong nhận được hỗ trợ của mọi người ạ.
1 CÂU TRẢ LỜI
bạn nên setup user chạy cronjob bằng user mà own
folder app laravel, 1 cách để kiểm tra đó là, bạn cd
vào folder app laravel, check quyền trong đó:
ls -l
---->>>
drwxr-xr-x 13 maitrungduc staff 416 3 Aug 21:52 app
-rwxr-xr-x 1 maitrungduc staff 1686 3 Aug 21:52 artisan
drwxr-xr-x 4 maitrungduc staff 128 1 Aug 12:43 bootstrap
-rw-r--r-- 1 maitrungduc staff 1601 3 Aug 21:52 composer.json
-rw-r--r-- 1 maitrungduc staff 189309 4 Nov 10:08 composer.lock
......
Bạn thấy in ra user nào thì bạn chạy bằng user đó, như ở trên user của mình là maitrungduc
, sau đó bạn setup cronjob bằng user đó thì sẽ ko gặp lỗi permission, vì khi đó log tạo ra sẽ có quyền đúng bằng maitrungduc
. Và để setup cronjob cho non-root user trên Ubuntu thì bạn làm như sau:
crontab -u maitrungduc -e
@maitrungduc1410
Cảm ơn bạn đã trả lời.
Cho mình hỏi thêm là own của folder mình đang set là nginx.
Thì mình cần phải switch user sang user nginx rồi mới đăng ký cronjob đúng ko nhỉ.
Và có nên set user nginx là own của folder app laravel ko nhỉ.
Cảm ơn bạn rất nhiều.
Bạn không cần switch sang nginx
nhé, bạn dùng user root
và chạy command sau là được:
crontab -u nginx -e
Còn việc có nên chọn user nginx để own folder app laravel hay ko thì hoàn toàn tuỳ vào bạn, ở đây mình thấy dùng user nginx
ko có vấn đề gì cả. Theo mình nghĩ lí do bạn chọn nginx
vì bạn đang deploy với nginx và như vậy thì nginx mới có quyền đọc và ghi. Vậy thì cứ để nginx
đi .
Nếu somehow bạn vẫn muốn chuyển owner của folder app thành user khác (user X) thì bạn nên đảm bảo rằng nginx vẫn có thể đọc/ghi vào folder app của bạn là đc (cho X và
nginx
trong cùng 1 group)