virtual judge 本地部署方案


這是一種將自己的電腦當作服務器來部署一個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)

(當然了,上面的網址是需要翻牆的,好資源都得翻牆。)

在服務器上安裝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.3 必要文件准備

我們需要下載這幾個文件(部分鏈接需要FQ才能訪問):

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

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

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

4virtual 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.解壓下載的文件

2.) 移動文件夾到指定目錄下

3.) 設置環境變量

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

4.) 使修改生效:

這時候在終端輸入 java –version 查看當前 JDK 版本
至此,JDK 配置完成

2.2 Redis的安裝和配置

2.3 Maven3的安裝和配置

安裝完后,sudo su 進入root
用 mvn –v 查看一下Maven的版本,如下圖:
安裝完畢后,默認的JDK版本可能會被更改。
因為Maven3安裝的同時把openjdk也一並安裝了。

此處輸入圖片的描述

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

此處輸入圖片的描述

2.4 Tomcat7的安裝和配置

此處輸入圖片的描述

重新在瀏覽器打開tomcat界面
點擊manager webapp,用剛才我們建立的用戶登陸

此處輸入圖片的描述

5.修改JDK默認的JDK版本

  1. 檢查 tomcat7 的 Server Information,版本可能不是我們自己的jdk版本。
  2. 這里我們要修改tomcat使用的JDK版本,這步很重要,否則會出現很多問題

此處輸入圖片的描述

此處輸入圖片的描述

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

2.5 Mysql的安裝

此處輸入圖片的描述

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

3. 工程代碼實施

准備好四個文件,就是一開始下載的那四個:
此處輸入圖片的描述

3.1 Vjudge的打包

里面會有一個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/ 目錄下

更改/webapps/vjudge/WEB-INF/classes/的目錄下config.properties文件
將remote_accounts.json和http_client.json的絕對路徑改為正確的路徑

此處輸入圖片的描述

PS:如果你的數據庫密碼不是123456,那么上面的root密碼你也需要修改,默認為123456

3.5 vhoj數據庫的建立

在mysql中新建一個數據庫,名字為:vhoj,
並把表vhoj_20141109.sql導入(可能我的版本略微舊了點)。

此處輸入圖片的描述

此處輸入圖片的描述

此處輸入圖片的描述

4. 大功告成的Vjudge

在地址欄輸入localhost:8080/vjudge,進入搭建成功的vjudge:

此處輸入圖片的描述

到此為止,Virtual Judge 終於搭建成功,just enjoy it!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM