搭建vijos(vj4)

Yemaster

2020-03-21 14:17:17

Personal

## 目录 - 前言 - 准备 - 安装必备软件 - 开始安装 - 首先克隆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,替换成自己的即可 待续。。。