青岛大学OnlineJudge搭建
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 文件夹
请先恢复数据库再拷贝备份的public和test_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搭建相关推荐
- Ubuntu14搭建配置青岛大学OJ系统
2019独角兽企业重金招聘Python工程师标准>>> 如题,部署青岛大学的开源OJ用于测试,但是根据他们在github提供的文档总是安装失败,我自己找到了合适办法解决了,所以记录一 ...
- PHP环境搭配(二):lamp(linux+apache+mysql+php)搭建,附moodle与onlinejudge配置
linux相比windows更安全,更稳定,而且是开源的,所以常作为服务器系统使用.因此,搭配lamp也是不可或缺的能力哦.不过,对于不熟悉linux系统的童鞋还是有点困难的. 一.准备工作. ubu ...
- 青岛大学开源OJ平台搭建
源码地址为:https://github.com/QingdaoU/OnlineJudge 可参考的文档为:https://github.com/QingdaoU/OnlineJudgeDeploy/ ...
- 计算机oj平台搭建应该学什么,青岛大学开源OJ平台搭建
源码地址为:https://github.com/QingdaoU/OnlineJudge 可参考的文档为:https://github.com/QingdaoU/OnlineJudgeDeploy/ ...
- solr搭建分布式搜索引擎
SolrCloud详解 SolrCloud的基本概念 1.Cluster集群:Cluster是一组Solr节点,逻辑上作为一个单元进行管理,整个集群必须使用同一套schema和SolrConfig. ...
- mysql bcmod_nextcloud网盘搭建:Ubuntu18.04+Nginx+Mysql
背景 前几天在windows系统上搭建了一个seafile网盘服务器,在试用时对它的功能还是比较满意的,有保存文件,共享文件,小组讨论和小组文件共享等功能,基本上可以满足项目式学习的需求.不过在第一节 ...
- nextcloud+nginx+mysql_nextcloud网盘搭建:Ubuntu18.04+Nginx+Mysql
背景 前几天在windows系统上搭建了一个seafile网盘服务器,在试用时对它的功能还是比较满意的,有保存文件,共享文件,小组讨论和小组文件共享等功能,基本上可以满足项目式学习的需求.不过在第一节 ...
- 【调剂】青岛大学肿瘤精准医学研究院(青岛肿瘤研究院) 招收2022年调剂研究生...
公众号[计算机与软件考研]每天都会发布最新的计算机考研调剂信息! 点击公众号界面左下角的调剂信息或者公众号回复"调剂"是计算机/软件等专业的所有调剂信息集合,会一直更新的. 青岛大 ...
- 青岛大学超级计算机,湖南商学院成功主办2019年国家社科基金申报经验交流会...
由湖南商学院及湖南省超级计算机科学学会联合主办的2019年国家社科基金申报经验交流会,于2019年1月4日-6日在湖南商学院二办301多功能报告厅隆重举行.会议由数学与统计学院院长谢小良教授主持.开幕 ...
最新文章
- RHEL6.4更改为CentOS6.4的yum源
- max函数的平滑(log-sum-exp trick)
- hdu 1166 敌兵布阵 树状数组
- 2018 ICPC Asia Jakarta Regional Contest J. Future Generation 状压dp
- shader weaver_具有自定义汇编程序,Weaver和运行时的可插拔知识
- Apache Cassandra 数据存储模型
- creator 静态属性_CocosCreator cc.class声明类
- Mac废纸篓批量还原的方法
- 退出功能—session
- 汇编语言定时器转化为c语言,不用定时器和汇编语言,只用C语言实现精确无误的延时...
- JDK8下载,安装及环境变量的配置
- Linux部署之批量自动安装系统之DHCP篇
- LINUX下C语言用access()检查文件可读、可写权限
- 【按键精灵】N秒内找图函数封装
- PIPIOJ1103: PIPI的数学题I/同余定理
- 群晖Docker部署MySQL服务
- 震惊!这浏览器居然进过全球 Top10
- 准确定位表单中的元素
- C#应用案例之打字母游戏
- 微服务实施笔记(二)——搭建实验部署环境