基于Spring Boot+MyBatis+Mysql后端,React+antd前端的玩具级oj系统。
具有基本的oj功能,用户功能,后台管理以及评论区功能,使用language server protocol实现代码的自动补全。
✅ oj基础功能
✅ 管理员后台
✅ 评论区
✅ 代码自动补全
⬜ 分布式的判题端
⬜ docker快速部署
⬜ 数据分析
language server对于本项目是可选的
- 建议使用Linux系统部署整个项目,其中判题端必须部署在Linux上
- Java 17+
- Mysql 5.7+
- Maven 3.8+(可选,用于打包后端项目)
- Nodejs(可选,用于language server和编译前端)
- 各个oj支持的语言所需的编译器或运行环境
- 各个oj支持的语言所对应的language server
本项目采用前后端分离的架构,需要一个http服务器提供前端文件以及判题服务器所需文件的请求响应,以及提供一些反代服务。该文档使用nginx提供该服务
新建一个toj.conf文件置于nginx目录下的conf.d文件夹
将项目内nginx目录下的各个文件夹放在配置内指定的目录
将项目内的toj.sql放在合适的目录
执行以下命令还原toj.sql文件
mysql -u 数据库用户名 -p 数据库密码 < toj.sql文件路径
该备份数据包含管理员用户(用户名admin,密码adminadmin),一个普通用户(用户名toddwu,密码toddtodd)以及少量预设数据和问题供测试
使用maven打包toj项目,或直接使用release内打包好的jar包
cd toj
mvn package
在jar包所在目录新建一个application.yml文件并按注释提示编辑配置
#数据库配置
spring:
datasource:
url: jdbc:mysql://数据库地址:数据库端口/oj #修改数据库地址和端口为实际值
username: root #数据库用户名
password: toddwu7066 #数据库密码
driver-class-name: com.mysql.jdbc.Driver
#无需修改
mybatis:
configuration:
map-underscore-to-camel-case: true #开启下划线(value_name)命名转驼峰(valueName)命名
#后端服务器地址配置(spring boot配置)
server:
address: localhost
#判题服务器地址、端口配置
judge-server:
address: localhost
port: 9000
后台启动后端服务器jar包
nohup java -jar toj-0.0.1-SNAPSHOT.jar 1> log.out 2> error.out &
安装所需的语言环境
使用maven打包toj_judge项目,或直接使用release内打包好的jar包
cd toj_judge
mvn package
在jar包所在目录新建一个application.yml文件并按照注释提示编辑配置
#判题服务器配置(spring boot配置)
server:
port: 9000
address: 0.0.0.0
#后端服务器的的地址和端口
backend-server:
address: localhost
port: 8080
#nginx的的地址和端口(判题端需要从此下载题目的验证和答案文件)
nginx-server:
address: localhost
port: 80
后台运行jar包
nohup java -jar Judger-0.0.1-SNAPSHOT.jar 1> log.out 2> error.out &
由于每种编程语言都需要安装相应的语言服务器(Language Server),因此我们将这一部分的详细信息单独列在了语言服务器文档中。请查阅该文档以获取更多关于语言服务器的信息。
将release内的放到nginx配置的目录即可
如果需要自己编译或者调试
第一次编译或调试时,在toj_frontend目录下
npm install
往后,如果需要编译,则
npm run build
编译完成后,会在同目录下生成dist文件夹
如果需要调试,则
npm run dev