前言

很多人对于做题有点厌烦,但是,如果让你出题给别人做那么可能会很有意思。可是,出题只能出在一些别人的OJ上,甚至只能在自己的Word文档里出。今天我教大家一个厉害点的,叫做搭建自己的Online Judge

准备

额,当然是一台服务器啦,我们要一个无操作系统、纯净的服务器。如果你实在是买不起像我一样,那么就可以在虚拟机上搭建。

注意,必须为64位操作系统。如果你是虚拟机搭建,请保证要安装虚拟机的系统是64位系统。我们后面的操作都必须在64位操作系统下进行。

有云服务器的请自行跳过这一段。
你需要在本机创建一个虚拟机,我推荐VMware Workstation Player 15,它的操作十分简单易学,更重要的的是,它是免费软件。
点击此处下载:VMware Workstation Player 15,并安装好。
下载完成后,请继续阅读下面一段。

接下来我们就要进行操作系统的安装了。

我们要下载Ubuntu 16.04.6 (amd64, Desktop LiveDVD),但是在官网下实在是太慢了。我挂了一个清华大学开源软件镜像站的镜像下载链接:Ubuntu 16.04.6 (amd64, Desktop LiveDVD)

如果你用的是服务器,现在在你的服务器上装系统吧。
用虚拟机的,请打开这个软件。如果你是第一次打开,请选择“免费将……用于非商业用途”。
打开了吧?现在看见左边那一栏了吗?选择“新建虚拟机”,会弹出一个窗口,选择第二个选项,然后路径找到刚刚下载下来的iso文件,点击下一步。
接下来,请输入OJ的电脑全名和用户名密码。全名可以随便起(中文除外),但是用户名只能为小写字母,不能为root
然后回让你确定虚拟机的名称。建议把它放在一个空间充足的盘里。
它又会让你设置磁盘容量。很多人看到20GB这个大数会打个疙瘩,以为这样会很快把磁盘消耗完毕。其实操作完后它并不会在磁盘里创建一个20GB的文件,而是通过需求慢慢增长。换句话说,这就是你对虚拟机的容量最大上限。
如果弹出了一个选项框询问是否安装“VMware Tools for Linux”,请选择“下载并安装”。
等待15分钟-5小时,虚拟机的系统装好了。

搭OJ

赶紧撸起袖子,现在已经到高潮部分了!
由于Ubuntu系统自带的源是国外的的源,所以当我们安装软件时,下载的速度会非常慢。因此,我们需要更改系统源为国内的源。如果你不知道什么叫“源”,也不用担心,就按照我说的做就行了。

点击右上角的齿轮按钮,选择“System Settings”。在随后弹出的界面中,选择“Software & Updates”。请在弹出的窗口中将“Download from”改为“Other”。然后请选择“China”中的“mirrors.ustc.edu.cn”。输入密码就可以了。当你点击右下角的“Close”按键退出时,系统会弹出一个窗口。请点击“Reload”。这样,我们就成功地将源切换为中科大源了。当然,如果有的源离你更近,我也不拒绝换成其他的源,或不换。我这么做只是为了节约您的生命

请在正在打OJ的机器中打开此网页,这个网址我相信你会背下来的。

右击桌面,打开终端(Open Terminal),将下面的命令拷在里面。

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

好了,依赖已经安装完成了!

不过依赖装完了,还没有到正事呢!我们先安装一下Docker。

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

不过,这还是很慢,所以我们在配置一下加速器。

gedit /etc/docker/daemon.json

把一下的东西拷到弹出的窗口中。

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

注意,不能直接叉掉,一定要先保存啊!

现在,我们可以正式的装OJ了。我们这回装的可不是那个经典的HUSTOJ,因为它的UI设计实在是太恶心了。我们用青岛大学的Qduoj。这个OJ又好看又简洁还实用,唯一的缺点就是没法用Pascal。大家赶紧转到C++吧!

请在终端中拷入

gedit /etc/hosts

在弹出的窗口中末尾加入

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

你能猜到,我们又在配置Github的加速器了。

现在,我们要拉取文件

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

最后一步了!!!

docker-compose up -d

好了,你的OJ大功告成了!

打开你的OJ

如果你用的是服务器,输入你的服务器的公网IP就行了。如果你用的是虚拟机,打开火狐浏览器,输入127.0.0.1就可以看到你的OJ了。如果没有,请多刷几遍,如果刷了半个小时还没有,重装一次吧。

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

账号:root

密码:rootroot

登陆后点击右上角的root,选择“ Setting ”就可以设置语言、昵称等信息。记得,一定要及时改root密码!随后的设置,就留给你自己去探索吧。

结语

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

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

如果有实在不会的,请在评论留言,我会加以说明。

搭建自己的Online Judge的更多相关文章

  1. 【Open-Falcon】Linux下安装Open-Falcon

    一.Open-Falcon组件简述 [Open-Falcon绘图相关组件] Agent:  部署在目标机器采集机器监控项 Transfer : 数据接收端,转发数据到后端Graph和Judge Gra ...

  2. Online Judge(OJ)搭建——1、项目介绍

    项目名 Piers 在线评测 项目需求 用户: 获取题库.题目的相关信息. 在线对代码进行编译.执行.保存.返回运行(编译)结果. 总体题目评测成绩查询. 用户信息服务,包括注册.登录.忘记密码.邮箱 ...

  3. Online Judge(OJ)搭建——5、配置

    Spring 配置一些本地类,还有 HTML form 提交文件的解析器. package per.piers.onlineJudge.config; import org.springframewo ...

  4. Online Judge(OJ)搭建(第一版)

    搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...

  5. Online Judge(OJ)搭建——2、数据库,SQL语句

    数据库EER图 数据库表.字段.约束解释 users 用户: id 标识符,email 邮箱,password 密码,name 姓名,sex 性别,enabled 启用 ,role 角色 id pri ...

  6. Online Judge(OJ)搭建——3、MVC架构

    Model Model 层主要包含数据的类,这些数据一般是现实中的实体,所以,Model 层中类的定义常常和数据库 DDL 中的 create 语句类似. 通常数据库的表和类是一对一的关系,但是有的时 ...

  7. Online Judge(OJ)搭建——4、具体实现

    代码编译.运行.保存: 本系统目前支持 Java.C++ 的编译.如有其他语言需要编译,扩展也很简单,因为这里使用了一个抽象类LanguageTest,处理好代码运行编译之前的文件保存,代码运行之中的 ...

  8. 一个很简单的php留言板。。。。搭建在sae上的。。。

    我在sae上搭建了一个个人简历的页面: 有兴趣的可以访问  http://671coder.sinaapp.com/ 在做下面一个简单的留言板的时候,卡了我很久,虽然完全没用过php..但是还是最后勉 ...

  9. 十、Python练习----基础搭建飞机大战

    只是简单的学习了pygame,实现飞机的摧毁还需要多张图片的切换,和sprite(碰撞精灵),还有多种音效的添加(如背景音乐.摧毁特效).以后再深入学习我只是练习一下python. 一.搭建界面(基于 ...

随机推荐

  1. Ralasafe配置手册

    Ralasafe访问控制(权限管理)中间件的配置工作非常少.因为项目发起人非常讨厌配置.因此,"己所不欲,勿施于人",Ralasafe的配置也非常少. Ralasafe配置工作只有 ...

  2. Spring Cloud探路(一) Erueka服务器的建立

    组件名:Netflix Eureka  作用:支撑微服务的自注册.自发现,提供负载均衡能力 开发环境使用IDEA 1.新建Eureka Server,新建maven项目,配置pom.xml <p ...

  3. P1077 子串乘积正负分类

    题目描述 给你一个序列包含 \(n\) 个元素的序列 \(a_1, a_2, \dots , a_n\) (每个元素 \(a_i \ne 0\)). 你需要计算如下两个值: 有多少对数 \((l, r ...

  4. Spring 面试题汇总

    1.什么是SpringSpring是一个轻量级IoC和AOP容器框架,是为Java应用程序提供基础性服务的一套框架,目的是简化企业应用程序的开发,它使得开发者只需关注业务需求. 2.Spring的优点 ...

  5. 【31.42%】【CF 714A】Meeting of Old Friends

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  6. 备战省赛组队训练赛第五场(UPC)

    中石油比赛链接 CF题目链接 E:博客 G:李继朋  博客 H:苗学林  贺振原 J:博客  苗学林 机房白给队全方位题解:A B E G I J

  7. Linux 内核取消 urb

    为停止一个已经提交给 USB 核心的 urb, 函数 usb_kill_urb 或者 usb_unlink_urb 应 当被调用: int usb_kill_urb(struct urb *urb); ...

  8. 【34.54%】【codeforces 675E】Trains and Statistic

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  9. P3810 陌上花开 CDQ分治

    陌上花开 CDQ分治 传送门:https://www.luogu.org/problemnew/show/P3810 题意: \[ 有n 个元素,第 i 个元素有 a_i. b_i. c_i 三个属性 ...

  10. Nmap基本使用

    Nmap ​ Network Mapper ​ 一款开源免费的网络发现和安全审计工具. 用途 ​ 列举网络主机清单 ​ 监控主机或服务运行状况 ​ 管理服务升级调度 ​ 检测目标主机是否在线 ​ 检测 ...