问题标题: 怎么做hoj

0
0

1
已采纳
于行衍
于行衍
中级天翼
中级天翼

🏗️ 一、系统架构概览

HOJ采用分布式设计,主要组件包括:

  1. 前端:Vue.js框架,负责用户界面69。

  2. 后端:Spring Boot(DataBackup服务),处理业务逻辑410。

  3. 判题服务

    • JudgeServer:调度评测任务(Java)4。

    • GoJudge:基于Docker的沙箱判题机(Go语言),执行代码隔离评测410。

  4. 依赖服务

    • 数据库: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. 源码部署(高级用户适用)

若需定制化开发,需分步部署:

  1. 后端部署

    • 启动Nacos、Redis、MySQL。

    • 修改application-prod.yml中的数据库连接和判题Token410。

  2. 前端部署

    bash

    cd hoj-vue
    npm install
    npm run build  # 生成dist目录
  3. 判题机部署

    • 云服务器安装Go环境、Docker。

    • 启动GoJudge容器:

      bash

      docker run -d -it --privileged -p 5050:5050 criyle/executorserver
    • 部署JudgeServer(需与GoJudge同服务器,避免路径问题)410。

🛠️ 三、后台管理与配置

  1. 题目管理

    • 支持普通/特殊/交互式评测,可上传测试数据(ZIP格式,含.in/.out文件)19。

    • 客观题配置:需手动创建config.yaml(YAML格式),避免使用评测设置界面的Bug3。

  2. 用户管理

    • 支持CSV批量导入(格式:用户名,密码,邮箱)9。

    • 角色权限:超级管理员 > 题目管理员 > 普通用户9。

  3. 系统定制

    • 修改页脚、轮播图:后台“系统配置”页面9。

    • 添加AC特效:引入confettiUtil.js,在判题结果处触发2。

⚠️ 四、常见问题解决

  • 判题失败

    • 检查GoJudge容器是否运行(端口5050)。

    • 确保JudgeServer的SANDBOX_BASE_URL指向GoJudge服务10。

  • Nacos配置无法保存:直接上传本地编辑的config.yaml文件,避免在线编辑310。

  • 测试数据路径错误:若JudgeServer部署在本地,需将测试数据同步至云服务器10。

📱 五、高级功能扩展

  1. 移动端适配:前端自动响应式布局9。

  2. VJudge集成:支持HDU/POJ/Codeforces题目拉取评测68。

  3. AI辅助:接入豆包AI解析题目错误(需额外配置)9。

  4. 比赛功能:支持ACM/OI赛制、外榜、打星队伍69。

🔧 六、运维与更新

  • 更新版本:在hoj-deploy目录执行 docker-compose pull && docker-compose up -d6。

  • 资源监控:后台仪表盘实时查看CPU/内存占用9。

💎 部署建议:首次尝试推荐Docker方案(30分钟内完成);二次开发可参考HOJ源码仓库 6。若遇复杂问题,可加社区QQ群或提交Issue。

本回答由 AI 生成,内容仅供参考,请仔细甄别。

0
0
0
肖付强
肖付强
高级天翼
高级天翼

采纳我吧!谢谢!(不是强行)

0
我要回答