2019最新最全HUSTOJ本地及雲端服務器搭建(基於騰訊雲服務器)

  在剛接觸ACM的時候,對於那些在線測評的網站很感興趣,就在網上搜索了一下,在Github上發現了一個有趣的項目,而後在 Github 上獲取 了HUST OJ 的開源項目代碼,根據網上的教程踩了無數的坑終於安裝成功了!!!!! 接下來就和你們分享一下個人安裝過程,請務必看完這幾段話在動手安裝,看完保證你能成功安裝~php

 

若你想在本地搭建HUSTOJ:Ubuntu14.04STL+Apache2+Mysql5.2+php5(則直接從目錄開始看起)css

若想在基於雲端服務器搭建HUSTOJ:騰訊雲服務器+Ubuntu14.04STL+Apache2+Mysql5.2+php5+Xshell6+WinSCPhtml

  首先你須要一個雲服務器,我是用了騰訊雲的服務器,固然你也能夠採用阿里雲,不過若是你是在校大學生的話,騰訊雲有專門針對大學生的優惠政策,1個月的服務器使用權+2年的域名只需13元!!如下是連接:https://cloud.tencent.com/act/campus?utm_source=qcloud&utm_medium=head&utm_campaign=campusmysql

如何購買一個服務器?如何使用一個服務器?如何建立一個本身的域名呢?git

請見B站視頻:https://www.bilibili.com/video/av16553814?from=search&seid=3802848284159475301,我以爲這個視頻很是適合小白入門!裏面也詳細講述瞭如何使用Xshell6和WinSCP,以及這兩個軟件的做用。那你搭好本身的服務器之後,固然你服務器內的系統最好也設成ubuntu14.04,接下去的步驟就和在本地搭建HUSTOJ同樣了!惟一的區別在於第六步中,若你是在本地搭建的HUSTOJ,則在瀏覽器中輸入http://localhost,若是你是在雲端服務器搭建的HUSTOJ,則在瀏覽器中輸入你本身的域名網址就ok了。github

 

 

目錄web

HUSTOJ(2019)在線判題系統在本地及雲端服務器的搭建sql

  1、配置LAMP環境shell

  2、安裝HUSTOJ數據庫

  3、管理數據庫

  4、在線配置OJ

  5、OJ優化(去除廣告)

  6、將Judge中的Web文件轉移至 /var/www/html 中(成敗的關鍵)


1、配置環境

(1)什麼是LAMP呢?

  LAMP指的是L:Linux操做系統(本文采用的Ubuntu14.04)。A:Apache2HTTP服務器 M:MySQL5.2數據庫軟件。 P:PHP5.0

(2)配置過程

  1)若是不是root權限的話先切換成root權限  

   sudo -i

  2)更新系統配置

   apt-get update

  3)安裝MySQL-server、mysql-client

   apt-get install mysql-server mysql-client

    在這一步的安裝過程當中,會彈出窗口,那是系統請求你設定數據庫密碼,這個密碼很是重要,數據庫的默認帳號爲root

  4)安裝phpmyadmin

   apt-get install phpmyadmin

   安裝過程當中會跳出彈窗,只須要按空格,再按回車便可而後會彈出窗口,要求輸入密碼,即輸入數據庫密碼並設定登陸密碼,建議與數據庫密碼相同,方便記憶

  5)安裝subversion  

   apt-get install subversion  

至此環境已經配置成功,接下來就是下載OJ以及安裝文件安裝文件。

 

2、安裝HUSTOJ

(1)根據你的Linux系統版本進行選擇安裝

  ubuntu 14.04: 

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu14.04.sh
sudo bash install-ubuntu14.04.sh

  ubuntu 16.04:  

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu16+.sh
sudo bash install-ubuntu16+.sh

 

3、管理數據庫

(1)進入數據庫

 

mysql -u root -p

 

(2)數據庫操做

show databases;        --查看數據庫 use jol; --進入jol數據庫 insert into privilege(user_id,rightstr) values('123456','administrator');--建立管理員帳號123456

  該操做中將帳號爲123456的用戶設置爲了超級管理員,能夠管理OJ的大部分功能,好比導入導出題目、修改公告等等!,因此在最後搭建OJ成功後,記得先註冊一個帳號爲123456的用戶號,方便管理!!!

 

4、配置OJ

(1)/home/judge/src/web/include   目錄下的db_info.inc.php文件

<?php @session_start();
    ini_set("display_errors","Off");  //set this to "On" for debugging  ,especially when no reason blank shows up.
    ini_set("session.cookie_httponly", 1);   
    header('X-Frame-Options:SAMEORIGIN');
//for people using hustoj out of China , be careful of the last two line of this file !
// connect db 
static     $DB_HOST="localhost";
static     $DB_NAME="jol";
static     $DB_USER="root";
static     $DB_PASS="root";
//上面四行中若是沒有問題就不要動,都是默認好的。可能數據庫帳戶密碼不是root,這點並不影響。
//16.04安裝可能數據庫帳戶密碼爲空,若是爲空,帳戶填寫爲 root 密碼填寫 本身設置的。
//若是須要改寫的話必定要用vim或者vi打開
static     $OJ_NAME="HUSTOJ";
static     $OJ_HOME="./";
static     $OJ_ADMIN="root@localhost";
static     $OJ_DATA="/home/judge/data";
static     $OJ_BBS="discuss3";//"bbs" for phpBB3 bridge or "discuss" for mini-forum
static  $OJ_ONLINE=false;
static  $OJ_LANG="en";
static  $OJ_SIM=false; 
static  $OJ_DICT=false;
static  $OJ_LANGMASK=0; //1mC 2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason to mask all other language
static  $OJ_EDITE_AREA=true;//true: syntax highlighting is active
static  $OJ_ACE_EDITOR=true;
static  $OJ_AUTO_SHARE=false;//true: One can view all AC submit if he/she has ACed it onece.
static  $OJ_CSS="white.css";
static  $OJ_SAE=false; //using sina application engine
static  $OJ_VCODE=false;
static  $OJ_APPENDCODE=false;
static  $OJ_CE_PENALTY=false;
static  $OJ_PRINTER=false;
static  $OJ_MAIL=false;
static  $OJ_MEMCACHE=false;
static  $OJ_MEMSERVER="127.0.0.1";
static  $OJ_MEMPORT=11211;
static  $OJ_REDIS=false;
static  $OJ_REDISSERVER="127.0.0.1";
static  $OJ_REDISPORT=6379;
static  $OJ_REDISQNAME="hustoj";
static  $SAE_STORAGE_ROOT="http://hustoj-web.stor.sinaapp.com/";
static  $OJ_TEMPLATE="bs3"; //使用的默認模板
if(isset($_GET['tp'])) $OJ_TEMPLATE=$_GET['tp'];
static  $OJ_LOGIN_MOD="hustoj";
static  $OJ_REGISTER=true; //容許註冊新用戶
static  $OJ_REG_NEED_CONFIRM=false; //新註冊用戶須要審覈
static  $OJ_NEED_LOGIN=false; //須要登陸才能訪問
static  $OJ_RANK_LOCK_PERCENT=0; //比賽封榜時間比例
static  $OJ_SHOW_DIFF=false; //是否顯示WA的對比說明
static  $OJ_TEST_RUN=false; //提交界面是否容許測試運行
static  $OJ_BLOCKLY=false; //是否啓用Blockly界面
static  $OJ_ENCODE_SUBMIT=false; //是否啓用base64編碼提交的功能,用來回避WAF防火牆誤攔截。
//static  $OJ_EXAM_CONTEST_ID=1000; // 啓用考試狀態,填寫考試比賽ID
//static  $OJ_ON_SITE_CONTEST_ID=1000; //啓用現場賽狀態,填寫現場賽比賽ID
static $OJ_OPENID_PWD = '8a367fe87b1e406ea8e94d7d508dcf01';
/* weibo config here */
static  $OJ_WEIBO_AUTH=false;
static  $OJ_WEIBO_AKEY='1124518951';
static  $OJ_WEIBO_ASEC='df709a1253ef8878548920718085e84b';
static  $OJ_WEIBO_CBURL='http://192.168.0.108/JudgeOnline/login_weibo.php';
/* renren config here */
static  $OJ_RR_AUTH=false;
static  $OJ_RR_AKEY='d066ad780742404d85d0955ac05654df';
static  $OJ_RR_ASEC='c4d2988cf5c149fabf8098f32f9b49ed';
static  $OJ_RR_CBURL='http://192.168.0.108/JudgeOnline/login_renren.php';
/* qq config here */
static  $OJ_QQ_AUTH=false;
static  $OJ_QQ_AKEY='1124518951';
static  $OJ_QQ_ASEC='df709a1253ef8878548920718085e84b';
static  $OJ_QQ_CBURL='192.168.0.108';
//if(date('H')<5||date('H')>21||isset($_GET['dark'])) $OJ_CSS="dark.css";
if( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'],"zh-CN")) {
        $OJ_LANG="cn";
}
if (isset($_SESSION[$OJ_NAME.'_'.'OJ_LANG'])) $OJ_LANG=$_SESSION[$OJ_NAME.'_'.'OJ_LANG'];
require_once(dirname(__FILE__)."/pdo.php");
        // use db
    //pdo_query("set names utf8");    
        
    if(isset($OJ_CSRF)&&$OJ_CSRF&&$OJ_TEMPLATE=="bs3"&&basename($_SERVER['PHP_SELF'])!="problem_judge")
         require_once('csrf_check.php');
    //sychronize php and mysql server with timezone settings, dafault setting for China
    //if you are not from China, comment out these two lines or modify them.
    //date_default_timezone_set("PRC");
    //pdo_query("SET time_zone ='+8:00'");
?>

 

(2)/home/judge/etc   目錄下的  judge.conf文件

OJ_HOST_NAME=127.0.0.1
OJ_USER_NAME=root
OJ_PASSWORD=root
OJ_DB_NAME=jol
OJ_PORT_NUMBER=3306
OJ_RUNNING=1
OJ_SLEEP_TIME=1
OJ_TOTAL=1
OJ_MOD=0
OJ_JAVA_TIME_BONUS=2
OJ_JAVA_MEMORY_BONUS=64
OJ_JAVA_XMS=-Xms64M
OJ_JAVA_XMX=-Xmx128M
OJ_SIM_ENABLE=0
OJ_HTTP_JUDGE=0
OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline
OJ_HTTP_USERNAME=IP
OJ_HTTP_PASSWORD=admin
OJ_REDISENABLE=0
OJ_REDISSERVER=127.0.0.1
OJ_REDISPORT=6379
OJ_REDISAUTH=123456
OJ_REDISQNAME=hustoj
OJ_OI_MODE=1
OJ_SHM_RUN=1
OJ_USE_MAX_TIME=1
OJ_LANG_SET=0,1,2,3,4,5,6,7,8,9,10,11
OJ_COMPILE_CHROOT=1
OJ_TURBO_MODE=0
OJ_CPU_COMPENSATION=1.0

 

5、OJ優化

(1)修改公告

sudo chown www-data -R /home/judge/src/web

(2)去除廣告

  首頁的廣告是在 /home/judge/src/web/template/bs3下中的js.php文件中,修改相應內容便可。

 

6、將Judge中的Web文件轉移至 /var/www/html 中(成敗的關鍵)

(1)將web中的文件放入apache網站顯示文件夾中

mv /home/judge/src/web/ /var/www/html/

(2)若在本地搭建則在瀏覽器中輸入 http://localhost,若在雲端服務器則輸入你本身的域名便可。

若出現如下界面,則恭喜你已成功搭建HUSTOJ

 

 

 

以上就是我的搭建HUSTOJ的詳細過程,如有錯誤,請聯繫我修正!!!

相關文章
相關標籤/搜索