• 2019最新最全HUSTOJ本地及云端服务器搭建(基于腾讯云服务器)


      在刚接触ACM的时候,对于那些在线测评的网站很感兴趣,就在网上搜索了一下,在Github上发现了一个有趣的项目,然后在 Github 上获取 了HUST OJ 的开源项目代码,根据网上的教程踩了无数的坑终于安装成功了!!!!! 接下来就和大家分享一下我的安装过程,请务必看完这几段话在动手安装,看完保证你能成功安装~

    若你想在本地搭建HUSTOJ:Ubuntu14.04STL+Apache2+Mysql5.2+php5(则直接从目录开始看起)

    若想在基于云端服务器搭建HUSTOJ:腾讯云服务器+Ubuntu14.04STL+Apache2+Mysql5.2+php5+Xshell6+WinSCP

      首先你需要一个云服务器,我是用了腾讯云的服务器,当然你也可以采用阿里云,不过如果你是在校大学生的话,腾讯云有专门针对大学生的优惠政策,1个月的服务器使用权+2年的域名只需13元!!以下是链接:https://cloud.tencent.com/act/campus?utm_source=qcloud&utm_medium=head&utm_campaign=campus

    如何购买一个服务器?如何使用一个服务器?如何创建一个自己的域名呢?

    请见B站视频:https://www.bilibili.com/video/av16553814?from=search&seid=3802848284159475301,我觉得这个视频非常适合小白入门!里面也详细讲述了如何使用Xshell6和WinSCP,以及这两个软件的作用。那你搭好自己的服务器以后,当然你服务器内的系统最好也设成ubuntu14.04,接下去的步骤就和在本地搭建HUSTOJ一样了!唯一的区别在于第六步中,若你是在本地搭建的HUSTOJ,则在浏览器中输入http://localhost,如果你是在云端服务器搭建的HUSTOJ,则在浏览器中输入你自己的域名网址就ok了。

    目录

    HUSTOJ(2019)在线判题系统在本地及云端服务器的搭建

      一、配置LAMP环境

      二、安装HUSTOJ

      三、管理数据库

      四、在线配置OJ

      五、OJ优化(去除广告)

      六、将Judge中的Web文件转移至 /var/www/html 中(成败的关键)


    一、配置环境

    (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以及安装文件安装文件。

    二、安装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

    三、管理数据库

    (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的用户号,方便管理!!!

    四、配置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

    五、OJ优化

    (1)修改公告

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

    (2)去除广告

      首页的广告是在 /home/judge/src/web/template/bs3下中的js.php文件中,修改相应内容即可。

    六、将Judge中的Web文件转移至 /var/www/html 中(成败的关键)

    (1)将web中的文件放入apache网站显示文件夹中

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

    (2)若在本地搭建则在浏览器中输入 http://localhost,若在云端服务器则输入你自己的域名即可。

    若出现以下界面,则恭喜你已成功搭建HUSTOJ

    以上就是个人搭建HUSTOJ的详细过程,若有错误,请联系我修正!!!

  • 相关阅读:
    2018_10_15 堆栈内存
    2018_10_14 java 环境 win10
    2018_09_21 ftp 安装
    2018_09_21 myeclipse git插件
    转 iOS开发中一些常见的并行处理
    转【iOS设计】一款APP从设计稿到切图过程概述
    算法题
    iOS -copy-mutableCopy- NSHashTable -NSMapTable-Keychain
    转--iOS下JS与原生OC互相调用
    ReactiveCocoa
  • 原文地址:https://www.cnblogs.com/XDU-Lakers/p/10483731.html
Copyright © 2020-2023  润新知