前言
提到在线评测系统(Online Judge),很多人会想到用C++、Java 或 Python 等语言开发。但你可能不知道,PHP 同样能够构建功能强大的在线评测系统!今天我们就来聊聊基于 PHP 的 HUSTOJ ——一个成熟稳定的开源在线评测系统
*雨云论坛竟然不支持 latex*
HUSTOJ
hustoj 由 华中科技大学(实际上只有 zhblue 一个人和喜欢 pr 的网友) 开发,前后端完全使用 php 开发,判题机是 docker ,不用担心安全问题,这点为 oi 教学系统提供了很好的解决方案
主要优势:
- 开源免费
- 允许商用(只需要开放源代码)
- 海量题库(约 5000 道题目可以下载)
- 支持多种语言提交
- 社区活跃
- 易于二开(直接修改文件即可,不需要重新 build)
HUSTOJ 相关资料
QQ 群:23361372
wiki:代码的那些事 | 程序员回忆录
github:zhblue/hustoj: Popular Simple Open Source Online Judge based on PHP/C++/MySQL/Linux for ACM/ICPC and NOIP training, with easy installation. 简单实用的开源OJ系统
题库:TK题库
正文
我们如何部署如此强势的 online judge 呢?
我们可以使用同样强势的的 雨云 和 宝塔面板
温馨提示:1-1 也可以部署 hustoj
购买完服务器后,需要安装宝塔面板
操作系统选择 ubuntu 22.04
开始部署
创建数据库
登录上你的 宝塔面板,左侧数据库,创建数据库,数据库名称 jol ,进行创建
运行安装脚本
先登录上你的 宝塔面板 ,进入左侧终端,执行两条命令
wget http://dl.hustoj.com/install-ubuntu22.04-bt.sh # 拉取安装脚本
bash install-ubuntu22.04-bt.sh # 运行安装脚本
这时,他会要求你输入数据库用户名和密码,请依次键入你创建数据库的时候的用户名和密码

随后便开始安装了…
期间可能会多次需要你按下 enter 键
请不要使用
Windows + V剪切板功能
请保持 bt 窗口活跃
安装速度结合网络宽带而定
需要按 enter 大杂烩:
创建站点并配置
宝塔左边网站,php,创建网站,域名http://<server_ip>:<port>,根目录/home/judge/src/web
然后设置这个,左边网站目录,关闭放跨站攻击
然后,左边软件商店,搜索 php ,设置安装的 php,左边禁用函数,取消 putenv 函数的禁用
然后,使用浏览器访问你的 oj ,恭喜你,访问成功!
简单使用 HUSTOJ
注册管理员账户
右上角注册,用户名一定要写admin,其他随意,注册即可
添加一道题目
后台管理 URL 是 http://<server_ip>:<port>/admin/
左侧【问题-管理】【问题-添加】
<span class='md'> </span>这是 markdown 的标记,题面需要在里面写,支持 latex、katex
添加即可
维护
系统配置
/home/judge/src/web/include/db_info.inc.php 有注释
其他你可能需要知道的东西
/home/judge/src/web 是站点文件
感谢阅读






