苏州大学附属中学

一小时从零建立你自己的 Online Judge

2019-07-19 19:50:29


感谢你抽出时间阅读本文章,我是 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 16.04。你可以请在 清华大学开源软件镜像站 下载免费的 Ubuntu 系统。

清华大学开源软件镜像站

请下载 amd64 版本

清华大学开源软件镜像站


下载完成后你需要在本机创建一个虚拟机,个人推荐 VMware Workstation Player 15,它的操作十分简单易学,更重要的的是,它是免费软件

点击此处下载:VMware Workstation Player 15

由于我这里放出的是官方下载链接,下载速度会时快时慢。如果你下载时的速度只有几十kb,你可以在我的云盘下载相同的安装包。

下载链接:腾讯微云 || 百度网盘( 提取码:bkgv )


下载完成后的安装在此就不再赘述了,正常安装即可,在输入许可证信息时要选择“ 免费将 VMware Workstation Player 15 用于非商业用途 ”。

安装完成后我们打开应用,选择创建新虚拟机,随后选择安装程序光盘映像文件。这里要在浏览中找到我们刚刚下载的系统,然后点击下一步。

创建新虚拟机

安装程序光盘映像文件


这里,全名可以自己起,但不要使用中文。用户名只能使用小写字母、0~9的数字和"-"符号,且必须以小写字母开头。密码自己设置,但一定要记住,后面会用到。填写完所有信息后,选择下一步。

简易安装信息


这里的虚拟机名称和位置都可以自己指定,建议把它放在一个空间充足的盘里。

命名虚拟机


接下来,我们要设置磁盘容量。这里,我建议分配40GB,并选择“ 将虚拟磁盘存储为单个文件 ”。请注意,你指定了40GB的空间后,它并不会立刻创建一个40GB的文件,这个虚拟磁盘文件的大小会随着使用的需求渐渐上升。也就是说,40GB是你给它设置的最大空间上限。

指定磁盘容量


至此,虚拟机的配置就完成了。点击“ 完成 ”进入安装步骤。

已准备好创建虚拟机

如果弹出了一个选项框询问是否安装“ VMware Tools for Linux ”,请选择“ 下载并安装 ”。

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 && sudo apt install -y vim python-pip curl git

此处可能要求你输入密码,请注意,在输入密码时你并不会看见“*”或“·”等标记,很多人因此认为没有输进去,事实上只是没有显示而已,你只需要输完密码然后按回车就可以了。


在上述操作完成后再输入:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

至此,依赖就安装完成了。


1.4 安装Docker

Docker 是一个开源的应用容器引擎,如果你常用 Github 你一定对它不会陌生。我们选择的 Online Judge 使用 Docker 进行部署,所以我们要安装 Docker。

请在终端中输入:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

为了节约大家的生命,我们再配置一下 Docker 的加速器。

请在终端中输入:

gedit /etc/docker/daemon.json

请将下列内容拷入随后弹出的窗口中:

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

点击“ Save ”,然后点左上角的叉关闭。这样,Docker 加速器就配置完毕了。


2.安装 Online Judge

现在很多地方建OJ都会选择 Hustoj 。这个OJ的确很经典,但是它的 UI 设计是真心有点看不下去,所以我们选择另一款开源OJ:Qduoj。这款OJ来自于青岛大学。Qduoj 的设计风格真心不错,它唯一的缺点就是:不支持Pascal。所以使用Pascal语言的同学,赶快转到C++吧!


Qduoj 的开源项目在 Github 上,我们需要将它下载到本地。在下载前,我们先配置一下 DNS 以大幅加快拉取速度。

请在终端中输入:

gedit /etc/hosts

请在弹出文件的末尾加入这两行:

151.101.72.249 github.global.ssl.fastly.net  
192.30.253.112 github.com

然后我们拉取文件:

git clone -b 2.0 https://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了。

Online Judge


点击右上角的“ Login ”,登录初始管理员账户

账号:root

密码:rootroot

登陆后点击右上角的root,选择“ Setting ”就可以设置语言、昵称等信息。随后的设置,就留给你自己去探索吧。


4.附录

感谢中国科学技术大学开源软件镜像站DaoCloud阿里巴巴开源镜像站清华大学开源软件镜像站,没有他们的镜像服务,我们不可能得到如此稳定的连接,也不可能如此简单快捷地完成部署过程。

Qduoj的官方参考文档可以登陆:https://docs.onlinejudge.me/#/ 查看

如有问题,可以加入官方QQ交流群:496710125

还有什么不太清楚的也可以私信我,我会尽量第一时间回复。

如果需要题目,可以访问 TK题库。这里面的题目很丰富,有不少免费题目,即便是付费题目也很便宜。下载后是一个FPS格式的文件,可以直接导入OJ使用。注意:导入问题后需要先为题目添加一个“ Tag ”,否则将无法操作。


最后祝每一位 OIer 都能在NOIP/CSP-J/S/NOI/CTSC/IOI的赛场上取得最好的成绩!