- 前期準備工作
1.1 一個Linux系統
因為現場賽的緣故,我一直使用的都是ubuntu。
這里我測試用的是Ubuntu14.04 Desktop 64bit ,當然選擇Server會更好一些.
系統的安裝不再贅述,作為服務器請選用Server版本。
1.2 更新源
在搭建環境之前,請確保你的源是有效的,速度是給力的,
建議選擇一個國內的源14.04 LTS 更新源
sudo vim /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搭建
或者:
——————————————分割線——————————————
FTP地址:ftp://ftp1.linuxidc.com
用戶名:ftp1.linuxidc.com
密碼:www.linuxidc.com
在 2015年LinuxIDC.com\9月\Ubuntu 14.04 下 Virtual Judge 的搭建
下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm
——————————————分割線——————————————
- 必要環境搭建
2.1 JDK的安裝和配置
首先需要下載JDK,地址:https://jdk7.java.net/download.html
注意系統是32位還是64位
1.) 解壓下載的文件
tar -xzvf jdk1.7.0_80
2.) 移動文件夾到指定目錄下
sudo mkdir /usr/lib/jvm
sudo mv jdk1.7.0_80/ /usr/lib/jvm/
3.) 設置環境變量
sudo vim /etc/profile
在文件最后加入如下內容:
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.) 使修改生效:
sudo source /etc/profile
這時候在終端輸入 java –version 查看當前 JDK 版本
至此,JDK 配置完成
2.2 Redis的安裝和配置
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.) 通過apt-get安裝Maven3
ubuntu12.04之后,可直接用apt-get來獲得
sudo apt-get install maven -y
安裝完后,進入sudo su 進入root
用 mvn –v 查看一下Maven的版本,如下圖:
安裝完畢后,默認的JDK版本可能會被更改。
因為Maven3安裝的同時把openjdk也一并安裝了。
2.) 修改系統默認的jdk
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300update-alternatives --config java
update-alternatives --config javac
使用java -version再次查看,JDK版本已更改
Ubuntu 14.04 下 Virtual Judge 的搭建
2.4 Tomcat7的安裝和配置
1.) apt-get安裝tomcat7:
sudo apt-get install tomcat7 -y
tomcat7默認會被安裝在目錄/var/lib/tomcat7/下,
安裝完之后在瀏覽器下輸入localhost:8080查看是否安裝成功
如果出現下圖,即為安裝成功
2.) 安裝tomcat7-admin
安裝成后,我們還需要安裝一個tomcat7-admin
sudo apt-get install tomcat7-admin
3.) 修改賬戶:
安裝完畢之后,我們進入tomcat7的conf目錄下修改tomcat-users.xml文件
cd /var/lib/tomcat7/conf/
vim tomcat-users.xml
我這里用的是
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
4.) 重啟tomcat:
sudo /etc/init.d/tomcat7 restart
重新在瀏覽器打開tomcat界面
點擊manager webapp,用剛才我們建立的用戶登陸
5.) 修改JDK默認的JDK版本
檢查 tomcat7 的 Server Information,版本可能不是我們自己的jdk版本。
這里我們要修改tomcat使用的JDK版本,這步很重要,否則會出現很多問題
sudo vim /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的安裝
sudo apt-get install mysql-server -y
安裝過程中會要求你輸入數據庫的密碼,這里我直接用的123456,連續輸入兩次即可。
進入數據庫測試一下
mysql -u root -p
輸入密碼之后如果看到下圖,表明 mysql 成功安裝:
至此,搭建 Virtual Judge 所需的所有環境,都已搭建完畢!
- 工程代碼實施
準備好四個文件,就是一開始下載的那四個:
3.1 Vjudge的打包
進入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/ 目錄下
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的絕對路徑改為正確的路徑
cd /var/lib/tomcat7/webapps/vjudge/WEB-INF/classes/
sudo vim config.properties
PS:如果你的數據庫密碼不是123456,那么上面的root密碼你也需要修改,默認為123456
3.5 vhoj數據庫的建立
在mysql中新建一個數據庫,名字為:vhoj,
并把表vhoj_20141109.sql導入(可能我的版本略微舊了點)。
mysql -u root -p
create database vhoj;
exit;
mysql -h localhost -u root -p vhoj < vhoj_20141109.sql
最后,重啟tomcat7,進入manager
查看Application,可以看到vjudge已經處于running狀態了。
- 大功告成的Vjudge
在地址欄輸入localhost:8080/vjudge,進入搭建成功的vjudge:
到此為止,Virtual Judge 終于搭建成功,just enjoy it!