@@ -6,77 +6,55 @@ Tính năng này mặc định bị tắt. Để bật, cấu hình trong `local
66
77## Cấu hình
88
9- ### Bước 1: Cấu hình trong local_settings.py
9+ ### Với Docker (khuyến nghị)
1010
11- ``` python
12- # Bỏ comment để cho phép tải dữ liệu kỳ thi
13- DMOJ_CONTEST_DATA_DOWNLOAD = True
14-
15- # Thư mục cache dữ liệu kỳ thi
16- # Admin chịu trách nhiệm dọn dẹp file cũ
17- DMOJ_CONTEST_DATA_CACHE = ' /home/dmoj-uwsgi/contestdatacache'
18-
19- # Đường dẫn cho tính năng X-Accel-Redirect của nginx
20- # Phải là internal location trỏ đến thư mục trên
21- DMOJ_CONTEST_DATA_INTERNAL = ' /contestdatacache'
11+ Thư mục cache đã được setup sẵn trong Docker volume ` contestdatacache ` .
2212
23- # Tần suất cho phép tải dữ liệu
24- # Áp dụng cho mỗi kỳ thi, không phải mỗi người dùng
25- DMOJ_CONTEST_DATA_DOWNLOAD_RATELIMIT = datetime.timedelta(days = 1 )
26- ```
13+ Thêm vào ` environment/site.env ` :
2714
28- ### Bước 2: Cấu hình Nginx
29-
30- Bỏ comment section sau trong file cấu hình nginx:
31-
32- ``` nginx
33- # Bỏ comment nếu cho phép tải dữ liệu kỳ thi
34- # Location name phải khớp với DMOJ_CONTEST_DATA_INTERNAL
35- location /contestdatacache {
36- internal;
37- root /home/dmoj-uwsgi/;
38-
39- # Đường dẫn không bao gồm /contestdatacache ở cuối
40- # Ví dụ: nếu cache ở /home/dmoj-uwsgi/contestdatacache
41- # thì root là /home/dmoj-uwsgi/
42- }
15+ ``` env
16+ DMOJ_CONTEST_DATA_DOWNLOAD=True
17+ DMOJ_CONTEST_DATA_CACHE=/contestdatacache/
18+ DMOJ_CONTEST_DATA_INTERNAL=/contestdatacache
4319```
4420
45- ### Bước 3: Tạo thư mục cache
21+ Restart:
4622
4723``` sh
48- mkdir -p /home/dmoj-uwsgi/contestdatacache
49- chown dmoj-uwsgi:dmoj-uwsgi /home/dmoj-uwsgi/contestdatacache
50- chmod 755 /home/dmoj-uwsgi/contestdatacache
24+ docker compose restart site celery nginx
5125```
5226
53- ### Bước 4: Khởi động lại dịch vụ
27+ ### Với bare metal
5428
55- ``` sh
56- supervisorctl restart site
57- service nginx reload
29+ Cấu hình trong ` local_settings.py ` :
30+
31+ ``` python
32+ DMOJ_CONTEST_DATA_DOWNLOAD = True
33+ DMOJ_CONTEST_DATA_CACHE = ' /home/dmoj-uwsgi/contestdatacache'
34+ DMOJ_CONTEST_DATA_INTERNAL = ' /contestdatacache'
35+ DMOJ_CONTEST_DATA_DOWNLOAD_RATELIMIT = datetime.timedelta(days = 1 )
5836```
5937
60- ## Dọn dẹp file cũ
38+ Cấu hình nginx và tạo thư mục cache tương tự user_data_download.
6139
62- File dữ liệu không tự động xóa. Mỗi kỳ thi chỉ có tối đa 1 file trên server, nhưng nên dọn dẹp file cũ định kỳ.
40+ ## Dọn dẹp file cũ
6341
64- ### Tạo Cron job
42+ ### Với Docker
6543
6644``` sh
67- crontab -e
45+ # Chạy thủ công
46+ docker compose exec site find /contestdatacache/ -type f -mtime +2 -delete
47+
48+ # Cron job
49+ 0 * /4 * * * docker compose -f /path/to/lcoj-docker/dmoj/docker-compose.yml exec -T site find /contestdatacache/ -type f -mtime +2 -delete
6850```
6951
70- Thêm dòng sau:
52+ ### Với bare metal
7153
7254```
73550 */4 * * * find /home/dmoj-uwsgi/contestdatacache/ -type f -mtime +2 -delete
7456```
7557
76- Cron job này sẽ xóa file cũ hơn 2 ngày, chạy mỗi 4 giờ.
77-
78- ** Lưu ý:** Điều chỉnh thời gian cho phù hợp với ` RATELIMIT ` .
79-
8058## Sử dụng
8159
8260### Quyền truy cập
@@ -166,8 +144,10 @@ GRAPH
166144
167145** File không tạo được:**
168146- Kiểm tra quyền thư mục cache
169- - Kiểm tra Celery đang chạy: ` supervisorctl status celery `
170- - Xem log: ` supervisorctl tail -f celery `
147+ - Kiểm tra Celery Docker: ` docker compose ps celery `
148+ - Xem log Docker: ` docker compose logs -f celery `
149+ - Kiểm tra Celery bare metal: ` supervisorctl status celery `
150+ - Xem log bare metal: ` supervisorctl tail -f celery `
171151
172152** File quá lớn:**
173153- Lọc theo thời gian hoặc bài tập
0 commit comments