Skip to content

SingularityLab-SWUFE/SWUFE-OJ-Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SWUFE-OJ 后端

GitHub commit activity

GitHub last commit

技术栈: Python3.12 + Django 4.2 + MySQL 8.0.21 + Redis + Docker

在线文档: gitbook

主要 features:

  • 前后端分离项目
  • 支持虚拟远程评测(vjudge), 包括 HDU, Codeforces 等主流平台
  • 题解/讨论区

依赖

pip install -r requirements.txt

配置

oj/oj 里设置环境变量文件 .env, 指定使用的数据库, OJ公有账号等相关私密配置, 示例如下

SECRET_KEY=
# dev database
SQL_DEV_DB_NAME=
SQL_DEV_DB_USERNAME=
SQL_DEV_DB_PASSWORD=
# test database
SQL_TEST_DB_NAME=
SQL_TEST_DB_USERNAME=
SQL_TEST_DB_PASSWORD=
SQL_SERVER_HOST=
SQL_PORT=3306
# public account
HDU_ACCOUNT=
HDU_PASSWORD=

如有其它配置, 请在 oj/oj/settings.py 中进行修改

建立本地测评机

按照评测机文档指示建立 Docker image, 运行 JudgeServer 容器.

注意: 你需要正确配置好 docker-compose.yml 文件, 否则评测机服务不能正常运行.

volumes:
    - $PWD/tests/test_case:/test_case:ro
    - $PWD/log:/log
    # - $PWD/server:/code:ro
    - $PWD/run:/judger
environment:
    - BACKEND_URL=http://backend:80/api/judge_server_heartbeat
    - SERVICE_URL=http://judge-server:12358
    - TOKEN=YOUR_TOKEN_HERE

然后在 SWUFE-OJ 的配置中设定好

JUDGE_SERVER_TOKEN=
JUDGE_SERVER_HOST=
JUDGE_SERVER_PORT=
JUDGE_SERVER_USER=
TEST_CASE_DIR=
JUDGE_SERVER_TEST_CASE_DIR=

同时配置好后端服务器和评测机服务器之间的 SSH 连接. 参考如下:

  1. 评测机服务器生成 rsa 公私钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

之后会让你设置密钥的名称(默认是 id_rsa), 以及 passphrase(SSH 连接的密码), 这里我们设置密码为空.

  1. 评测机服务器将公钥 id_rsa.pub 拷贝到评测机服务器的 authorized_keys 文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  1. 评测机服务器将密钥 id_rsa 拷贝到后端服务器的 ~/.ssh 目录下, 并设置权限
chmod 600 ~/.ssh/id_rsa
  1. 后端服务器添加评测机的 known_hosts
ssh-keyscan remote >> ~/.ssh/known_hosts

测试一下 rsync 是否正常工作

rsync -r README.md root@remote:/www/bar/

一些开发上的约束

  • 按已有框架开发, 例如视图采用 CBV, Restful API
  • 规范化提交
  • Pull Request 需要经过单元测试检验以及 Code Review

生成 changelog 采用 eslint 格式

conventional-changelog -p eslint -i CHANGELOG.md -s

鸣谢

感谢下面的开源项目为 SWUFE-OJ 提供的参考

Developed by SingularityLab

About

Backend of SWUFE online judge platform

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors