update
This commit is contained in:
+65
-12
@@ -1,28 +1,81 @@
|
||||
# Hướng dẫn thiết lập Cron Job cho Laravel trên Ubuntu Server
|
||||
# Hướng dẫn thiết lập Cron Job cho Laravel trên Server (Ubuntu)
|
||||
|
||||
Để hệ thống tự động chạy các tác vụ định kỳ (bao gồm tác vụ tự động reset thẻ vào cuối tháng qua lệnh `cards:reset`), bạn cần cấu hình Cron Job trên hệ điều hành Ubuntu Server trỏ đến bộ lập lịch (Task Scheduler) của Laravel.
|
||||
Để hệ thống tự động thực hiện các tác vụ định kỳ (bao gồm việc tự động reset thẻ vào lúc 23:59 ngày cuối tháng thông qua lệnh `cards:reset`), bạn cần cấu hình Cron Job trên hệ điều hành Ubuntu Server.
|
||||
|
||||
## Các bước thiết lập
|
||||
Dưới đây là hướng dẫn chi tiết cho cả hai trường hợp: **Chạy qua Docker Compose** (mặc định của dự án) và **Chạy trực tiếp trên Host (Không dùng Docker)**.
|
||||
|
||||
1. **Mở cấu hình Crontab:**
|
||||
Truy cập vào terminal của máy chủ Ubuntu dưới quyền của user chạy web (thường là `www-data` hoặc user deploy của bạn) và chạy lệnh:
|
||||
---
|
||||
|
||||
## TRƯỜNG HỢP 1: Chạy qua Docker Compose (Khuyên dùng cho dự án này)
|
||||
|
||||
Vì dự án chạy trong container Docker, Cron Job trên server Ubuntu (máy Host) cần gọi lệnh của Laravel vào bên trong container `app`.
|
||||
|
||||
### Các bước thiết lập:
|
||||
|
||||
1. **Mở file cấu hình Crontab của Ubuntu:**
|
||||
Mở terminal của Ubuntu Server và chạy lệnh:
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
2. **Thêm cấu hình chạy Scheduler:**
|
||||
Thêm dòng dưới đây vào cuối file cấu hình crontab để gọi Laravel scheduler kiểm tra tác vụ mỗi phút:
|
||||
2. **Thêm cấu hình chạy Laravel Scheduler:**
|
||||
Thêm dòng dưới đây vào cuối file crontab:
|
||||
```bash
|
||||
* * * * * cd /đường-dẫn-đến-thư-mục-dự-án && php artisan schedule:run >> /dev/null 2>&1
|
||||
* * * * * cd /đường-dẫn-đến-thư-mục-dự-án && docker compose -f docker/docker-compose.yml exec -T app php artisan schedule:run >> /dev/null 2>&1
|
||||
```
|
||||
*Lưu ý:* Thay thế `/đường-dẫn-đến-thư-mục-dự-án` bằng đường dẫn tuyệt đối đến thư mục chứa dự án trên server (Ví dụ: `/var/www/thankcard-system`).
|
||||
*Lưu ý quan trọng:*
|
||||
- Thay `/đường-dẫn-đến-thư-mục-dự-án` thành đường dẫn tuyệt đối đến dự án trên server (Ví dụ: `/var/www/thankcard-system`).
|
||||
- Tham số **`-T`** (trong `exec -T`) là bắt buộc để tắt chế độ TTY (Tương tác nhập liệu), giúp cron chạy ngầm thành công mà không bị lỗi TTY error.
|
||||
|
||||
3. **Lưu và Thoát:**
|
||||
- Nếu bạn dùng trình soạn thảo `nano`: Nhấn `Ctrl + O` -> nhấn `Enter` để lưu, sau đó bấm `Ctrl + X` để thoát.
|
||||
- Hệ thống sẽ hiển thị thông báo `crontab: installing new crontab`.
|
||||
|
||||
4. **Kiểm tra trạng thái:**
|
||||
Chạy lệnh sau để hiển thị danh sách các cron job đang hoạt động trên user đó:
|
||||
---
|
||||
|
||||
## TRƯỜNG HỢP 2: Chạy trực tiếp trên Ubuntu Host (Nếu deploy dạng truyền thống)
|
||||
|
||||
Nếu bạn cấu hình chạy PHP và Web Server (Nginx/Apache) trực tiếp trên Ubuntu mà không qua Docker.
|
||||
|
||||
### Các bước thiết lập:
|
||||
|
||||
1. **Mở cấu hình Crontab:**
|
||||
Truy cập terminal của Ubuntu Server dưới quyền của user chạy Web (thường là `www-data` hoặc user deploy) và chạy lệnh:
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
2. **Thêm cấu hình chạy Laravel Scheduler:**
|
||||
Thêm dòng dưới đây vào cuối file crontab:
|
||||
```bash
|
||||
* * * * * cd /đường-dẫn-đến-thư-mục-dự-án && php artisan schedule:run >> /dev/null 2>&1
|
||||
```
|
||||
*Lưu ý:* Thay `/đường-dẫn-đến-thư-mục-dự-án` bằng đường dẫn tuyệt đối đến thư mục chứa dự án.
|
||||
|
||||
3. **Lưu và Thoát.**
|
||||
|
||||
---
|
||||
|
||||
## Hướng dẫn kiểm tra trạng thái Cron Job
|
||||
|
||||
1. **Xem danh sách cron job đang hoạt động:**
|
||||
```bash
|
||||
crontab -l
|
||||
```
|
||||
|
||||
2. **Kiểm tra danh sách các tác vụ đã lên lịch trong Laravel:**
|
||||
```bash
|
||||
# Nếu dùng Docker:
|
||||
docker compose -f docker/docker-compose.yml exec -T app php artisan schedule:list
|
||||
|
||||
# Nếu không dùng Docker:
|
||||
php artisan schedule:list
|
||||
```
|
||||
|
||||
3. **Chạy thử scheduler ngay lập tức bằng tay để kiểm thử:**
|
||||
```bash
|
||||
# Nếu dùng Docker:
|
||||
docker compose -f docker/docker-compose.yml exec -T app php artisan schedule:run
|
||||
|
||||
# Nếu không dùng Docker:
|
||||
php artisan schedule:run
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user