我之前也写过有关“搭建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-alphine
,postgres:10-alpine
改为docker.1ms.run/postgres:10-alpine
,即:
执行好后,先放一下防火墙:
ufw allow your_port
然后访问即可!
有什么问题都欢迎通过CSDN私信/QQ私信(3821661994)问我!