在Linux机器上部署UOJ评测系统

前言

初版前言

学校里想要部署一套OJ,然后就选了UOJ。

但是由于服务器还要一段时间(永远)才能到,所以就先拿了一台电脑作为试验机进行内网部署测试。

非常感谢以下大佬:

  • vfleaking 无私开放了UOJ的源码
  • 阮行止 维护社区版本UOJ源码并且提供大量帮助
  • 湘江一桥 维护社区版本UOJ源码并且提供大量帮助
  • 其他提供帮助的人

这篇部署教程就是第一来帮助更多人,第二。。。帮自己在正式部署的时候不会乱了阵脚。。。

另外,引用了部分UOJ部署指北中的内容。

两年后补充前言

现在我已经是第四次对这篇博客进行修改了。不过不同于前三次,这一次进行了巨大的修改,主要是把里面的一些不正确的、过时的东西给修正了。

这篇文章刚刚被写出来的时候还是题主在高二时期,那时候对于Linux系统几乎没有什么理解,对终端、命令、Docker系统甚至是网站服务一无所知。不过即便是在那样的条件下,我还是坚持研究并成功积累了一些部署和开发的经验。

本着分享的原则,我写下了两年前的这篇博客,也是为了防止自己忘掉这些经历。

但是水平有限是硬伤。许多词汇并不专业,甚至错误连篇。

写下这篇补充前言的时候,题主已是一名软件工程学院的大一学生,已经积累了一部分Linux知识和网站搭建的能力,对这些东西的理解更深了。

翻出多年前的博客,我决定将它修改成正确的、对新手真正有帮助的博客。

本博客的面向人群是缺乏部署经验的新手开发者,对于高手而言可能内容比较冗杂,可以酌情跳过。如果您发现文档中的任何问题,请在下方评论区进行回复,谢谢。

另外,本博客为原创博客。您可以随意转载本博客,但是请务必附上题主AdemJensen的原始博客地址或者个人页面。如果被我发现抄袭行为的,一律进行举报,感谢您对原创作者的尊重。

部署前的准备

UOJ结构与概念简介

UOJ开源历史

2016年10月3日,vfleaking在UOJ博客上发布了开源公告 ,UOJ从此正式成为开源项目。GitHub地址为:https://github.com/vfleaking/uoj

2017年中旬,阮行止、ceba、Masco Skray等几位大佬由于怀揣着相同的想法——将UOJ维护成一个比官方版本更易用的社区版本,创建了UOJ开发社区,并在GitHub上发布了社区版源码。

2017年下旬,阮行止大佬为UOJ社区版编写了部署指北文档,帮助更多新手部署UOJ。

至今,UOJ社区版和UOJ官方版都在进行维护。但是相比之下,社区版本的系统添加了很多非常实用的功能,因此本博客所描述的部署步骤均建立在社区版本的UOJ系统上。

UOJ系统结构

最初UOJ被设计的时候,出于安全考虑,网站服务器和数据库都被放置在Docker容器中(vfleaking的UOJ系统是部署在阿里云上的)。

Docker 是一个开源的应用容器引擎,可以理解为类似于VMWare或者VirtualBox那样的虚拟机软件。Docker创建出来的类似于“虚拟机”的东西名字叫“容器”,容器通常是没有图形化界面的。

UOJ将一个轻量化的ubuntu14系统、php5、apache2、MySQL和评测机服务集成在一个Docker容器中。

这样做的好处是,当有人攻击服务器的时候,实际被攻击的是Docker容器,而服务器本体不会受到影响。由于Docker容器能够较为方便的备份、创建、恢复,因此服务的提供上来讲更为稳定。

不过缺点也有的,几乎就是虚拟机的缺点:占用资源更多、运行速度可能较慢等等(Docker容器和虚拟机还是有区别的,直接结果就是Docker容器的效率比虚拟机高,占用资源比虚拟机少,但相比起实体机还是相对差一些)。

在2017年末和2018年初的时候,社区曾经有人(湘江一桥大佬,他为本博客的编写也提供了巨大的技术指导)尝试将vfleaking打包的Docker安装脚本提取出来,并制作实体机安装包,目前进度不详。有兴趣的话可以加入社区群了解一下(社区群号在UOJ部署指北中)。

另外,UOJ的网站前端框架是BootStrap,后端是魔改的Laravel(改到连版本都认不出来啦,vfleaking真的是厉害)

概念解释

  • 客户机:指的是你用来部署UOJ的操作系统(就是你给你电脑开机看到的那个系统)

  • 容器:指Docker创建出来的类似于“虚拟机”的东西。

  • 镜像:可以理解为一种“安装光盘”,可以用于创建Docker容器。Docker容器中的全部状态和内容都会被保存,有点类似于虚拟机软件中“挂起”的“虚拟机”。

物质准备

  • 服务器一部(也可以是阿里云或者各种云,只要是Linux系统就可以了)

  • Ubuntu 系统(推荐Ubuntu最新版或者Ubuntu Server最新版。也可以是其他Linux系统,不过软件源等东西就不一样了)

  • UOJ部署指北一份

  • UOJ官方文档一份

部署

客户机先决条件安装

我们需要安装好Ubuntu的各种服务。

说明

如未特殊指出,本文中的bash命令均是在root(管理员)用户下进行的,您可以使用以下命令来进入管理员模式:

sudo -s

按下回车后,系统会提示你输入密码。你会发现密码输不进去,其实是输进去了,只是系统不让你看见而已。使用小键盘时请注意取消NumberLock锁定,否则数字是输不进去的。

另外,如未说明,下面的指令均是在客户机</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值