这是一种将自己的电脑当作服务器来部署一个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. Java ConcurrentHashMap 源代码分析

    Java ConcurrentHashMap jdk1.8 之前用到过这个,但是一直不清楚原理,今天抽空看了一下代码 但是由于我一直在使用java8,试了半天,暂时还没复现过put死循环的bug 查了 ...

  2. Office 365部分安装及同时安装Visio的方法

    From MWeb Win版本的Office 365安装包默认安装所有组件,没有选择的页面,在安装Office 365后再安装下载的Visio 2016专业版时,会显示计算机上已经安装了即插即用Off ...

  3. C语言——第一章,1.4程序开发过程

    1.4程序开发过程 一,开发过程 1,分析问题,设计一种解决问题的途径(方案)★ 2,写出源代码 (*.c) 3,编译→(连接)   *.obj→(*.exe) 4,运行*.exe (可执行程序) 二 ...

  4. C# typeof() 和 GetType()区是什么

    1.typeof(x)中的x,必须是具体的类名.类型名称等,不可以是变量名称. 2.GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof() ...

  5. Java基础——NIO(一)通道与缓冲区

    一.概述 1.什么是NIO NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 在Java ...

  6. 20155232 2016-2017-2 《Java程序设计》第1周学习总结

    20155232 2016-2017-2 <Java程序设计>第1周学习总结 认真学习考核方式,理解成绩构成 100分构成: 翻转课堂考核12次(60分) 实验5次(15分) 团队项目(2 ...

  7. 20155302 实验三 敏捷开发与XP实践

    20155302 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验内容及步骤 (一)编码标准 在IDEA中使用工具(Code->Reformate Code)把代码重 ...

  8. 再装虚拟机及git

    再装虚拟机及git 问题1:在假期的学习中并没有上传代码的习惯,到了开学要用到的时候发现新建的目录无法git到码云上,当时也没有在意,直到老师问我要代码链接才意识到这个问题. 问题2:在按照老师的博客 ...

  9. 20155334 2016-2017-2 《Java程序设计》第四周学习总结

    20155334 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 第六章:继承与多态 继承:面对对象中,子类继承父类,避免重复的行为定义 extends表示会 ...

  10. echarts 去掉上面的小图标

    在option里找到toolbox,删除对应的代码即可: toolbox: { y : -30, show : true, feature : { mark : '辅助线开关', markUndo : ...