domjudge配置

前言

domjudge的配置过程网上并不是很多,今天我来写一下我配置domjudge的整个过程

参考博客:

Domjudge配置指南 & 校赛踩坑记录 - 知乎 (zhihu.com)

首先声明,我使用的阿里云的服务器,系统是centos7.9

首先第一点是需要在电脑上配置好docker,我是直接使用docker直接将镜像拉到本地的

docker配置

docker的安装配置可以在网上找到很多的教程,这里就不记录了,给大家放几个参考吧

Linux服务器部署安装docker以及各种服务配置(一)_linuxdocker安装部署-CSDN博客

Linux 安装配置 Docker-CSDN博客

Docker 教程 | 菜鸟教程 (runoob.com)

domjudge配置

数据库配置

 docker run -d -it --name dj-mariadb -e MYSQL_ROOT_PASSWORD=ROOT998244353 -e MYSQL_USER=domjudge -e CONTAINER_TIMEZONE=Asia/Shanghai -e MYSQL_PASSWORD=DOM998244353 -e MYSQL_DATABASE=domjudge -p 13306:3306 mariadb --max-connections=1000 --max-allowed-packet=102400000 --innodb-log-file-size=202400000

其中可变参数:

MYSQL_ROOT_PASSWORD 代表的是mysql数据库的root密码,可以自己改变,这里设定的是:ROOT998244353

MYSQL_PASSWORD代表domjudge用户的密码,也可以改变,这里设置的是:DOM998244353

其余的内容不建议更改,如需更改,请前往参考博客查询具体详情

domjudge server配置

docker run --link dj-mariadb:mariadb -d -it -e MYSQL_HOST=mariadb -e MYSQL_USER=domjudge -e MYSQL_DATABASE=domjudge -e CONTAINER_TIMEZONE=Asia/Shanghai -e MYSQL_PASSWORD=DOM998244353 -e MYSQL_ROOT_PASSWORD=ROOT998244353 -p 80:80 --name domserver domjudge/domserver:7.3.3

这里mysql中的密码一定要跟刚才你自己设置的一致,因为使用link连接到刚才部署好的数据库

根据这个命令设置,是将domserver部署到了80端口上,使用云服务器的同学需要开放相关的权限

这里设定的版本应该与后面judgehost的版本一致,否则容易出现BUG

最后domserver的版本理论是可以改成官网上的任意其他版本,这里没测试,直接使用的7.3.3

到这里之后,就可以使用80端口访问我们的web页面了

管理员密码和API KEY的获取

获取domjudge管理员密码:

docker exec -it domserver cat /opt/domjudge/domserver/etc/initial_admin_password.secret

获取domjudge的API KEY

docker exec -it domserver cat /opt/domjudge/domserver/etc/restapi.secret

获取到的管理员密码是你登陆管理的,账号是admin,密码就是刚才那个密码

获取到的API KEY也要保存好,一会配置judgehost时间需要使用

修改grub

使用一下命令打开文件

vim /etc/default/grub

如果报错,可以尝试使用sudo vim ......,实在不行求助一下百度,反正我配置时间

修改以下内容

GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory swapaccount=1"

如果最初有 GRUB_CMDLINE_LINUX_DEFAULT 请直接将其复制到初始内容之后

judgehost配置

docker run -d -it --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost-0 --link domserver:domserver --hostname judgedaemon-0 -e DAEMON_ID=0 -e JUDGEDAEMON_PASSWORD=wVQMbaMAJzvDxbAK -e CONTAINER_TIMEZONE=Asia/Shanghai domjudge/judgehost:7.3.3

wVQMbaMAJzvDxbAK为我的API KEY,每个人的KEY不同,请更改该项参数后再执行命令。

最后7.3.3是与上面domserver版本信息一致的

如果使用多个judgehost,请确保--hostname不一样,--name各不相同,DAEMON_ID这个代表CPU的核心,理论也要各不相同,

如果你需要配置某台judgehost不运行某类程序(某种语言,某道题的提交等...),请在后台设置restriction(我没有配置过)

结语

我配置到此处已经完成了配置,因为我们几乎不会去使用java,所有没有测试java,只测试了C/C++/python都可以使用,顾没有进行下一步的配置,如果有问题可以查看参考博客

上传题目和开比赛的配置参考博客:domjudge题目配置和开比赛-CSDN博客

你可能感兴趣的:(domjudge)