Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/YAVGroup/Verilog-OJ
Online judge server for Verilog | verilogoj.ustc.edu.cn
https://github.com/YAVGroup/Verilog-OJ
Last synced: 4 days ago
JSON representation
Online judge server for Verilog | verilogoj.ustc.edu.cn
- Host: GitHub
- URL: https://github.com/YAVGroup/Verilog-OJ
- Owner: YAVGroup
- License: agpl-3.0
- Created: 2020-03-13T10:16:21.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-06-25T17:57:20.000Z (5 months ago)
- Last Synced: 2024-08-03T01:39:46.582Z (3 months ago)
- Language: Vue
- Homepage:
- Size: 4.65 MB
- Stars: 74
- Watchers: 10
- Forks: 11
- Open Issues: 51
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Verilog-OJ
[![Github Actions Test Status](https://github.com/lluckydog/Verilog-OJ/workflows/Test/badge.svg)](https://github.com/lluckydog/Verilog-OJ/actions)
[![Coverage Status](https://coveralls.io/repos/github/lluckydog/Verilog-OJ/badge.svg?branch=master)](https://coveralls.io/github/lluckydog/Verilog-OJ?branch=master)Verilog OJ 是面向数字电路学习和实践的在线评测平台。
## 许可协议
本软件(不包括题目、讨论、新闻等用户生成内容,服务器配置等必要限度的自定义内容,以及第三方库等另有授权的程序组件)采用 [第三版 GNU Affero 通用公共许可证](https://www.gnu.org/licenses/agpl-3.0.html) 。
同时,向我们提交代码,意味着您同意我们将您的代码部署至位于(或服务于)中国科学技术大学的实例上,该实例可能在未来与仓库中的版本存在不同。
## 开发环境部署指南
下文以 Ubuntu 20.04.1 LTS 为例进行说明。
需要的依赖:
- Python 3
- ~~请注意,PyPI 上目前没有 Python 3.8 预编译的 Pandas 软件包,您可能需要安装 Cython, g++ 等再进行 pip install 操作,否则可能出现错误。~~ (Bumped Pandas to 1.1.4)
- NodeJS & NPM (需要选择支持 package-lock.json 功能的 NPM 版本,过旧的版本请不要使用)
- RabbitMQ 消息中间件
- 此项用于后端向判题服务传递消息,是 Celery 的依赖
- 请用 apt 安装并部署> 目前判题脚本中 pyDigitalWaveTools 的版本还没有迁移,请参考 [Judger 中的说明](judger/test/README.md) 部署 libreliu 魔改的 pyDigitalWaveTools 版本。
大致过程:
```bash
# Update repo to latest
sudo apt update && sudo apt upgrade# Install essential software
sudo apt install build-essential rabbitmq-server yosys nodejs npm python3-virtualenv iverilog
sudo systemctl start rabbitmq-servergit clone https://github.com/lluckydog/Verilog-OJ
cd Verilog-OJ
# 以下采用 venv 虚拟环境,以确保 python 包的版本不会和主环境冲突
# 也可以采用 anaconda 等达成这一目的
# 请确保知道这一部分的含义
virtualenv venv
. venv/bin/activatecd backend
# 安装 python 依赖
python -m pip install -r requirements.txtcd frontend
# 建议先把 npm 源切换为淘宝源,此处略
npm install .cd ../backend
# 设置一些必须的环境变量
# *Must READ*
# 如果不用 Docker 判题环境,就需要将 backend/settings/dev.py 中的 'use_docker' 修改正确
# 否则会报缺少一些 Docker 相关的环境变量VERILOG_OJ_DEV=TRUE python manage.py migrate
# 此处创建您测试环境的超级用户的用户名和密码
# 在后台管理界面也会用到,请妥善保管
VERILOG_OJ_DEV=TRUE python manage.py createsuperuser
```这样就基本部署完成了。
### 运行前端
```bash
cd frontend
npm run serve
```会弹出 Webpack 的分析界面(端口 8888),这并不是我们的前端界面
前端界面通过 `http://localhost:8080/` 访问
每次运行后端和判题服务器前,先确保自己处在之前创建的虚拟环境内,以 venv 为例,如果不在:
```bash
source venv/bin/activate
```### 运行后端
```bash
cd backend
VERILOG_OJ_DEV=TRUE python manage.py runserver
```### 运行判题服务器
```bash
cd backend
# Make sure your rabbitmq have started.
# If not, use systemctl start rabbitmq-server
# (use systemctl enable to start on system boot)
VERILOG_OJ_DEV=TRUE celery -A judge worker -l INFO
```### 题目导入
以上步骤进行完毕后,可以导入题目,进行开发环境的部署测试、
在后端运行的前提下,打开 http://127.0.0.1:8000/oj/admin-django/problem/problem/import_yaml
逐个复制粘贴仓库目录下 assets 内的资源文件内容,提交,即可在前端看到题目
## 生产环境部署指南
> 针对 Git commit 00ee2a51,内容可能有落后之处。
1. 首先确保有 Docker 和 Docker Compose(`sudo apt install docker.io docker-compose`),然后换国内源,最后启动 daemon(`sudo systemctl start docker`)
2. 生产环境相关的值都统一维护在 `.env` 中了,按需编辑
3. 将 `judger-env` 镜像打包好
> 可以进 `./deploy` 然后 `docker build . -f Dockerfile.judge-env --build-arg USE_APT_MIRROR=yes --build-arg USE_PIP_MIRROR=yes -t judger-env:v1`
4. `docker-compose up`
5. 第一次的时候,记得手动进 backend 容器,进行一下 `python manage.py migrate` 和 `python manage.py createsuperuser` 的操作,详情参考上面开发环境的指南### 数据备份和回复
TBD
### 负载均衡
目前还没啥需求,一台机器而且用户量最高也不会超过几百的小打小闹就不上 swarm 或者 k8s 这种容器编排系统了。