Ubuntu 14.04 下 Virtual Judge 的搭建

  1. 前期準備工作

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

——————————————分割線——————————————

  1. 必要環境搭建

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

Ubuntu 14.04 下 Virtual Judge 的搭建

4.) 使修改生效:

sudo source /etc/profile

這時候在終端輸入 java –version 查看當前 JDK 版本
至此,JDK 配置完成
Ubuntu 14.04 下 Virtual Judge 的搭建

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也一并安裝了。
Ubuntu 14.04 下 Virtual Judge 的搭建

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查看是否安裝成功
如果出現下圖,即為安裝成功
Ubuntu 14.04 下 Virtual Judge 的搭建

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"/>

Ubuntu 14.04 下 Virtual Judge 的搭建

4.) 重啟tomcat:

sudo /etc/init.d/tomcat7 restart

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

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

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

Ubuntu 14.04 下 Virtual Judge 的搭建

sudo vim /etc/default/tomcat7

加入如下內容:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

再次重啟tomcat7:

sudo /etc/init.d/tomcat7 restart

Ubuntu 14.04 下 Virtual Judge 的搭建
OK, tomcat7的JDK版本修改完畢。

2.5 Mysql的安裝

sudo apt-get install mysql-server -y
安裝過程中會要求你輸入數據庫的密碼,這里我直接用的123456,連續輸入兩次即可。

進入數據庫測試一下
mysql -u root -p
輸入密碼之后如果看到下圖,表明 mysql 成功安裝:
Ubuntu 14.04 下 Virtual Judge 的搭建

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

  1. 工程代碼實施

準備好四個文件,就是一開始下載的那四個:
這里寫圖片描述

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文件夾,如果沒有生成,你也可以自行解壓。
Ubuntu 14.04 下 Virtual Judge 的搭建

3.2 remote_accounts.json文件的編輯

把各個OJ的提交賬號添加到remote_accounts.json里。

3.3 config.properties文件的編輯

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

Ubuntu 14.04 下 Virtual Judge 的搭建

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

Ubuntu 14.04 下 Virtual Judge 的搭建

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

3.5 vhoj數據庫的建立

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

mysql -u root -p  
create database vhoj;  
exit; 

Ubuntu 14.04 下 Virtual Judge 的搭建

mysql -h localhost -u root -p vhoj < vhoj_20141109.sql
Ubuntu 14.04 下 Virtual Judge 的搭建

最后,重啟tomcat7,進入manager
查看Application,可以看到vjudge已經處于running狀態了。
Ubuntu 14.04 下 Virtual Judge 的搭建

  1. 大功告成的Vjudge

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

Ubuntu 14.04 下 Virtual Judge 的搭建

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536165.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536165.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536165.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BitMap的原理介紹與實現

BitMap 位圖&#xff08;bitmap&#xff09;是一種非常常用的結構&#xff0c;在索引&#xff0c;數據壓縮等方面有廣泛應用。位圖是通過將數組下標與應用中的一些值關聯映射&#xff0c;數組中該下標所指定的位置上的元素可以用來標識應用中值的情況&#xff08;是否存在或者數…

MySQL與PHP連接

1、mysql_connect()-建立數據庫連接 格式&#xff1a; resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]]) 例&#xff1a; $conn mysql_connect("localhost", "username", "pa…

QML Profiler性能優化教程

QML Profiler 2018年1月26日 vincent 對于一個程序的開發&#xff0c;性能優化是開發中的一個重要步驟。 我們肯定不希望開發出來的程序表現出卡頓&#xff0c;最好是處處流暢&#xff0c;絲滑般的體驗。 對于C程序&#xff0c;我們有很多方法可以做性能優化&#xff0c;例如…

uburntu在不能自動獲取網絡時的聯網設置

一&#xff1a;網絡基礎配置 1. eth0設置不正確&#xff0c;導致無法正常啟動&#xff0c;修改eth0配置文件就好 ubuntu 12.04的網絡設置文件是/etc/network/interfaces&#xff0c;打開文件&#xff0c;會看到 auto lo iface lo inet loopback 這邊的設置是本地回路。在后…

計算機顯卡知識普及

顯卡知識普及 一、什么是顯卡&#xff1f; 顯示接口卡&#xff08;Video card&#xff0c;Graphics card&#xff09;、顯示器配置卡簡稱為顯卡&#xff0c;是個人電腦基本組成部分之一。 用途是將計算機系統所需要的顯示信息進行轉換驅動&#xff0c;并向顯示器提供信號&…

整除的尾數

Problem Description 一個整數&#xff0c;只知道前幾位&#xff0c;不知道末二位&#xff0c;被另一個整數除盡了&#xff0c;那么該數的末二位該是什么呢&#xff1f; Input 輸入數據有若干組&#xff0c;每組數據包含二個整數a&#xff0c;b(0<10000,10<b<100)&…

QML 控件大全

QML TypeContainerDelayButtonDialDialogButtonBoxDialogDrawerMenuMenuBarOverlayPageIndicatorRangeSliderScrollViewSpinBoxStackViewSwipeViewSwitchTabBarToolBarToolSeparatorToolTipTumbler QML Type 本篇主要介紹QtQuick Controls 2,Qt Creator 5.10 1.Container im…

斐波那契的整除

Description 已知斐波那契數列有如下遞歸定義&#xff0c;f(1)1,f(2)1, 且n>3,f(n)f(n-1)f(n-2)&#xff0c;它的前幾項可以表示為1&#xff0c; 1&#xff0c;2 &#xff0c;3 &#xff0c;5 &#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34…&#xff0c;現在的…

Qt與QML的枚舉綁定(C++枚舉)

Qt到QML的枚舉綁定 QML中是不支持c的枚舉類型的&#xff0c;所以我們可以使用Qt的元對象系統&#xff0c;即MOS,來幫助我們實現。 進行綁定的好處就是&#xff0c;以后數據發生變化的時候&#xff0c;就是枚舉發生增加修改&#xff0c;添加等的時候&#xff0c;不需要在QML中…

深入理解Qt的.pro文件

深入理解Qt的pro文件模板變量生成目錄生成的應用程序名編譯選項目標文件目錄包含頭文件包含源文件包含資源文件附加頭文件包含鏈接庫預編譯宏平臺相關性處理指定來自ui文件位置指定界面翻譯文本列表指定圖標 深入理解Qt的.pro文件 一般Qt項目我們是使用Qt Creator自動生成的&…

Ubuntu 用vsftpd 配置FTP服務器

最近開學&#xff0c;有好多課程結束后都需要將文件考到優盤里&#xff0c;而本人又有健忘的毛病&#xff0c;經常忘記帶優盤&#xff0c;所以就搭建了自己的ftp服務器&#xff0c;也算是用技術放松自己吧。閑話少敘&#xff0c;進入正題&#xff1a; 網上關于ftp搭建的文章很…

linux的程序打包deb

deb安裝包 deb是Unix系統(其實主要是Linux)下的安裝包&#xff0c;基于 tar 包&#xff0c;因此本身會記錄文件的權限(讀/寫/可執行)以及所有者/用戶組。 由于 Unix 類系統對權限、所有者、組的嚴格要求&#xff0c;而 deb 格式安裝包又經常會涉及到系統比較底層的操作&#…

利用pyinstaller打包python3程序

pyInstaller是一款用于將pyhon程序打包成exe文件的工具&#xff0c;pyInstaller不是一個python的包&#xff0c; 只需要把pyInstaller的文件下載下來放到任意為止都可以&#xff0c;也就是說pyInstaller相當于獨立出來專門干打包python的工具&#xff0c;這貨是工具不是庫&…

C++11新特性之左值右值及移動語句與完美轉發

C左值右值左值和右值的由來什么是左值和右值左值右值的本質引用左值引用右值引用 移動語句與完美轉發移動語句實現移動構造函數和轉移賦值函數stdmove完美轉發Perfect Forwarding C左值右值 自從C11發布之后&#xff0c;出現了一個新的概念&#xff0c;即左值和右值&#xf…

nginx中的nginx.conf.default配置

#運行用戶 user nobody; #啟動進程,通常設置成和cpu的數量相等 worker_processes 1;#全局錯誤日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;#工作模式及連接數上限 events {…

C++11新特性之泛型編程與模板

模板泛型編程函數模板普通函數模板成員函數模板函數模板重載模板函數的特化 類模板類模板中的成員函數模板類模板的特化與偏特化類模板成員特化 模板 Template所代表的泛型編程是C語言中的重要組成部分。 泛型編程 泛型編程&#xff08;Generic Programming&#xff09;是…

WordPress更改“固定鏈接”后 頁面404原因及解決方法(Nginx版)

網上盛傳的方法是&#xff1a; 在 /etc/nginx/nginx.conf文件的 loction / {} 中添加 if (-f $request_filename/index.html){rewrite (.*) $1/index.html break; }if (-f $request_filename/index.php){rewrite (.*) $1/index.php; }if (!-f $request_filename){rewrite (.*…

C++類型萃取之type_traits和type_info

類型萃取類型判斷typeiddecltype和declvalenable_if 類型萃取 通過type_traits可以實現在編譯期計算、查詢、判斷、轉換和選擇&#xff0c;增強了泛型編程的能力&#xff0c;也增強了我們程序的彈性&#xff0c;讓我們能夠在編譯期就能夠優化改進甚至排錯&#xff0c;進一步提…

使用Phpstorm實現遠程開發

Phpstorm除了能直接打開本地文件之外&#xff0c;還可以連接FTP&#xff0c;除了完成正常的數據傳遞任務之外&#xff0c;還可以進行本地文件與服務端文件的異同比較&#xff0c;同一文件自動匹配目錄上傳&#xff0c;下載&#xff0c;這些功能是平常IDE&#xff0c;FTP軟件中少…

什么是遞歸函數?

文章目錄遞歸函數遞歸例題特點效率優點遞歸函數 遞歸 遞歸就是一個函數在它的函數體內調用它自身。執行遞歸函數將反復調用其自身&#xff0c;每調用一次就進入新的一層。遞歸函數必須有結束條件。 當函數在一直遞推&#xff0c;直到遇到墻后返回&#xff0c;這個墻就是結束條…