Bước 1: Thiết lập Môi trường & Tải Mã nguồn
Đầu tiên, chúng ta cần tạo một môi trường ảo Python riêng biệt để tránh xung đột thư viện và sau đó tải mã nguồn của VNOJ từ GitHub.
1. Tạo và kích hoạt môi trường ảo:
python3.10 -m venv venv
. venv/bin/activate
2. Tải mã nguồn từ GitHub:
Lệnh `git clone` sẽ tải toàn bộ mã nguồn. Tùy chọn `--recursive` đảm bảo các submodule cần thiết cũng được tải về.
git clone --recursive https://github.com/VNOI-Admin/OJ site
Bước 2: Cấu hình và Cài đặt Tự động
Di chuyển vào thư mục `dmoj`, tải về các tệp cấu hình và chạy kịch bản cài đặt.
1. Di chuyển vào thư mục và tải tệp cấu hình:
Tệp `local_settings.py` dùng để lưu các thông số cấu hình riêng của hệ thống.
cd site/dmoj
wget https://raw.githubusercontent.com/kirrito2105/vnoj/refs/heads/main/local_settings.py
Quan trọng:
Sau khi tải về, bạn cần mở tệp `local_settings.py` để sửa đổi tên người dùng (user) và cấu hình lại email để có thể xác thực khi đăng ký tài khoản mới.
2. Tải và chạy kịch bản cài đặt tự động:
Khi quá trình chuẩn bị đã hoàn tất, khởi chạy kịch bản để cài đặt tự động các gói phụ thuộc. Quá trình này có thể mất vài phút.
wget https://raw.githubusercontent.com/kirrito2105/vnoj/refs/heads/main/auto-install.sh
Bước 3: Cấu hình Máy chấm (Judge)
Máy chấm là thành phần cốt lõi để biên dịch và thực thi các bài nộp. Chúng ta cần cấu hình nó để kết nối với trang web chính.
cd ../problems
wget https://raw.githubusercontent.com/VietThienTran/DeploymentTools/main/VNOJ/sample-config/judge01.yml
dmoj-autoconf
Lệnh `dmoj-autoconf` sẽ tự động tạo các tệp cấu hình cần thiết cho máy chấm dựa trên tệp `.yml` đã tải về.
Bước 4: Khởi chạy Hệ thống
Bây giờ, tất cả các thành phần đã sẵn sàng. Chúng ta sẽ khởi chạy 3 tiến trình chính: bridged (cầu nối), judge (máy chấm), và web server (trang web).
1. Quay lại thư mục `site`:
cd ..
2. Chạy các dịch vụ:
Chúng ta sử dụng `nohup` và `&` để chạy các tiến trình trong nền, giúp chúng tiếp tục hoạt động ngay cả khi bạn đóng cửa sổ terminal.
nohup ./manage.py runbridged &
nohup dmoj -c problems/judge01.yml 127.0.0.1 &
nohup ./manage.py runserver 0.0.0.0:8000 &
Hoàn tất!
Hệ thống của bạn hiện đang chạy. Bạn có thể truy cập vào trang web tại địa chỉ: http://127.0.0.1:8000