domjudge的配置过程网上并不是很多,今天我来写一下我配置domjudge的整个过程
参考博客:
Domjudge配置指南 & 校赛踩坑记录 - 知乎 (zhihu.com)
首先声明,我使用的阿里云的服务器,系统是centos7.9
首先第一点是需要在电脑上配置好docker,我是直接使用docker直接将镜像拉到本地的
docker的安装配置可以在网上找到很多的教程,这里就不记录了,给大家放几个参考吧
Linux服务器部署安装docker以及各种服务配置(一)_linuxdocker安装部署-CSDN博客
Linux 安装配置 Docker-CSDN博客
Docker 教程 | 菜鸟教程 (runoob.com)
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
其余的内容不建议更改,如需更改,请前往参考博客查询具体详情
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页面了
获取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时间需要使用
使用一下命令打开文件
vim /etc/default/grub
如果报错,可以尝试使用sudo vim ......,实在不行求助一下百度,反正我配置时间
修改以下内容
GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory swapaccount=1"
如果最初有 GRUB_CMDLINE_LINUX_DEFAULT 请直接将其复制到初始内容之后
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博客