从零建立你自己的OJ

前言

相信你早就看洛谷gag
不惯了,所以,一起动手搭建一个社区功能丰富的OJ吧

挑选OJ

目前开源的OJ有:hustoj,qdoj,uoj等等等等,但缺点都很明显:社区功能太弱。

所以,在意外中发现,vijos竟然是开源的,于是这就成了不二之选

准备

docker

下载

这里我选用docker desktop,一是界面好看,二是操作简单,下载链接请自行百度。

配置docker加速器

docker

PreferencesDocker Engine栏中输入

1
2
3
4
5
6
7
{
"debug": true,
"experimental": false,
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}

v

github加速

在终端执行nano /etc/hosts,在末尾加上

1
2
3
192.30.253.113  gitHub.com
151.101.185.194 gitHub.gload.ssl.fastly.net
192.30.253.120 codeload.githb.com

安装OJ

拉取文件

执行git clone https://github.com/vijos/vj4-docker.git

启动web服务

1
2
3
cd vj4-docker
cp .env.example .env
docker-compose up -d

添加超级管理员

1
2
3
alias drpm="docker-compose run --rm web"
drpm vj4.model.user add 114514 iee 233333 [email protected] # 顺序为 uid username password email,创建用户,你也可以使用网页注册
drpm vj4.model.user set_superadmin -1 # -1 是 uid,将 -1 设置为管理员

启动评测服务

添加评测用户

1
2
3
alias drpm="docker-compose run --rm web"
drpm vj4.model.user add -2 judge 123456 [email protected] # 顺序为 uid username password email,创建用户,你也可以使用网页注册
drpm vj4.model.user set_judge -2 # -2 是 uid,将 -2 设置为评测用户

配置文件

下载模板
1
2
mkdir -p ./data/judge/ && wget -O ./data/judge/config.yaml https://raw.githubusercontent.com/vijos/jd4/master/examples/config.yaml
nano ./data/judge/config.yaml
配置

在配置文件中的 server_url,填入 http://web:8888/
随后在 docker-compose.yml 中将 judge 部分的代码取消注释并保存。再次执行 docker-compose up -d 即可正常评测程序。

性能优化

现在评测机的性能非常弱鸡,原因很简单——你没有把服务器(电脑)的所有性能分配给它,这一步讲让它拥有更多的资源

还是在Preferences里,选Resources,把CPU和内存拉满就可以了
wee

tips:别担心,这里的内存分配不是像虚拟机一样立即吃掉,而是是动态的,8G只是最大容量

体验

现在,访问localhost:8888就可以看到你自己的oj了!

展示

欢迎来 https://oj.yuygfgg.ml 玩(这个是我用内网穿透做的,二我的电脑可能会关机,所以很可能上不去)
内网穿透被墙了。。。

0%