hustoj是一个出色的开源项目,本文章记录了我在ubuntu20.04搭建的全过程,以及小部分进行修改。不会部署的同学可以参照我这篇文章,可以完美运行。当然如果您需要部署在您的linux环境下,同时不介意小额支付,请联系我(1661420103@qq.com)。
以下是部署后的界面,仅供参考。
首页
题目界面
后台界面
1. 什么是OJ(您是否真的需要OJ平台)
OJ是Online Judge系统的简称,用来在线检测程序源代码的正确性。著名的OJ有TYVJ、RQNOJ、URAL等。国内著名的题库有北京大学题库、浙江大学题库、电子科技大学题库、杭州电子科技大学等。国外的题库包括乌拉尔大学、瓦拉杜利德大学题库等。
可能适用的人群有:各大高校计算机系、ACMER、大学生刷题平台、中小学生CSP项目、中学生NOIP项目,等等。(我个人是做noip的教学工作,故此搭建了该平台用于机构学生练习)
2. 搭建环境
提醒:您需要具备linux系统基本素养,以及php、mysql、前端等相关知识,以便用于进行二次开发。
我这里选择的是腾讯云轻量级服务器(主要是价格比较美丽)。
腾讯云产品总览cloud.tencent.com/product
当然你也可以选择腾讯云其他类服务器,或者阿里云、华为云。
注意:学生党有优惠!
云服务器_云主机_弹性云服务器ECS_租用_购买-华为云www.huaweicloud.com/product/ecs.html正在上传…重新上传取消
请先购买云服务器,然后在云服务器控制台内选择系统镜像Ubuntu 20.04,目前部署在该环境下,效果最好,成功率最高。镜像请选择原生Ubuntu系统,不支持WSL和docker中的Ubuntu系统。
使用虚拟机的同学同理。
3. 环境部署(一键部署)
请勿使用 LNMP LAMP Cpanel 宝塔 等其他面板程序提供的 MySQL Nginx Apache PHP 环境,安装脚本已经包含所有必须环境的安装。
以腾讯云为例,选择云服务器一键登录
wget http://dl.hustoj.com/install-ubuntu20.04.sh
sudo bash install-ubuntu20.04.sh
请耐心等待下载-----
下载完成后,请访问自己的服务器公网ip。
虚拟机环境,请访问本地端口。
用admin作为用户名注册一个用户,自动成为管理员。
至此hustoj部署结束,是不是非常简单!
4. 修改部分源程序,删除广告或图标。
hustoj提供多个模板支持,分别为:bs3、bshark、mario、mdui、sweet、syzoj,当然部分模板可能不完善,自己可以进行修改和二次开发。
进入/home/judge/src/web/include,修改db_info.inc.php中的$OJ_TEMPLATE。
删除faq广告,也可以添加自己的faq。
进入/home/judge/src/web/template/**,修改faqs.cn.php,详见内部代码。
修改网站标题Hustoj
进入/home/judge/src/web/include,修改db_info.inc.php中的$OJ_NAME
设置是否允许注册新用户
$OJ_REGISTER
设置是否新注册用户需要审核
$OJ_REG_NEED_CONFIRM
设置是否需要登录才能访问
$OJ_NEED_LOGIN
设置默认语言
static$OJ_LANG
设置是否启用打印服务
static$OJ_PRINTER
修改主页index界面
home/judge/src/web/template/**
修改index.php
5. 关于二次开发
5.1 界面美化
web根目录的默认位置/home/judge/src/web 根目录下的文件用于处理逻辑,处理完成后,数据以变量存储,在文件末尾进行跳转或包含操作(require/include),包含的目标为template/[模板名]下的同名文件。
针对界面进行美化,可以先在template目录下执行
sudo cp -a bs3 newgui
然后修改db_info.inc.php,设置$OJ_TEMPLATE="newgui";
之后随意修改newgui目录下的文件,来进行美化处理。
5.2 利用判题内核/重新开发Web
数据库主要表结构
6. 关于题目
hustoj提供了一些免费的题目,但是题目量比较少,而且体系不是非常全,如果针对大学或者是中小学的同学,完全不够用。我部署的平台是基于noip的,分为基础和算法,嫌麻烦的也可以直接使用我的平台。