## 目录
- 前言
- 准备
- 安装必备软件
- 开始安装
- 首先克隆vj4和jd4
- 安装vj4
- 安装jd4
- 后续配置
- 配置smtp
## 前言
Vijos 全称为 Velocious Informatics Judge Online System (高效信息学在线评测系统),简写为 VJ,于 2005 年建立。Vijos 致力于为用户提供安全、完善、开放的在线评测和题目交流等服务。Vijos 拥有一套官方题库和与之相关的配套服务,当您直接访问 Vijos 时即为访问官方题库。Vijos 还提供在线评测托管功能(Online Judge As A Service),被称作为域(Domain),用户可在 Vijos 上快速建立起自己的在线评测系统,拥有独立的访问地址、独立的题库和相关的配套服务。
Vijos 由服务端和评测机组成,均在 GitHub 上开源,因此您还可以在自己的服务器上部署 Vijos 提供在线评测服务。
Vijos 由非营利性组织 Vijos Foundation 管理和运营。
由于vijos好看,又开源,所以打算折腾一下,搞一个vijos
## 准备
系统:Ubuntu 18.04 LTS
### 安装必备软件
```bash
# 安装python
sudo apt install python3 python3-pip python3-dev
# 安装mongodb
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
sudo apt install gnupg
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt update
sudo apt install -y mongodb-org
sudo systemctl start mongod
# 安装nodejs
sudo apt install nodejs npm
sudo npm install -f n
sudo n stable
# 安装rabbitMQ
sudo apt-get install erlang-nox
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt update
sudo apt-get install rabbitmq-server
# 安装git
sudo apt install git
```
## 开始安装
### 1. 首先克隆vj4和jd4
```bash
git clone https://github.com/vijos/vj4.git
git clone https://github.com/vijos/jd4.git
```
### 2. 安装vj4
```bash
cd vj4
python3 -m pip install -r requirements.txt
sudo npm install
```
IP Geo-Location这东西装不装无所谓,装比较麻烦,反正我没装
```bash
sudo npm run build
python3 -m vj4.server --debug --listen http://0.0.0.0:8888
```
这个时候浏览器输入`http://ip:8888`就能访问了。
创建管理员账号
```bash
python3 -m vj4.model.user add -1 yemaster 12345
[email protected] # 创建一个id=-1,用户名=yemaster,密码=12345,邮箱
[email protected]的用户
python3 -m vj4.model.user set_superadmin -1 #将id=-1的用户设为管理员
```
新建一道题目
```bash
python -m vj4.model.adaptor.problem add system "题目标题" "题目内容" -1 1000
```
### 3. 安装jd4
先新建一个judge用户
```bash
python3 -m vj4.model.user add -2 judge 123456
[email protected]
```
给他judge权限
```bash
python3 -m vj4.model.user set_judge -2
```
安装docker
```bash
sudo apt -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt update
sudo apt -y install docker-ce docker-ce-cli containerd.io
```
配置文件内容
```
cd ~/jd4
vim examples/config.yaml # 服务器地址最好填真实ip,我之前填的是0.0.0.0,docker就一直连不上。下面的就是judge用户的配置信息
mkdir -p ~/.config/jd4
cp examples/config.yaml ~/.config/jd4/
ln -sr examples/langs.yaml ~/.config/jd4/
```
build cython
```
python3 setup.py build_ext --inplace
```
运行docker容器
```
docker run --privileged \
-v ~/.config/jd4/config.yaml:/root/.config/jd4/config.yaml \
-v ~/.cache/jd4:/root/.cache/jd4 \
vijos/jd4
```
然后评测鸡就正常运行了。
## 后续配置
### 1. 配置smtp
不配置smtp就注册不了。
```bash
cd vj4 #进入vj4
cd vj4 #确实有两个
cd service
vim mailer.py
```
中间有配置smtp服务器的代码
```python
options.define('smtp_host', default='', help='SMTP server')
options.define('smtp_port', default=465, help='SMTP server')
options.define('smtp_user', default='', help='SMTP username')
options.define('smtp_password', default='', help='SMTP password')
options.define('mail_from', default='', help='Mail from')
```
正常人一般都能看懂。
- smtp_host就是smtp的服务器地址。网易的就是smtp.163.com
- smtp_port就是smtp服务器端口,基本都是465
- smtp_user就是smtp授权的用户
- smtp_password就是授权密码
- mail_from就是发件人邮箱
### 2.配置url
```bash
cd vj4 #进入vj4
cd vj4
vim app.py
```
`options.define('url_prefix', default='这里改成你的地址', help='URL prefix.')`
### 3.配置OJ名字
```bash
cd vj4 #进入vj4
cd vj4
cd handler
vim base.py
```
```bash
cd vj4
cd vj4
cd model
vim builtin.py
```
找到所有的Vijos,替换成自己的即可
待续。。。