一小时从零建立你自己的 Online Judge
Torris_Yin · · 个人记录
感谢你抽出时间阅读本文章,我是 Steve George。
这是我博客的第一篇文章,十分感谢你来捧场。
如果你在搭建中遇到了问题,我在B站上已经上传了完整的操作视频 一小时从零建立你自己的 Online Judge ,你可以对照视频进行搭建。
提前声明,本篇文章的内容难度较低,主要是为了能够让更多的人体验到自主搭建Online Judge的乐趣。如果搭建难度过高,部分不太熟悉OJ搭建的朋友可能会不知所措;如果搭建过程太复杂,那么搭建OJ的乐趣就会大大降低。总而言之,我希望本文像《啊哈!算法》一样简洁易懂便于接受,希望各位读者理解与包涵。
注:本文使用虚拟机进行搭建,如果你是在云服务器上部署,你也可以参考本文章。由于兼容性问题,本文仅适用于64位系统,若使用32位系统会出现问题。
作为一个OIer,拥有一个自己的 OJ 还是十分有用的。你可以创建自己的独特题库并不断练习。在洛谷这么久,相信你早就看管理员不爽了。假使你自建OJ,你就是超级管理员。如果你的学校还没有自己的 Online Judge,你也可以为学校创建一个信息学评测平台。这并不复杂,也不需要很大的成本,只要你耐心地遵循本文的步骤进行操作,你一定可以成功建立你的OJ!
下面进入正题:
1.准备工作
1.1 准备 Ubuntu 系统
搭建 Online Judge 首先要准备一个 Ubuntu 系统,这里推荐 Ubuntu 20.10。你可以请在 清华大学开源软件镜像站 下载免费的 Ubuntu 系统。
请下载 amd64 版本
下载完成后你需要在本机创建一个虚拟机,个人推荐 VMware Workstation Player 16,它的操作十分简单易学,更重要的的是,它是免费软件。
点击此处下载:VMware Workstation Player 16
由于我这里放出的是官方下载链接,下载速度会时快时慢。如果你下载时的速度只有几十kb,你可以在我的云盘下载相同的安装包。
下载链接:腾讯微云 || 百度网盘( 提取码:1024 )
下载完成后的安装在此就不再赘述了,正常安装即可,在输入许可证信息时要选择“ 免费将 VMware Workstation Player 15 用于非商业用途 ”。
安装完成后我们打开应用,选择创建新虚拟机,随后选择安装程序光盘映像文件。这里要在浏览中找到我们刚刚下载的系统,然后点击下一步。
这里,全名可以自己起,但不要使用中文。用户名只能使用小写字母、0~9的数字和"-"符号,且必须以小写字母开头。密码自己设置,但一定要记住,后面会用到。填写完所有信息后,选择下一步。
这里的虚拟机名称和位置都可以自己指定,建议把它放在一个空间充足的盘里。
接下来,我们要设置磁盘容量。这里,我建议分配40GB,并选择“ 将虚拟磁盘存储为单个文件 ”。请注意,你指定了40GB的空间后,它并不会立刻创建一个40GB的文件,这个虚拟磁盘文件的大小会随着使用的需求渐渐上升。也就是说,40GB是你给它设置的最大空间上限。
至此,虚拟机的配置就完成了。点击“ 完成 ”进入安装步骤。
如果弹出了一个选项框询问是否安装“ VMware Tools for Linux ”,请选择“ 下载并安装 ”。
1.2 更换国内源
由于 Ubuntu 系统自带的源是国外的的源,所以当我们安装软件时,下载的速度会非常慢。因此,我们需要更改系统源为国内源。
请点击右上角的齿轮按钮,选择“ System Settings ”。在随后弹出的界面中,请选择“ Software & Updates ”。请在弹出的窗口中将“ Download from ”改为“ Other ”。然后请选择“ China ”中的“ mirrors.ustc.edu.cn ”。输入密码就可以了。当你点击右下角的“ Close ”按键退出时,系统会弹出一个窗口,如下图所示。请点击“ Reload ”,这样,我们就成功地将源切换为中科大源了。
1.3 安装必要的依赖
我们在桌面上右击,选择“Open Terminal”打开终端。
得益于 Vmware Tools 的支持,你可以直接将文字复制到终端中,所以下面的命令你可以直接拷贝进虚拟机中。
请将下面的命令拷贝至终端中:
sudo su
cd /
apt update && apt install -y vim python3-pip curl git
此处可能要求你输入密码,请注意,在输入密码时你并不会看见“*”或“·”等标记,很多人因此认为没有输进去,事实上只是没有显示而已,你只需要输完密码然后按回车就可以了。
在上述操作完成后再输入:
pip3 install --upgrade pip
pip install docker-compose
至此,依赖就安装完成了。
1.4 安装Docker
Docker 是一个开源的应用容器引擎,如果你常用 Github 你一定对它不会陌生。我们选择的 Online Judge 使用 Docker 进行部署,所以我们要安装 Docker。
请在终端中输入:
curl -sSL https://get.daocloud.io/docker | sh
2.安装 Online Judge
现在很多地方建OJ都会选择 Hustoj 。这个OJ的确很经典,但是它的 UI 设计是真心有点看不下去,所以我们选择另一款开源OJ:Qduoj。这款OJ来自于青岛大学。Qduoj 的设计风格真心不错,它唯一的缺点就是:不支持Pascal。所以使用Pascal语言的同学,赶快转到C++吧!
我们拉取文件:
git clone -b 2.0 git://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy
拉取完成后请输入:
docker-compose up -d
随后,等待5~30分钟,当你看见4个绿油油的“ done ”后,你的 Online Judge 就搭建完成了。
3.配置 Online Judge
如果你使用的是云服务器,那么你只需要在你自己的浏览器中输入你云服务器的公网IP就可以访问你的 Online Judge 了。如果你使用的是虚拟机,请打开 Ubuntu 中的火狐浏览器,访问127.0.0.1就可以看到你的Online Judge了。
点击右上角的“ Login ”,登录初始管理员账户
账号:root
密码:rootroot
登陆后点击右上角的root,选择“ Setting ”就可以设置语言、昵称等信息。随后的设置,就留给你自己去探索吧。
4.附录
感谢清华大学开源软件镜像站、中国科学技术大学开源软件镜像站,没有他的镜像服务,我们不可能得到如此稳定的连接,也不可能如此简单快捷地完成部署过程。
Qduoj的官方参考文档可以登陆:https://opensource.qduoj.com/#/ 查看
如有问题,可以加入官方QQ交流群:496710125
还有什么不太清楚的也可以私信我,我会尽量第一时间回复。
如果需要题目,可以访问 TK题库。这里面的题目很丰富,有不少免费题目,即便是付费题目也很便宜。下载后是一个FPS格式的文件,可以直接导入OJ使用。注意:导入问题后需要先为题目添加一个“ Tag ”,否则将无法操作。
最后祝每一位 OIer 都能在NOIP/CSP-J/CSP-S/NOI/CTSC/IOI的赛场上取得最好的成绩!