Skip to content

Commit 04e6d4c

Browse files
committed
site install via docker
1 parent dcd28e2 commit 04e6d4c

File tree

13 files changed

+1278
-361
lines changed

13 files changed

+1278
-361
lines changed

docs/_sidebar.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
- Hệ thống Website
22
- [Cài đặt website](site/installation.md)
3+
- [Vận hành hệ thống](site/operations.md)
34
- [Cập nhật website](site/updating.md)
45
- [Management Commands](site/management_commands.md)
56
- [Các định dạng kỳ thi](site/contest_formats.md)

docs/site/contest_data_download.md

Lines changed: 30 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -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
```
7355
0 */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

Comments
 (0)