DOMjudge 安裝指南
簡介
DOMjudge 是一個開源的程式設計競賽管理系統,通常用於各類程式設計競賽,例如 ACM ICPC。本篇文章將介紹如何透過自動化 Shell 腳本來在 Ubuntu 系統上安裝 DOMjudge 競賽系統。我們會逐步解釋每個步驟,幫助讀者了解整個過程的每一個細節。
安裝 DOMServer 流程
0. 簡介
此為 DOMjudge 的計分版和登入的主程式所以之後對外開放需要透過此台讓參賽選手登入和操作。
1. 安裝必要套件
首先更新系統,然後安裝包括 MariaDB、Apache、PHP 等在內的必要套件,這些套件是 DOMServer 正常運行所需的。
1 | sudo apt-get update |
2. 下載並安裝 DOMjudge
使用 wget
下載 DOMjudge 壓縮檔案,然後使用
tar
解壓縮。
1 | wget https://www.domjudge.org/releases/domjudge-8.3.1.tar.gz |
3. 設定 MariaDB
利用 mysql_secure_installation
工具來增強 MariaDB
的安全性,包含設定 root 密碼、移除匿名使用者、禁止遠端 root 登入等。
1 | sudo mysql_secure_installation <<EOF |
4. 對 DOMjudge 進行編譯並安裝 DOMServer
1 | ./configure --prefix=/opt/domjudge --with-domjudge-user=root |
5. 設置 DOMjudge 資料庫
使用 DOMjudge 提供的工具生成隨機密碼,並安裝 DOMjudge 資料庫,記得要打上自己的密碼。
1 | sudo /opt/domjudge/domserver/bin/dj_setup_database genpass |
6. 設定 Apache 和 PHP FPM
創建符號連結,將 DOMjudge 的 Apache 和 PHP FPM 設定文件添加到系統設定中,並啟用所需的模組,最後重新加載服務以應用變更。
1 | sudo ln -s /opt/domjudge/domserver/etc/apache.conf /etc/apache2/conf-available/domjudge.conf |
安裝 Judgehost 流程
0. 簡介
Judgehost 節點負責自動化測試參賽者提交的程式碼。
1. 安裝必要軟體包
更新系統並安裝 Judgehost 所需的軟體包,包括 PHP、Java、GHC 等編譯環境。
1 | sudo apt-get update |
2. 下載並安裝 Judgehost
下載 DOMjudge 並安裝 Judgehost,使用 configure
設定安裝目錄,並使用 make
進行編譯安裝。
1 | wget https://www.domjudge.org/releases/domjudge-8.3.1.tar.gz |
4. 設定 Judgehost 環境
添加 domjudge-run
使用者,並將
sudoers-domjudge
設定文件複製到
/etc/sudoers.d
,使 Judgehost 能正確執行需要的命令。
1 | cd /opt/domjudge/judgehost/etc |
5. 創建 chroot 環境
使用 DOMjudge 提供的工具創建隔離的 chroot 環境,以保證 Judgehost 可以安全地執行提交的程式碼。
1 | sudo /opt/domjudge/judgehost/bin/dj_make_chroot |
7. 設定 GRUB
1 | sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*"/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=0"/' /etc/default/grub |
8. 設定 REST API KEY
1 | vim /opt/domjudge/judgehost/etc/restapi.secret" |
9. 創建 judgedaemon 的 systemd 服務
創建一個 systemd
服務,來管理 judgedaemon
的啟動和停止。
1 | cat <<EOL | sudo tee /etc/systemd/system/judgedaemon.service >/dev/null |
8. 安裝完成後重新開機
1 | reboot |
自動化腳本
如果您希望更輕鬆地安裝 DOMjudge 系統,可以參考我在 GitHub 上發布的自動化腳本:DOMjudge 安裝腳本。
此 GitHub 專案包含完整的安裝腳本和相關說明,能幫助您快速完成 DOMjudge 的安裝與設定,減少手動操作並避免潛在錯誤。
結論
透過這兩個 Shell 腳本,我們可以輕鬆地在 Ubuntu 上自動化安裝並設定 DOMjudge 競賽系統及其 Judgehost 節點。這些腳本不僅節省了大量的手動設定時間,還大幅減少了因操作失誤而導致安裝失敗的風險。希望這篇文章對有需要搭建競賽系統的讀者有所幫助!