> 文章列表 > HOJ项目部署(前后端及其判题机)

HOJ项目部署(前后端及其判题机)

HOJ项目部署(前后端及其判题机)

HOJ项目部署

采用的是后端DataBackup和JudgeServer和前端在本地部署,判题机GoJudge在云服务器部署

1 项目准备

1.1 拉取HOJ项目到本地

项目拉取地址:

https://gitee.com/himitzh0730/hoj.git

1.2 项目包结构解读

HOJ项目部署(前后端及其判题机)

包结构解读:

  • hoj-springboot包为项目后端
    HOJ项目部署(前后端及其判题机)

    • api包为项目所需pojo
    • DataBackup包为项目后端业务模块
    • JudgeServer包为判题机
  • hoj-vue包为项目前端Vue

  • sandbox包为沙箱判题机,使用的是go-judge

  • sqlAndsetting包为数据库文件和nacos配置文件

2 后端部署DataBackup

2.1 环境准备

1)项目基本数据导入

HOJ项目部署(前后端及其判题机)

2)Nacos环境配置

运行nacos.sql文件创建好naos数据库后,在数据库的users表中修改nacos的用户名和密码,由于nacos密码为加密后的密码,下面给出字符串“nacos”的加密后对应的字符串

 $2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu

HOJ项目部署(前后端及其判题机)

HOJ项目部署(前后端及其判题机)

修改nacos的配置文件,在conf文件夹内的application.properties里解开对应行的注释

HOJ项目部署(前后端及其判题机)

配置完成后访问http://192.168.200.1:8848/nacos/index.html,账号密码均为nacos。

HOJ项目部署(前后端及其判题机)

出现以上内容为配置成功

2.2 修改配置

HOJ项目部署(前后端及其判题机)

1)修改application-prod.yml

HOJ项目部署(前后端及其判题机)

修改application-prod.yml中的judge-token。将nacos中的judge-token配置copy到application-prod.yml中,否则会自动生成

HOJ项目部署(前后端及其判题机)

HOJ项目部署(前后端及其判题机)

2)修改bootstrap.yml

HOJ项目部署(前后端及其判题机)

3)修改上传文件路径

HOJ项目部署(前后端及其判题机)

HOJ项目部署(前后端及其判题机)

不修改会出现上传题目错误

2.3 启动环境

1)检查Redis、Nacos是否启动

HOJ项目部署(前后端及其判题机)

2)启动服务器

HOJ项目部署(前后端及其判题机)

出现以下信息为启动成功

HOJ项目部署(前后端及其判题机)

3 前端部署hoj-vue

3.1 环境准备

1)下载Node.js

https://nodejs.org/zh-cn/download/

2)配置环境变量

HOJ项目部署(前后端及其判题机)

3)验证是否安装成功

查看node.js版本

node -v

3.2 启动项目

1)npm项目依赖组件安装

cmd进入前端vue项目的根目录(hoj/hoj-vue),输入命令

cnpm install

会根据前端项目的依赖关系下载好相关的组件,存在项目目录的node_modules文件夹下。

注意:一般git库会gitignore依赖组件,没有node_modules文件夹,这个文件夹太大,一般不push

2)npm项目编译

第一次启动需要编译,后续再启动,只需要进行第三步启动项目

cmd进入前端vue项目的根目录(hoj/hoj-vue),输入命令

npm run build

此时会对根目录下的package.json对build命令的定义进行编译,一般"build" = “webpack -p”。

3)启动项目:

cmd进入前端vue项目的根目录(hoj/hoj-vue),输入命令

npm run serve

HOJ项目部署(前后端及其判题机)

出现以上内容,为启动成功

4 部署GoJudge判题机

4.1 安装yum

sudo apt-get update
sudo apt-get install yum

4.2 安装Docker

sudo apt-get updatesudo apt-get install \\apt-transport-https \\ca-certificates \\curl \\gnupg \\lsb-releasecurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho \\"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \\$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io

4.3 安装git命令

sudo apt-get install git
sudo apt-get update

4.4 拉取GoJudge代码到云服务器

git clone https://github.com/criyle/go-judge.git

4.5 根据Dockerfile拉取了gojudge镜像(不需要)

docker build -f ./Dockerfile.exec -t go-Judge

4.6 根据镜像创建容器

docker run -d -it --rm --privileged --shm-size=256m -p 5050:5050 -p 5051:5051 criyle/executorserver -enable-grpc

查看进程是否存在

netstat -anp | grep 5050
netstat -anp | grep 5051

HOJ项目部署(前后端及其判题机)

4.7 进入容器内安装编译环境

查看容器名

docker ps

进入容器

docker exec -it [容器名] /bin/bash

容器内安装gcc/g++ 编译环境

# 更新安装 apt
apt-get update
apt update
apt install gcc
apt install g++

5 部署JudgeServer

修改SandBoxRun中的SANBOX_BASE_URL

HOJ项目部署(前后端及其判题机)

修改后可以进行判题。整个项目到此部署完毕。

卫生巾品牌排行