青岛大学开源OJ平台搭建

源码地址为:https://github.com/QingdaoU/OnlineJudge

可参考的文档为:https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0

一、安装所依赖的环境

sudo apt-get update && sudo apt-get install -y vim python-pip curl git

sudo apt-get install docker-compose

 

二、使用Git克隆项目并完成部署

git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy

docker-compose up -d(root用户使用该命令)或sudo -E docker-compose up -d(非root用户使用该命令)

 

用户名和密码分别是:root和rootroot

浏览器默认打开为:http://IP地址/

例如http://192.168.126.128,显示界面如下:

 

三、常见问题

常见问题一

错误信息:ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/


解决办法:修改docker-compose.yml中的version由3改为2

 

常见问题二:

错误信息:ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

解决办法:
docker-compose up -d(root用户使用)
非root执行会出现这个异常

非root应该执行这条命令
sudo -E docker-compose up -d

忘记用户密码

  • 网页上找回密码
  • 后台用户管理重置
  • 超级管理员等密码也忘记,可以使用下面的命令
docker exec -it oj-backend /bin/sh
python3 manage.py inituser --username USERNAME --password NEW_PASSWORD --action=reset

四、小结

这个OJ平台是国内开源的相对环境很好搭建的,其实参考官方文档也能搭建,本人之所以写,一来为自己,二为分享给其他朋友,让他们尽可能少吃点亏。

代码升级说明

因为新版系统还处于快速升级迭代中,如果您部署或者正在使用OnlineJudge,建议watch一下本项目,这样每次发布新的release的时候就可以收到邮件提醒了。

升级步骤

以下方法仅适用于用官方部署脚本搭建的OJ

如果对部署仓库代码有改动,请自行备份或git stash,然后在 OnlineJudgeDeploy目录运行下列命令即可完成升级:

git pull
docker-compose pull && docker-compose up -d

不过一般来说RedisPostgresql的镜像无需更新,因此可对OJ相关镜像单独pull, 这样可以节约升级时间, 这和上述命令在大多数情况下达到的效果是一样的(除非大版本升级):

git pull
docker pull registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_server
docker pull registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_backend
docker-compose up -d

如果还有任何问题,请提出issue。

比赛模式

2.0版支持两种比赛模式, 可以根据需要进行灵活选择:

  • ACM 模式

    在该模式下,我们严格按照ACM-ICPC的比赛规则来进行,Contest设置项中的real time rank即为是否封榜,封榜后将不再刷新排名。

  • OI 模式

    在OI模式下,选手的提交将根据得分点来计分,多次提交以最后一次提交为准,排名规则为多个题目的总分数。

    为了照顾OI模式五花八门的规则, 也由于OI模式下没有封榜一说,我们为OI模式下的real time rank赋予了特殊的意义:

    real time rank开启时,选手能在提交后立即看到评判结果,并可以查看Rankings, Submissions等信息(类似ACM,只是按得分点计分了), 当real time rank关闭时, 比赛参与者在提交后将不能获取结果,直到比赛结束才可以查看。

需要注意的是超级管理员和该比赛的创建者对比赛拥有所有权, 即不受上述任何约束,可以在任何模式下查看测试样例的结果,也可以在封榜时通过Force Update来强制刷新榜,且刷新后的榜仅对管理者可见

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页