配置Domjudge and Judgehost(未完结)
写在前面
本文参考DOMJudge 部署教程 | Setiuo’s website
部署环境
domjudge/domserver: 9.0.0
domjudge/judgehost: 9.0.0
mariadb: 11.8.3
System: Ubuntu Server 24.04 LTS
前置工作
-
编辑
/etc/default/grub文件 (需要 sudo 权限)1sudo nano /etc/default/grub在
GRUB_CMDLINE_LINUX_DEFAULT项目后面添加以下内容(若没有该项可以自己添加):1GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory swapaccount=1 isolcpus=2 systemd.unified_cgroup_hierarchy=0"重新加载一下
grub配置1sudo update-grub重启系统
1sudo reboot -
安装 docker 和 docker-compose
docker官方文档:
我们使用的:
-
设置 Docker 的存储库
1 2 3 4 5 6 7 8 9 10 11 12 13# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update -
安装 Docker 软件包
1sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
验证 Docker
1sudo docker run hello-world如果拉不下来镜像,可以在
/etc/docker/daemon.json文件添加以下内容(默认可能没有/etc/docker/daemon.json文件,请自行创建)不保证可用,Docker的镜像在国内貌似没有一个正式的组织做。
1 2 3 4 5 6 7{ "registry-mirrors": [ "docker.1panel.live", "docker.m.daocloud.io", "docker.1ms.run", ] }修改完成后执行命令重启docker:
1sudo systemctl daemon-reload && systemctl restart docker -
把非
root用户添加到docker的权限列表中1sudo usermod -aG docker <username>执行完后重新启动
ssh或者终端。运行
1docker ps正常输出即表示添加成功。
-
-
检查版本来验证 Docker Compose 是否已正确安装
1docker compose versionExpected Outuput:
1Docker Compose version vN.N.N接下来,我们在
/etc/docker-compose/目录下设置 docker-compose 项目,使得之后在此文件夹里的 docker-compose 项目都可以通过系统服务来进行管理。1sudo mkdir -p /etc/docker-compose接下来设置一下系统服务,我们创建
/etc/systemd/system/docker-compose@.service文件1sudo nano /etc/systemd/system/docker-compose@.service添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13[Unit] Description=%i service deployed with docker compose Requires=docker.service After=docker.service [Service] user=root Type=simple WorkingDirectory=/etc/docker-compose/%i ExecStart=/usr/local/bin/docker compose up --remove-orphans [Install] WantedBy=multi-user.target重新载入系统服务配置文件
1sudo systemctl daemon-reload
配置Dpanel (Lite Version)(可选)
切换到home/dpanel/compose/Dpanel目录下,新建docker-compose.yaml文件,填入
|
|
执行
|
|
等待构建成功后访问127.0.0.1:8807即可看到Dpanel面板。
配置Mariadb Domjudge Judgehost(Docker)
Mariadb Domjudge
切换到home/dpanel/compose/Domjudge目录下,新建database.secret,填入
|
|
这将设置你的Mariadb数据库密码。
新建docker-compose.yaml,填入
|
|
接下来开始初始化 DOMjudge 和数据库
执行
|
|
如果遇到提示
|
|
就执行(也可以通过Dpanel的图形化界面进入容器终端)
|
|
进入容器后运行
|
|
完成后Ctrl+D退出容器,再尝试执行
|
|
正常状态为Healthy。
Judgehost
接下来输入以下指令获取 judgehost 的 API key
|
|
新建judgehost.secret,填入
|
|
将获取到的 API key 替换 judgehost.secret 文件中的 <GET THIS FROM TERMINAL> 内容。
修改 docker-compose.yml 中 judgehost 服务中的 replicas 值,即可指定判题机个数
|
|
然后运行指令启动所有服务
|
|
至此, DOMjudge系统已经部署成功。
管理员账号:admin
密码需要通过如下命令获取:
|
|
在你确定了 DOMjudge 可以正常使用后,我们创建系统服务以设置开机启动
|
|
配置分布式 Judgehost (Docker)(待实践)
如果需要把评测机部署在另外一个Server上,同样需要安装docker。
至于grub的设置,参考前文。
然后切换到一个任意可访问的文件位置(如果不安装Dpanel),新建docker-compose.yaml,填入
|
|
注意:请添加
DOMSERVER_BASEURL环境变量,具体参考以下官方说明:
DOMSERVER_BASEURL(defaults tohttp://domserver/): base URL where the domserver can be found. The judgehost uses this to connect to the API. Do not addapiyourself, as the container will do this!
新建judgehost.secret,填入
|
|
这里方法同上,不再赘述。
运行
|
|
在Domjudge后台看到judgehost即可。