🏗️ 一、系统架构概览
HOJ采用分布式设计,主要组件包括:
-
前端:Vue.js框架,负责用户界面69。
-
后端:Spring Boot(DataBackup服务),处理业务逻辑410。
-
判题服务:
-
JudgeServer:调度评测任务(Java)4。
-
GoJudge:基于Docker的沙箱判题机(Go语言),执行代码隔离评测410。
-
-
依赖服务:
-
数据库:MySQL(存储题目、用户数据)4。
-
配置中心:Nacos(管理服务配置)410。
-
缓存:Redis(会话管理)4。
-
⚙️ 二、部署流程(推荐Docker一键部署)
1. 基础环境准备
-
服务器要求:2核4G以上配置,CentOS 8+/Ubuntu 16.04+ 系统6。
-
安装依赖:
bash
# 安装Docker及Compose sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
2. Docker一键部署
bash
git clone https://gitee.com/himitzh0730/hoj-deploy.git cd hoj-deploy/standAlone vim .env # 修改默认配置(如MySQL密码、邮箱SMTP等) docker-compose up -d
-
验证启动:执行
docker ps查看容器状态(需均为UP且healthy)6。 -
默认管理员账号:
root / hoj123456,登录后需在后台(http://服务器IP/admin/conf)配置邮箱SMTP(否则用户无法注册)6。
3. 源码部署(高级用户适用)
若需定制化开发,需分步部署:
-
后端部署:
-
启动Nacos、Redis、MySQL。
-
修改
application-prod.yml中的数据库连接和判题Token410。
-
-
前端部署:
bash
cd hoj-vue npm install npm run build # 生成dist目录
-
判题机部署:
-
云服务器安装Go环境、Docker。
-
启动GoJudge容器:
bash
docker run -d -it --privileged -p 5050:5050 criyle/executorserver
-
部署JudgeServer(需与GoJudge同服务器,避免路径问题)410。
-
🛠️ 三、后台管理与配置
-
题目管理:
-
支持普通/特殊/交互式评测,可上传测试数据(ZIP格式,含
.in/.out文件)19。 -
客观题配置:需手动创建
config.yaml(YAML格式),避免使用评测设置界面的Bug3。
-
-
用户管理:
-
支持CSV批量导入(格式:用户名,密码,邮箱)9。
-
角色权限:超级管理员 > 题目管理员 > 普通用户9。
-
-
系统定制:
-
修改页脚、轮播图:后台“系统配置”页面9。
-
添加AC特效:引入
confettiUtil.js,在判题结果处触发2。
-
⚠️ 四、常见问题解决
-
判题失败:
-
检查GoJudge容器是否运行(端口
5050)。 -
确保JudgeServer的
SANDBOX_BASE_URL指向GoJudge服务10。
-
-
Nacos配置无法保存:直接上传本地编辑的
config.yaml文件,避免在线编辑310。 -
测试数据路径错误:若JudgeServer部署在本地,需将测试数据同步至云服务器10。
📱 五、高级功能扩展
-
移动端适配:前端自动响应式布局9。
-
VJudge集成:支持HDU/POJ/Codeforces题目拉取评测68。
-
AI辅助:接入豆包AI解析题目错误(需额外配置)9。
-
比赛功能:支持ACM/OI赛制、外榜、打星队伍69。
🔧 六、运维与更新
-
更新版本:在
hoj-deploy目录执行docker-compose pull && docker-compose up -d6。 -
资源监控:后台仪表盘实时查看CPU/内存占用9。
💎 部署建议:首次尝试推荐Docker方案(30分钟内完成);二次开发可参考HOJ源码仓库 6。若遇复杂问题,可加社区QQ群或提交Issue。
本回答由 AI 生成,内容仅供参考,请仔细甄别。
