这是一种将自己的电脑当作服务器来部署一个vj的方法,我也是参考前辈们的做法稍作了改动,如果在服务器上部署的话需要在细节上稍作改动:

一.什么是Virtual Judge? vj的工作原理什么?  vj有什么特点?

所谓的Virtual Judge是区别于Online Judge而言的,OJ具有自己的题库、判题终端等等,但是VJ是没有的。VJ的工作原理是把题目用爬虫抓过来,当你用VJ的账号提交题目的时候VJ会用自己在对应的OJ上的账号来提交你的代码,并抓取判题结果呈现给用户。简单来说就是你只要注册一个账号就可以在各个OJ(当然要是VJ支持的)上提交题目了。

除此之外,VJ还有几个功能很棒:

创建比赛。可以用VJ支持的那些OJ上的题目来组成一场比赛(每个人度可以加比赛,这点时很棒的),很适合大家一起做套题,或者个人刷专题使用。

实时排名。你可以按VJ说明的格式来生成一个比赛的排行榜,把这个榜和你创建的比赛挂钩之后就可以在比赛过程中实时地看到其他各个队伍的AC情况以及自己的排名。有些大 型比赛的排行榜已经有人制作好了,你只需要在设置的时候直接勾选别人创建的排行榜(也就是“比赛回放”)就行了,不必再亲自制作。

二.部署环境:ubuntu12.04

三.virtual judge 本地部署方案:

http://code.google.com/p/virtual-judge/downloads/list下载安装包(vjudge.war)
http://code.google.com/p/virtual-judge/source/browse/#svn%2Ftrunk%2Fjudge%2FMySQL-config页面下载最新的数据库文件(VIR.sql)

(当然了,上面的网址是需要FQ的,好资源都得FQ。)

在服务器上安装tomcat,jre,jdk,MySQL命令:sudo apt-get install tomcat6 openjdk-6-jre openjdk-6-jdk mysql-server-5.5 mysql-client-5.5

将安装包复制到ttop@ubuntu:/var/lib/tomcat6/webapps

重启tomcat:sudo service tomcat6 restart

修改ttop@ubuntu:/var/lib/tomcat6/webapps/vjudge/WEB-INF/目录下面的配置文件
  数据库db.properties  
  uername=root  
  jdbc.password=123456(密码随意)
  账户配置:account.conf  
  格式:oj    用户名    密码 
  (这里需要自己在各大oj注册的帐号)
  [注]:URAL提交的时候只需要用户ID,但是由于源程序中写的是PasswordList,你需要把用户ID放在密码的位置
  Codeforces源程序中提交时使用了代理,需要在服务器上放置goagent并使用tmux在后台开启,默认为127.0.0.1:8087

建立数据库并倒入刚才下载的数据库文件:

mysql -u root -p
密码:123456 
create database vhoj  
use vhoj  
source VIR.sql  
exit  
重启tomcat:sudo service tomcat6 restart

自己pc在浏览器访问:http://localhost:8080/judge/,正常显示就说明配置成功了
别的pc在浏览器访问:http://你的pc的ip:8080/judge/,便可愉快刷各大oj的题目了

四.virtual judge问题解决

当无法评判时,重启tomcat:
sudo service tomcat6 restart

1. 前期准备工作

1.1 一个Linux系统

因为现场赛的缘故,我一直使用的都是乌邦图。
这里我测试用的是ubuntu14.04 Desktop 64bit ,当然选择Server会更好一些.
系统的安装不再赘述,作为服务器请选用Server版本。

1.2 更新源

在搭建环境之前,请确保你的源是有效的,速度是给力的,
建议选择一个国内的源14.04 LTS 更新源

 
1
2
3
sudo gedit /etc/apt/sources.list 将原来的源覆盖并保存
 
最后执行 sudo apt-get update 更新源

1.3 必要文件准备

我们需要下载这几个文件(部分链接需要FQ才能访问):

1.*.sql https://gist.github.com/trcnkq/a3cf7004759d41d79eb7

2.http_client.json https://gist.github.com/trcnkq/7a5deff639ff99475138

3.remote_accounts.json https://gist.github.com/trcnkq/e9dac7eea72d2b781949

4.virtual judge源文件 https://github.com/trcnkq/virtual-judge

如果无法FQ或者链接失效,请用我的百度云链接: Vjudge搭建 (这里面包含了之后会用到的一系列文件,嫌麻烦可以都下载下来)

2. 必要环境搭建

2.1 JDK的安装和配置

首先需要下载JDK,地址:https://jdk7.java.net/download.html (之前的云盘链接内有64位的,请认准这个jdk版本)
注意系统是32位还是64位

1.) 解压下载的文件

 
1
tar -xzvf jdk1.7.0_80

2.) 移动文件夹到指定目录下

 
1
2
3
sudo mkdir /usr/lib/jvm
 
sudo mv jdk1.7.0_80/ /usr/lib/jvm/

3.) 设置环境变量

 
1
2
sudo vi /etc/profile
//在本篇文章中,建议用vi或者vim编辑文档,用gedit会报错(虽然好像没什么影响...)

在文件最后加入如下内容:

 
1
2
3
4
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

4.) 使修改生效:

 
1
2
3
4
5
sudo source /etc/profile
//如果提示source command not found
//请执行以下两步:
//sudo -s
//source /etc/profile

这时候在终端输入 java –version 查看当前 JDK 版本
至此,JDK 配置完成

2.2 Redis的安装和配置

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    1.)    下载安装Redis:
    wget http://download.redis.io/releases/redis-2.8.9.tar.gz  
    tar xvzf redis-2.8.9.tar.gz  
    cd redis-2.8.9/  
    make
    sudo make install  
    2.)    配置init脚本:
    wget https://github.com/ijonas/dotfiles/raw/master/etc/init.d/redis-server
    wget https://github.com/ijonas/dotfiles/raw/master/etc/redis.conf
    sudo mv redis-server /etc/init.d/redis-server
    sudo chmod +x /etc/init.d/redis-server
    sudo mv redis.conf /etc/redis.conf
    3.)    初始化用户和日志路径
    第一次启动Redis前,建议为Redis单独建立一个用户,并新建data和日志文件夹
    sudo useradd redis
    sudo mkdir -p /var/lib/redis
    sudo mkdir -p /var/log/redis
    sudo chown redis.redis /var/lib/redis
    sudo chown redis.redis /var/log/redis
    4.) 设置开机自动启动,关机自动关闭
    update-rc.d redis-server defaults
    5.) 启动Redis:
    /etc/init.d/redis-server start

2.3 Maven3的安装和配置

 
1
2
3
    1.)    通过apt-get安装Maven3
    ubuntu12.04之后,可直接用apt-get来获得
    sudo apt-get install maven -y

安装完后,sudo su 进入root
用 mvn –v 查看一下Maven的版本,如下图:
安装完毕后,默认的JDK版本可能会被更改。
因为Maven3安装的同时把openjdk也一并安装了。

 
1
2
3
4
5
    2.)  修改系统默认的jdk
    update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300
    update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300
    update-alternatives --config java     //请选择jdk1.7.0_80版本的jdk
    update-alternatives --config javac

使用java -version或者mvn -v再次查看,JDK版本已更改

2.4 Tomcat7的安装和配置

 
1
2
3
4
5
    1.)    apt-get安装tomcat7:
    sudo apt-get install tomcat7 -y  
    tomcat7默认会被安装在目录/var/lib/tomcat7/下,
    安装完之后在浏览器下输入localhost:8080查看是否安装成功
    如果出现下图,即为安装成功

 
1
2
3
    2.)    安装tomcat7-admin
    安装成后,我们还需要安装一个tomcat7-admin
    sudo apt-get install tomcat7-admin
 
1
2
3
4
5
6
7
8
    3.)    修改账户:
    安装完毕之后,我们进入tomcat7的conf目录下修改tomcat-users.xml文件
    cd /var/lib/tomcat7/conf/
    gedit tomcat-users.xml
    我这里用的是
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>

 
1
2
    4.)    重启tomcat:
    sudo /etc/init.d/tomcat7 restart

重新在浏览器打开tomcat界面
点击manager webapp,用刚才我们建立的用户登陆

5.) 修改JDK默认的JDK版本

  1. 检查 tomcat7 的 Server Information,版本可能不是我们自己的jdk版本。
  2. 这里我们要修改tomcat使用的JDK版本,这步很重要,否则会出现很多问题

 
1
2
3
4
5
    sudo gedit /etc/default/tomcat7
    加入如下内容:
    JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80
    再次重启tomcat7:
    sudo /etc/init.d/tomcat7 restart

OK, tomcat7的JDK版本修改完毕。

2.5 Mysql的安装

 
1
2
3
4
    sudo apt-get install mysql-server -y
    安装过程中会要求你输入数据库的密码,这里我直接用的123456,连续输入两次即可。
    进入数据库测试一下
    mysql -u root -p

至此,搭建 Virtual Judge 所需的所有环境,都已搭建完毕!

3. 工程代码实施

准备好四个文件,就是一开始下载的那四个:

3.1 Vjudge的打包

 
1
2
3
4
进入virtual-judge-master 目录:
cd virtual-judge-master/
用 Maven 将 Virtual Judge 打包:
mvn clean package

里面会有一个vjudge.war文件,就是我们打包完成的 Virtual Judge。
把这个war文件拷到tomcat7的webapps目录下。

打包的过程可能会相当长,特别是网络不好的情况下,万一掉包了,非常蛋疼,如果你不想等待太久,可以直接下载此文件,在文章开头的百度云网盘链接里.

放到webapps目录后,会自动生成一个vjudge文件夹,如果没有生成,你也可以自行解压。

3.2 remote_accounts.json文件的编辑

把各个OJ的提交账号添加到remote_accounts.json里。

3.3 config.properties文件的编辑

如不需要代理或VPN访问国外OJ,保留http_client.json里面的[“direct”]即可。

3.4 vjudge的简单部署

把 remote_accounts.json 和 http_client.json 两个文件放在指定的文件夹下
这里我放在 /var/lib/tomcat7/webapps/vjudge/ 目录下

 
1
2
    sudo mv http_client.json /var/lib/tomcat7/webapps/vjudge/
    sudo mv remote_accounts.json /var/lib/tomcat7/webapps/vjudge/

更改/webapps/vjudge/WEB-INF/classes/的目录下config.properties文件
将remote_accounts.json和http_client.json的绝对路径改为正确的路径

 
1
2
    cd /var/lib/tomcat7/webapps/vjudge/WEB-INF/classes/
    sudo gedit config.properties

PS:如果你的数据库密码不是123456,那么上面的root密码你也需要修改,默认为123456

3.5 vhoj数据库的建立

在mysql中新建一个数据库,名字为:vhoj,
并把表vhoj_20141109.sql导入(可能我的版本略微旧了点)。

 
1
2
3
    mysql -u root -p  
    create database vhoj;  
    exit;

 
1
mysql -h localhost -u root -p vhoj < vhoj_20141109.sql

 
1
sudo /etc/init.d/tomcat7 restart
 
1
2
    最后,重启tomcat7,进入manager
    查看Application,可以看到vjudge已经处于running状态了。

4. 大功告成的Vjudge

在地址栏输入localhost:8080/vjudge,进入搭建成功的vjudge:

到此为止,Virtual Judge 终于搭建成功,just enjoy it!

virtual judge 本地部署方案的更多相关文章

  1. iOS应用架构谈 本地持久化方案及动态部署

    转载: iOS应用架构谈 本地持久化方案及动态部署 前言 嗯,你们要的大招.跟着这篇文章一起也发布了CTPersistance和CTJSBridge这两个库,希望大家在实际使用的时候如果遇到问题,就给 ...

  2. ssiOS应用架构谈 本地持久化方案及动态部署

    本文转载至 http://casatwy.com/iosying-yong-jia-gou-tan-ben-di-chi-jiu-hua-fang-an-ji-dong-tai-bu-shu.html ...

  3. iOS动态部署方案

    转载: iOS动态部署方案 前言 这里讨论的动态部署方案,就是指通过不发版的方式,将新的内容.新的业务流程部署进已发布的App.因为苹果的审核周期比较长,而且苹果的限制比较多,业界在这里也没有特别多的 ...

  4. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  5. Maven项目部署方案

    以xbank项目做为应用背景,简单说明一下Maven项目的部署方案: 1.项目说明 xbank基础服务端的11个子项目均采用Maven搭建: 其中各项目功能设计如下: froad-xbank-serv ...

  6. jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战

    一. 背景 之前我们的开发流程为在本地进行webpack打包编译,然后svn提交源代码和编译后的代码.同时每次提交前也会从svn更新源代码和编译后的代码.这样做有几个缺点: 1. svn 更新和提交编 ...

  7. 升级本地部署的CRM到Dynamics 365及部分新特性介绍。

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复241或者20161226可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  8. redis从入门到放弃 -> 部署方案

    单点部署方案 环境准备: [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@ ...

  9. eql高可用部署方案

    运行环境 服务器两台(后面的所有配置案例都是以10.96.0.64和10.96.0.66为例) 操作系统CentOS release 6.2 必须要有共同的局域网网段 两台服务器都要安装keepali ...

随机推荐

  1. Home Assistant系列 -- 接入手机摄像头做实时监控和人脸识别

    准备一部废旧(土豪忽略,主要是穷)的.摄像头还是好的手机做监控设备,(Android 和iPhone都行)当Home Assistant 获得实时的视频流后,可以接入各种图像处理组件完成人脸识别,动作 ...

  2. 《nginx源代码解析》系列分享专栏

    <nginx源代码解析>系列分享专栏 解析nginx源代码,从main函数开始,一步步解读nginx运行原理,同时进行nginx第三方模块的开发,努力做到知其然,知其所以然 <ngi ...

  3. 第三章:文件I/O

    本章开始讨论UNIX系统的文件I/O函数,包括打开文件.读文件.写文件等. UNIX系统中的大多数文件I/O只需要用到5个函数:open.read.write.lseek和close.它们每执行一次都 ...

  4. CentOS 7.2重启网络报错 Failed to start LSB: Bring up/down

    CentOS 7.2重启网络报错 Failed to start LSB: Bring up/down 我的虚拟机原本有两块网卡,一块叫eno16777736,另一块叫eno5033674.本来是正常 ...

  5. pentestbox更新msf

    pentestbox成功升级msf 1.  输入 msfupdate 进行软件更新 2.  在[*] Updating gems...,软件报错,提示找不到文件路径,输入以下两条命令,尝试单独安装 g ...

  6. 20155203 实验三《敏捷开发与XP实践》实验报告

    20155203 实验三<敏捷开发与XP实践>实验报告 一.实验内容 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找 ...

  7. 2017-2018-1 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客

    2017-2018-1 20155232 <信息安全系统设计基础>第四周学习总结以及课上myod练习补充博客 课上myod练习 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...

  8. STM32的备份寄存器测试

    1. 研究STM3的备份寄存器,注意,如果要测试这个例程的话,VBAT不能和VDD接一起,必须分开. 2. 理解,备份寄存器可以有VBAT独立供电,也就是外接电池,备份寄存器在VBAT供电情况下,如果 ...

  9. idea开启jquery提示及如何找到学习目标

    idea开启jquery提示 根据这些library就知道该学习哪些技术了

  10. 八月暑期福利,10本Python热门书籍免费送!

    八月第一周,网易云社区联合博文视点为大家带来Python专场送书福利,10本关于Python的书籍内容涉及Python入门.绝技.开发.数据分析.深度学习.量化投资等.以下为书籍简介,送书福利请见文末 ...