OnlineJudge

环境准备

  • ubuntu 18.04
  • docker
  • docker-composer

换源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  sudo vim /etc/apt/sources.list

替换内容为

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

安装docker

apt install docker.io
apt install docker-composer

​ 换docker源

sudo vim /etc/docker/daemon.json
#替换为
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://mirror.ccs.tencentyun.com"]
}

安装程序

#下载
git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy#启动
sudo docker-compose up -d

数据备份

  • 备份

在backup文件夹下有个数据备份脚本 直接运行即可

  • 迁移
docker cp db_backup_xxxxxxx.sql oj-postgres:/rootdocker exec -it oj-postgres bashpsql -U onlinejudge postgresdrop database onlinejudge;
\q
psql -f /root/db_backup_xxxxxxx.sql -U onlinejudge postgres

然后备份 /OnlineJudgeDeploy/data/backend public test_case 文件夹

请先恢复数据库再拷贝备份的publictest_case文件夹,否则在判题时会显示编译错误,点击会显示测试用例不存在。

添加判题服务器

满足以下条件

  • Token一致
  • 进行测试用例的多机同步

主机master配置

在最后添加以下内容

  oj-rsync-master:image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_rsynccontainer_name: oj-rsync-mastervolumes:- $PWD/data/backend/test_case:/test_case:ro- $PWD/data/rsync_master:/logenvironment:- RSYNC_MODE=master- RSYNC_USER=ojrsync- RSYNC_PASSWORD=CHANGE_THIS_PASSWORD    ##这里是同步的密码ports:- "0.0.0.0:873:873"

从slave设置

删掉除了judge-server的所有service ,添加以下内容

 oj-rsync-slave:image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_rsynccontainer_name: oj-rsync-slavevolumes:- $PWD/data/backend/test_case:/test_case- $PWD/data/rsync_slave:/logenvironment:- RSYNC_MODE=slave- RSYNC_USER=ojrsync- RSYNC_PASSWORD=CHANGE_THIS_PASSWORD      ###这里是同步的密码- RSYNC_MASTER_ADDR=YOUR_BACKEND_ADDR      ###主服务器的IP地址

同步修改 RSYNC_PASSWORD,并将 RSYNC_MASTER_ADDR 修改为运行了 oj-rsync-master 服务的地址,不需要端口号,如 example.com 或者 192.168.1.10

然后给 JudgeServer 添加

  ports:- "0.0.0.0:80:8080"

的端口配置,同时还需要修改

  • SERVICE_URL 为新的机器的地址
  • BACKEND_URL 的域名为已部署好的主机的地址 (master地址)
  • TOKEN 和已部署好主机 TOKEN 一致。

运行 docker-compose up -d 即可启动一台新的 JudgeServer,tail -f data/rsync_slave/rsync_slave.log 可以看到测试用例同步进度,在已部署好主机的后台可以看到新的 JudgeServer 的心跳状态。

以下是示例配置

master

version: "3"
services:oj-redis:image: redis:4.0-alpinecontainer_name: oj-redisrestart: alwaysvolumes:- ./data/redis:/dataoj-postgres:image: postgres:10-alpinecontainer_name: oj-postgresrestart: alwaysvolumes:- ./data/postgres:/var/lib/postgresql/dataenvironment:- POSTGRES_DB=onlinejudge- POSTGRES_USER=onlinejudge- POSTGRES_PASSWORD=onlinejudgejudge-server:image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_servercontainer_name: judge-serverrestart: alwaysread_only: truecap_drop:- SETPCAP- MKNOD- NET_BIND_SERVICE- SYS_CHROOT- SETFCAP- FSETIDtmpfs:- /tmpvolumes:- ./data/backend/test_case:/test_case:ro- ./data/judge_server/log:/log- ./data/judge_server/run:/judgerenvironment:- SERVICE_URL=http://judge-server:8080- BACKEND_URL=http://oj-backend:8000/api/judge_server_heartbeat/- TOKEN=xxxxxx             ###token密码要统一# - judger_debug=1oj-backend:image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_backendcontainer_name: oj-backendrestart: alwaysdepends_on:- oj-redis- oj-postgres- judge-servervolumes:- ./data/backend:/dataenvironment:- POSTGRES_DB=onlinejudge- POSTGRES_USER=onlinejudge- POSTGRES_PASSWORD=onlinejudge- JUDGE_SERVER_TOKEN=xxxxxx         ###token密码要统一# - FORCE_HTTPS=1# - STATIC_CDN_HOST=cdn.oj.comports:- "0.0.0.0:80:8000"- "0.0.0.0:443:1443"#master-serveroj-rsync-master:image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_rsynccontainer_name: oj-rsync-mastervolumes:- $PWD/data/backend/test_case:/test_case:ro- $PWD/data/rsync_master:/logenvironment:- RSYNC_MODE=master- RSYNC_USER=ojrsync- RSYNC_PASSWORD=xxxxxx    ##这里是同步的密码ports:- "0.0.0.0:873:873"

slave部署

version: "3"
services:judge-server:image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/judge_servercontainer_name: judge-serverrestart: alwaysread_only: truecap_drop:- SETPCAP- MKNOD- NET_BIND_SERVICE- SYS_CHROOT- SETFCAP- FSETIDtmpfs:- /tmpvolumes:- ./data/backend/test_case:/test_case:ro- ./data/judge_server/log:/log- ./data/judge_server/run:/judgerenvironment:- SERVICE_URL=http://judge-server:8080- BACKEND_URL=http://192.168.10.105/api/judge_server_heartbeat/  ##改成master的IP地址- TOKEN=xxxxxx      ###token密码要统一# - judger_debug=1ports:- "0.0.0.0:80:8080"oj-rsync-slave:image: registry.cn-hangzhou.aliyuncs.com/onlinejudge/oj_rsynccontainer_name: oj-rsync-slavevolumes:- $PWD/data/backend/test_case:/test_case- $PWD/data/rsync_slave:/logenvironment:- RSYNC_MODE=slave- RSYNC_USER=ojrsync- RSYNC_PASSWORD=xxxxxxx      ###这里是同步的密码- RSYNC_MASTER_ADDR=1.1.1.1   ###master的IP地址

青岛大学OnlineJudge搭建相关推荐

  1. Ubuntu14搭建配置青岛大学OJ系统

    2019独角兽企业重金招聘Python工程师标准>>> 如题,部署青岛大学的开源OJ用于测试,但是根据他们在github提供的文档总是安装失败,我自己找到了合适办法解决了,所以记录一 ...

  2. PHP环境搭配(二):lamp(linux+apache+mysql+php)搭建,附moodle与onlinejudge配置

    linux相比windows更安全,更稳定,而且是开源的,所以常作为服务器系统使用.因此,搭配lamp也是不可或缺的能力哦.不过,对于不熟悉linux系统的童鞋还是有点困难的. 一.准备工作. ubu ...

  3. 青岛大学开源OJ平台搭建

    源码地址为:https://github.com/QingdaoU/OnlineJudge 可参考的文档为:https://github.com/QingdaoU/OnlineJudgeDeploy/ ...

  4. 计算机oj平台搭建应该学什么,青岛大学开源OJ平台搭建

    源码地址为:https://github.com/QingdaoU/OnlineJudge 可参考的文档为:https://github.com/QingdaoU/OnlineJudgeDeploy/ ...

  5. solr搭建分布式搜索引擎

    SolrCloud详解 SolrCloud的基本概念 1.Cluster集群:Cluster是一组Solr节点,逻辑上作为一个单元进行管理,整个集群必须使用同一套schema和SolrConfig. ...

  6. mysql bcmod_nextcloud网盘搭建:Ubuntu18.04+Nginx+Mysql

    背景 前几天在windows系统上搭建了一个seafile网盘服务器,在试用时对它的功能还是比较满意的,有保存文件,共享文件,小组讨论和小组文件共享等功能,基本上可以满足项目式学习的需求.不过在第一节 ...

  7. nextcloud+nginx+mysql_nextcloud网盘搭建:Ubuntu18.04+Nginx+Mysql

    背景 前几天在windows系统上搭建了一个seafile网盘服务器,在试用时对它的功能还是比较满意的,有保存文件,共享文件,小组讨论和小组文件共享等功能,基本上可以满足项目式学习的需求.不过在第一节 ...

  8. 【调剂】青岛大学肿瘤精准医学研究院(青岛肿瘤研究院) 招收2022年调剂研究生...

    公众号[计算机与软件考研]每天都会发布最新的计算机考研调剂信息! 点击公众号界面左下角的调剂信息或者公众号回复"调剂"是计算机/软件等专业的所有调剂信息集合,会一直更新的. 青岛大 ...

  9. 青岛大学超级计算机,湖南商学院成功主办2019年国家社科基金申报经验交流会...

    由湖南商学院及湖南省超级计算机科学学会联合主办的2019年国家社科基金申报经验交流会,于2019年1月4日-6日在湖南商学院二办301多功能报告厅隆重举行.会议由数学与统计学院院长谢小良教授主持.开幕 ...

最新文章

  1. RHEL6.4更改为CentOS6.4的yum源
  2. max函数的平滑(log-sum-exp trick)
  3. hdu 1166 敌兵布阵 树状数组
  4. 2018 ICPC Asia Jakarta Regional Contest J. Future Generation 状压dp
  5. shader weaver_具有自定义汇编程序,Weaver和运行时的可插拔知识
  6. Apache Cassandra 数据存储模型
  7. creator 静态属性_CocosCreator cc.class声明类
  8. Mac废纸篓批量还原的方法
  9. 退出功能—session
  10. 汇编语言定时器转化为c语言,不用定时器和汇编语言,只用C语言实现精确无误的延时...
  11. JDK8下载,安装及环境变量的配置
  12. Linux部署之批量自动安装系统之DHCP篇
  13. LINUX下C语言用access()检查文件可读、可写权限
  14. 【按键精灵】N秒内找图函数封装
  15. PIPIOJ1103: PIPI的数学题I/同余定理
  16. 群晖Docker部署MySQL服务
  17. 震惊!这浏览器居然进过全球 Top10
  18. 准确定位表单中的元素
  19. C#应用案例之打字母游戏
  20. 微服务实施笔记(二)——搭建实验部署环境

热门文章

  1. JBoss启动WebService时报错,需要对JBoss配置文件进行操作
  2. python文本操作—读、写
  3. FPGA是什么?为什么要使用它?
  4. 用牛顿法求正数的开方值
  5. 【线性代数的几何意义】行列式的几何意义
  6. iOS 9人机界面指南(四):UI元素
  7. 卡尔曼滤波系列1——卡尔曼滤波
  8. 信息学奥赛一本通【1038:苹果和虫子】
  9. mysql 获取日期前一天 后一天
  10. 【排序】 挖坑快排图解