在刚接触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权限  

  1.    sudo -i

  2)更新系统配置

  1. apt-get update

  3)安装MySQL-server、mysql-client

  1. apt-get install mysql-server mysql-client

    在这一步的安装过程中,会弹出窗口,那是系统请求你设定数据库密码,这个密码非常重要,数据库的默认账号为root

  4)安装phpmyadmin

  1. apt-get install phpmyadmin

   安装过程中会跳出弹窗,只需要按空格,再按回车即可然后会弹出窗口,要求输入密码,即输入数据库密码并设定登录密码,建议与数据库密码相同,方便记忆

  5)安装subversion  

   apt-get install subversion 

至此环境已经配置成功,接下来就是下载OJ以及安装文件安装文件。

二、安装HUSTOJ

(1)根据你的Linux系统版本进行选择安装

  ubuntu 14.04: 

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

  ubuntu 16.04:  

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

三、管理数据库

(1)进入数据库

  1. mysql -u root -p

(2)数据库操作

  1. show databases; --查看数据库
  2. use jol; --进入jol数据库
  3. insert into privilege(user_id,rightstr)
  4. values('','administrator');--创建管理员账号123456

  该操作中将账号为123456的用户设置为了超级管理员,可以管理OJ的大部分功能,比如导入导出题目、修改公告等等!,所以在最后搭建OJ成功后,记得先注册一个账号为123456的用户号,方便管理!!!

四、配置OJ

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

  1. <?php @session_start();
  2. ini_set("display_errors","Off"); //set this to "On" for debugging ,especially when no reason blank shows up.
  3. ini_set("session.cookie_httponly", );
  4. header('X-Frame-Options:SAMEORIGIN');
  5. //for people using hustoj out of China , be careful of the last two line of this file !
  6. // connect db
  7. static $DB_HOST="localhost";
  8. static $DB_NAME="jol";
  9. static $DB_USER="root";
  10. static $DB_PASS="root";
  11. //上面四行中如果没有问题就不要动,都是默认好的。可能数据库账户密码不是root,这点并不影响。
  12. //16.04安装可能数据库账户密码为空,如果为空,账户填写为 root 密码填写 自己设置的。
  13. //如果需要改写的话一定要用vim或者vi打开
  14. static $OJ_NAME="HUSTOJ";
  15. static $OJ_HOME="./";
  16. static $OJ_ADMIN="root@localhost";
  17. static $OJ_DATA="/home/judge/data";
  18. static $OJ_BBS="discuss3";//"bbs" for phpBB3 bridge or "discuss" for mini-forum
  19. static $OJ_ONLINE=false;
  20. static $OJ_LANG="en";
  21. static $OJ_SIM=false;
  22. static $OJ_DICT=false;
  23. static $OJ_LANGMASK=; //1mC 2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason to mask all other language
  24. static $OJ_EDITE_AREA=true;//true: syntax highlighting is active
  25. static $OJ_ACE_EDITOR=true;
  26. static $OJ_AUTO_SHARE=false;//true: One can view all AC submit if he/she has ACed it onece.
  27. static $OJ_CSS="white.css";
  28. static $OJ_SAE=false; //using sina application engine
  29. static $OJ_VCODE=false;
  30. static $OJ_APPENDCODE=false;
  31. static $OJ_CE_PENALTY=false;
  32. static $OJ_PRINTER=false;
  33. static $OJ_MAIL=false;
  34. static $OJ_MEMCACHE=false;
  35. static $OJ_MEMSERVER="127.0.0.1";
  36. static $OJ_MEMPORT=;
  37. static $OJ_REDIS=false;
  38. static $OJ_REDISSERVER="127.0.0.1";
  39. static $OJ_REDISPORT=;
  40. static $OJ_REDISQNAME="hustoj";
  41. static $SAE_STORAGE_ROOT="http://hustoj-web.stor.sinaapp.com/";
  42. static $OJ_TEMPLATE="bs3"; //使用的默认模板
  43. if(isset($_GET['tp'])) $OJ_TEMPLATE=$_GET['tp'];
  44. static $OJ_LOGIN_MOD="hustoj";
  45. static $OJ_REGISTER=true; //允许注册新用户
  46. static $OJ_REG_NEED_CONFIRM=false; //新注册用户需要审核
  47. static $OJ_NEED_LOGIN=false; //需要登录才能访问
  48. static $OJ_RANK_LOCK_PERCENT=; //比赛封榜时间比例
  49. static $OJ_SHOW_DIFF=false; //是否显示WA的对比说明
  50. static $OJ_TEST_RUN=false; //提交界面是否允许测试运行
  51. static $OJ_BLOCKLY=false; //是否启用Blockly界面
  52. static $OJ_ENCODE_SUBMIT=false; //是否启用base64编码提交的功能,用来回避WAF防火墙误拦截。
  53. //static $OJ_EXAM_CONTEST_ID=1000; // 启用考试状态,填写考试比赛ID
  54. //static $OJ_ON_SITE_CONTEST_ID=1000; //启用现场赛状态,填写现场赛比赛ID
  55. static $OJ_OPENID_PWD = '8a367fe87b1e406ea8e94d7d508dcf01';
  56. /* weibo config here */
  57. static $OJ_WEIBO_AUTH=false;
  58. static $OJ_WEIBO_AKEY='';
  59. static $OJ_WEIBO_ASEC='df709a1253ef8878548920718085e84b';
  60. static $OJ_WEIBO_CBURL='http://192.168.0.108/JudgeOnline/login_weibo.php';
  61. /* renren config here */
  62. static $OJ_RR_AUTH=false;
  63. static $OJ_RR_AKEY='d066ad780742404d85d0955ac05654df';
  64. static $OJ_RR_ASEC='c4d2988cf5c149fabf8098f32f9b49ed';
  65. static $OJ_RR_CBURL='http://192.168.0.108/JudgeOnline/login_renren.php';
  66. /* qq config here */
  67. static $OJ_QQ_AUTH=false;
  68. static $OJ_QQ_AKEY='';
  69. static $OJ_QQ_ASEC='df709a1253ef8878548920718085e84b';
  70. static $OJ_QQ_CBURL='192.168.0.108';
  71. //if(date('H')<5||date('H')>21||isset($_GET['dark'])) $OJ_CSS="dark.css";
  72. if( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'],"zh-CN")) {
  73. $OJ_LANG="cn";
  74. }
  75. if (isset($_SESSION[$OJ_NAME.'_'.'OJ_LANG'])) $OJ_LANG=$_SESSION[$OJ_NAME.'_'.'OJ_LANG'];
  76. require_once(dirname(__FILE__)."/pdo.php");
  77. // use db
  78. //pdo_query("set names utf8");
  79.  
  80. if(isset($OJ_CSRF)&&$OJ_CSRF&&$OJ_TEMPLATE=="bs3"&&basename($_SERVER['PHP_SELF'])!="problem_judge")
  81. require_once('csrf_check.php');
  82. //sychronize php and mysql server with timezone settings, dafault setting for China
  83. //if you are not from China, comment out these two lines or modify them.
  84. //date_default_timezone_set("PRC");
  85. //pdo_query("SET time_zone ='+8:00'");
  86. ?>

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

  1. OJ_HOST_NAME=127.0.0.1
  2. OJ_USER_NAME=root
  3. OJ_PASSWORD=root
  4. OJ_DB_NAME=jol
  5. OJ_PORT_NUMBER=
  6. OJ_RUNNING=
  7. OJ_SLEEP_TIME=
  8. OJ_TOTAL=
  9. OJ_MOD=
  10. OJ_JAVA_TIME_BONUS=
  11. OJ_JAVA_MEMORY_BONUS=
  12. OJ_JAVA_XMS=-Xms64M
  13. OJ_JAVA_XMX=-Xmx128M
  14. OJ_SIM_ENABLE=
  15. OJ_HTTP_JUDGE=
  16. OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline
  17. OJ_HTTP_USERNAME=IP
  18. OJ_HTTP_PASSWORD=admin
  19. OJ_REDISENABLE=
  20. OJ_REDISSERVER=127.0.0.1
  21. OJ_REDISPORT=
  22. OJ_REDISAUTH=
  23. OJ_REDISQNAME=hustoj
  24. OJ_OI_MODE=
  25. OJ_SHM_RUN=
  26. OJ_USE_MAX_TIME=
  27. OJ_LANG_SET=,,,,,,,,,,,
  28. OJ_COMPILE_CHROOT=
  29. OJ_TURBO_MODE=
  30. OJ_CPU_COMPENSATION=1.0

五、OJ优化

(1)修改公告

  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网站显示文件夹中

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

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

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

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

2019最新最全HUSTOJ本地及云端服务器搭建(基于腾讯云服务器)的更多相关文章

  1. 怎样将本地web数据库项目部署到腾讯云服务器上?

    怎样将本地web数据库项目 部署到腾讯云服务器上? 1.本地计算机的工作: 1.1用eclipse或者myeclipse做好一个web项目,可以只做一个数据库的增删改查,本地部署到Tomcat服务器, ...

  2. 2019最新最全Java开发面试常见问题答案总结

    2019最新最全Java开发面试常见问题答案总结 马上准备9月份出去面试Java开发,自己学习丢西瓜捡芝麻,学了的都忘了,所以有机会自己做个学习笔记,摘录自各个博文以及总结. 1.JAVA面向对象的特 ...

  3. 怎样将本地web项目部署到腾讯云服务器上?

    怎样将本地web项目部署到腾讯云服务器上? 1.本地计算机的工作: (1).用eclipse新建一个web项目,然后在webcontent下新建一个index.html,然后在本地部署到Tomcat服 ...

  4. 本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效)

    本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效) 随着业务量的增加,本地的ES集群服务器性能和磁盘空间有点不够使用,项目组考虑使用腾讯云服务器,以下是我测试的使用_reindex ...

  5. web前端面试题 -- 2019最新,最全

    最近在找工作,面试了好多家公司,结果都不怎么理想.要么公司环境氛围不行,要么工资达不到理想的薪资.大部分公司对程序员的面试流程几乎都一样,来了先填一份登记表,写一套面试题,然后技术面,人事面.至于有的 ...

  6. 腾讯云服务器 离线安装最新稳定版MariaDB 10.2.6

    数据库方面我们一般都是使用mysql,由于前段时间我们切换到了MariaDB后,当然生产环境也要更着变,谁叫oracle是个碧池呢! mariaDB主要有三种安装方式 源码安装,有点繁琐,不推荐 yu ...

  7. 2019最新WEB全栈架构师第八期视频教程

    下载链接:https://www.yinxiangit.com/117.html

  8. 应用360云盘与SVN版本管理服务器搭建基于云端的版本控制软件

    步骤一:(安装软件) 1.TortoiseSVN 2.VisualSVN-Server-2.71 3.安装云盘客户端360wangpan_setup 步骤二:(VisualSVN Server设置) ...

  9. Java代码在本地运行没有问题。上传到阿里云服务器后。出现了中文乱码解决

    java -Dfile.encoding=UTF-8 -jar project.jar

随机推荐

  1. ACM-ICPC 2018 沈阳赛区网络预赛 K题

    题目链接: https://nanti.jisuanke.com/t/31452 AC代码(看到不好推的定理就先打表!!!!): #include<bits/stdc++.h> using ...

  2. saltstack系列~第二篇

    一 简介:今天咱们来继续学习saltstack 二 命名和分组 1 命名规则 1 ID构成 机房-DB类型-角色(主/从)-IP地址 2 分组构成  分为master slave两组即可 2 分组规则 ...

  3. python - class类 (七) 三大特性 - 封装 结尾

    封装: # 封装 #第一层,类就是麻袋,本身就是一种封装 #第二层,类中定义私有的,至在类的内部使用,外部无法访问 #第三层,封装在于明确区分内外,使得类实现者可以修改封装内的东西二不影响外部调用者 ...

  4. python函数——形参中的:*args和**kwargs

    python函数——形参中的:*args和**kwargs   多个实参,放到一个元组里面,以*开头,可以传多个参数:**是形参中按照关键字传值把多余的传值以字典的方式呈现 *args:(表示的就是将 ...

  5. Python3 Win下安装 scipy

    没有利用Anaconda安装python库时可能遇到一些问题,例如直接 pip3 install scipy 可能报错,安装失败.原因是Scipy的安装需要依赖MKL库,官方的Numpy不包含MKL, ...

  6. UML和模式应用4:初始阶段(2)--需求科目之进化式需求

    1. 前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: UP每个阶段包括 业务建模.需求.设计等科目: 需求是UP科目之一,在初始阶段需求科目的工作量占据较大的部分.但是初始阶段的 ...

  7. ASP.NET Core Identity 实战(3)认证过程

    如果你没接触过旧版Asp.Net Mvc中的 Authorize 或者 Cookie登陆,那么你一定会疑惑 认证这个名词,这太正式了,这到底代表这什么? 获取资源之前得先过两道关卡Authentica ...

  8. apache httpd.conf

    Apache的主配置文件:/etc/httpd/conf/httpd.conf 默认站点主目录:/var/www/html/ Apache服务器的配置信息全部存储在主配置文件/etc/httpd/co ...

  9. python 生成器与协程

    生成器在迭代中以某种方式生成下一个值并且返回和next()调用一样的东西. 挂起返回出中间值并多次继续的协同程序被称作生成器. 语法上讲,生成器是一个带yield语句的函数.一个函数或者子程序只返回一 ...

  10. 004_i686和x86_64的区别

    找回TCL隐藏分区(转载) 用Wubi安装 Ubuntu 出现(Initranfs)问题的解决方案 i686和x86_64的区别 2009-04-11 08:19:31|  分类: 电脑问题 |  标 ...