搭建QDUOJ!全网最全

相信部分OIer都有过开一个属于自己的OJ的想法吧?

我之前也写过有关“搭建HustOJ”的文章,点此访问

但相较于HustOJ,我更偏向于QDUOJ。

QDUOJ的全称是QingDao University Online Judge,直译就是“青岛大学在线评测”。

下面是效果图:

非常的简洁!

部署平台

工欲善其事,必先利其器。

我们需要一台云服务器(注意不是虚拟主机)来搭建系统。当然,你也可以通过虚拟机进行本地测试。

这里推荐雨云的VPS机子哦!

打开后先注册一个账号:

之后打开云服务器购买界面,按需求进行购买。这里推荐香港的2h4g,已经完全可以满足大部分需求。

操作系统选择Ubuntu 24.04,不需要安装任何预装APP。

购买好后,通过提供的SSH连接信息连接。

开始部署

建议复制/粘贴,以防打错。

我已经在本机按我写的试过,如果一切顺利,不可能报错中断

连接后,首先安装必要的环境库。

apt update -y
apt upgrade -y
apt install python3-pip

安装docker。

apt install docker.io

安装docker-compose。

curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

可以通过docker-compose version验证是否成功。

在这里插入图片描述

安装git

apt install git

克隆QDUOJ的git库。

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

如果你的80端口已被使用,想通过其他端口代理访问,那么请执行:

vim docker-compose.yml

找到最下面两行:

冒号前面表示外网端口,后面是容器端口,一定不要更改,不会受占用影响

配置好后输入:wq退出vim。

汉化

如果你喜欢英文版可以跳过这一步,直接到后面的启动步骤。

在汉化前,先执行:

docker-compose up -d

Q:我的镜像一直在Pulling,后面就报错了,怎么解决?
A:解决方案往启动看。

保持在前面的OnlineJudgeDeploy目录,拉取前端文件夹:

git clone https://github.com/QingdaoU/OnlineJudgeFE.git

进入配置目录并编辑:

cd OnlineJudgeFE/src/i18n/
vim index.js

找到locale这一行:

en-US改为zh-CN

保存好后,执行:

apt install npm
cd ../..
npm config set registry https://registry.npmmirror.com
npm install shelljs
export NODE_OPTIONS=--openssl-legacy-provider 
npm run build:dll
npm run build

执行完后,这里会出现一个dist/目录。

接下去,打开docker-compose.yml

cd ..
vim docker-compose.yml

在这里插入图片描述

volumes处加上一行:

- ./data/backend/dist:/app/dist

退出后复制一份dist到指定目录。

cp -r dist/ ~/OnlineJudgeDeploy/data/backend/

汉化即完成。

搞搞错误的配置(必须搞)

官方的配置其实有那么亿点点的问题,我们在docker-compose.yml中找到这里:

在这里插入图片描述

看着人畜无害,但是,必须把这个注释去掉并且把cdn.oj.com改成你要访问的域名/IP!

启动

最激动人心的,首先回到OnlineJudgeDeploy目录,执行:

docker-compose up -d

Q:我的镜像一直在Pulling,后面就报错了,怎么解决?
A:编辑docker-compose.yml,把redis:4.0-alpine改为docker.1ms.run/redis:4.0-alphinepostgres:10-alpine改为docker.1ms.run/postgres:10-alpine,即:
在这里插入图片描述

执行好后,先放一下防火墙:

ufw allow your_port

然后访问即可!

有什么问题都欢迎通过CSDN私信/QQ私信(3821661994)问我!

1 个赞