最新的2019踩坑搭建过程请看这里 -->  点这里

2018-记一次基于Ubuntu 16.04的HUSTOJ在线判题系统的搭建

关于hustoj的搭建教程 网上有很多很多

而且开源的hustoj现在已经 几乎是 傻瓜式安装

但是今天早上还是搞了四个多小时 还重装了一次系统才搭建好。。。。。尴尬

之所以这么久 主要是网上的教程都太老了 大部分都是2017年的 甚至还有2015年的  有些步骤完全不一样了

踩了好多坑。。。。。。整个过程嘛   主要是熟悉了一些Linux操作(其实也没熟悉多少。。。。

然后就是搭建起来了   感觉有些成就感(其实东西都是开源的。。。。胡乱一装就好了

反正就是这样  娱乐为主 搭着玩  下面记录下过程

如何安装

我这里用的是腾讯云服务器(本来准备用阿里云,但是腾讯不要钱~~),装的是Ubuntu 16.04的系统

1、打开终端 键入

sudo apt-get update

作用是升级Ubuntu软件库

(如有root身份 可以省略sudo)

2、(安装subversion)

sudo apt-get install subversion

3、然后从svn获取hustoj  键入

sudo svn co https://github.com/zhblue/hustoj/trunk/trunk/install hustoj

4、进入hustoj目录

cd hustoj

5、自动安装HUSTOJ系统

注意 这里 网上很多教程说输入

sudo bash install-interactive.sh

但是新版的hustoj位置已经变了   大家根据自己的系统版本去选择  我这里选的是

sudo bash install-ubuntu16+.sh

然后就可以 自己安装了 这个过程需要几分钟

6、安装过程中会让你配置数据库 如果让你写数据库名字那就写 root

数据库密码自己写一个 但是一定要记住

7、安装完OJ后,如果你是本地搭建 直接本地浏览器输入http://127.0.0.1

我这里用的是腾讯云服务器  所以直接直接输入http://公网IP 就可以访问了

8、然后进去申请一个账号用admin作为用户名注册一个用户,自动成为管理员。

当然也可以申请一个普通账户  再手动添加管理权限

下面讲一下如何添加管理权限

随便注册一个账户 后     在终端键入

mysql -u root -p -A

输入密码    进入数据库

了解一个操作:ctrl+d  退出数据库管理

进去后  查看已有的数据库列表   键入

show databases;

注意  末尾有分号

输入后  会出现(当时忘记截图了  网上找的图)

如果出现的不是这个  请检查前面步骤

选择jol 键入

use jol;

为 root账户 添加管理员权限

insert into privilege(user_id,rightstr) values('root','administrator');

接下来就是oj的系统配置

hustoj有两个配置文件,互相独立,分别供core和web使用。

core(judged/judge_client)使用的配置文件是judge.conf,内容如下

注意core没有识别引号和注释的能力,所以不要自行增加任何引号或注释,否则可能影响judged启动,下面的解释仅做阅读,不能放入配置文件。

judge.conf

OJ_HOST_NAME=127.0.0.1 如果用mysql连接读取数据库,数据库的主机地址
OJ_USER_NAME=root 数据库帐号
OJ_PASSWORD=root 数据库密码
OJ_DB_NAME=jol 数据库名称
OJ_PORT_NUMBER=3306 数据库端口
OJ_RUNNING=4 judged会启动judge_client判题,这里规定最多同时运行几个judge_client
OJ_SLEEP_TIME=5 judged通过轮询数据库发现新任务,轮询间隔的休息时间,单位秒
OJ_TOTAL=1 老式并发处理中总的judged数量
OJ_MOD=0 老式并发处理中,本judged负责处理solution_id按照TOTAL取模后余数为几的任务。
OJ_JAVA_TIME_BONUS=2 Java等虚拟机语言获得的额外运行时间。
OJ_JAVA_MEMORY_BONUS=512 Java等虚拟机语言获得的额外内存。
OJ_SIM_ENABLE=0 是否使用sim进行代码相似度的检测
OJ_HTTP_JUDGE=0 是否使用HTTP方式连接数据库,如果启用,则前面的HOST_NAME等设置忽略。
OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline 使用HTTP方式连接数据库的基础地址,就是OJ的首页地址。
OJ_HTTP_USERNAME=admin 使用HTTP方式所用的用户帐号(HTTP_JUDGE权限),该帐号登录时不能启用VCODE图形验证码,但可以登录成功后启用。
OJ_HTTP_PASSWORD=admin 密码
OJ_OI_MODE=0 是否启用OI模式,即无论是否出错都继续判剩余的数据,在ACM比赛中一旦出错就停止运行。
OJ_SHM_RUN=0 是否使用/dev/shm的共享内存虚拟磁盘来运行答案,如果启用能提高判题速度,但需要较多内存。
OJ_USE_MAX_TIME=1 是否使用所有测试数据中最大的运行时间作为最后运行时间,如果不启用则以所有测试数据的总时间作为超时判断依据。

db_info.inc.php

db_info.inc.phpstatic  $DB_HOST="localhost";  数据库的服务器地址
static  $DB_NAME="jol";        数据库名
static  $DB_USER="root";       数据库用户名
static  $DB_PASS="root";       数据库密码// connect db
static  $OJ_NAME="HUSTOJ";      OJ的名字,将取代页面标题等位置HUSTOJ字样。
static  $OJ_HOME="./";          OJ的首页地址
static  $OJ_ADMIN="root@localhost"; 管理员email
static  $OJ_DATA="/home/judge/data"; 测试数据所在目录,实际位置。
static  $OJ_BBS="discuss";//"bbs" 论坛的形式,discuss为自带的简单论坛,bbs为外挂论坛,参考bbs.php代码。
static  $OJ_ONLINE=false; 是否使用在线监控,需要消耗一定的内存和计算,因此如果并发大建议关闭
static  $OJ_LANG="en";  默认的语言,中文为cn
static  $OJ_SIM=true;   是否显示相似度检测的结果。
static  $OJ_DICT=true;  是否启用在线英字典
static  $OJ_LANGMASK=1008; //1mC 2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason to mask all other language 用掩码表示的OJ接受的提交语言,可以被比赛设定覆盖。
static  $OJ_EDITE_AREA=true;// 是否启用高亮语法显示的提交界面,可以在线编程,无须IDE。
static  $OJ_AUTO_SHARE=false;//true: 自动分享代码,启用的话,做出一道题就可以在该题的Status中看其他人的答案。
static  $OJ_CSS="hoj.css"; 默认的css,可以选择dark.css和gcode.css,具有有限的界面制定效果。
static  $OJ_SAE=false; //是否是在新浪的云平台运行web部分
static  $OJ_VCODE=true; 是否启用图形登录、注册验证码。
static  $OJ_APPENDCODE=false; 是否启用自动添加代码,启用的话,提交时会参考$OJ_DATA对应目录里是否有append.c一类的文件,有的话会把其中代码附加到对应语言的答案之后,巧妙使用可以指定main函数而要求学生编写main部分调用的函数。
static  $OJ_MEMCACHE=false;是否使用memcache作为页面缓存,如果不启用则用/cache目录
static  $OJ_MEMSERVER="127.0.0.1"; memcached的服务器地址
static  $OJ_MEMPORT=11211;  memcached的端口

但是之前的博客讲的这两个文件的位置  现在已经完全变了  现在的位置如下

一个是  /home/judge/src/web/include   目录下的db_info.inc.php文件,

另一个是    /home/judge/etc目录下的judge.conf    文件。

我下载的版本的是在这里   大家可以到这个目录下找一下  看看在不在  )

找到了之后    用管理员权限进入方可进行操作

sudo vi var/www/JudgeOnline/include/db_info.inc.php

这里再了解一个修改操作:

vi 修改方法  vi进入文件  然后  按 i  开始修改

退出vi操作的方法

按下Esc  然后输入

:q   退出
:q!   不保存 退出
:wq   保存并退出

修改完配置后     hustoj的搭建就基本完成了。

如何修改公告

如果安装好的oj出现不能修改公告的问题

解决办法:在终端 键入

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

就好了

Runtime Error  运行错误解决办法

如果交题 报错Runtime Error  并且提示系统调用编号不可用

参考我的另一篇博客    https://blog.csdn.net/holly_Z_P_F/article/details/82941766

去除广告

但是我用的这个源码,里面带有广告,首页有推广图片,需要找下源码 把它改掉

在源码里的位置如下

首页的广告 是在 /home/judge/src/web/template/bs3   下面的js.php

最后补充几张搭建好的oj的图

首页

判题

管理界面

HUSTOJ(2019)在线判题系统的搭建相关推荐

  1. 基于Ubuntu 16.04的HUSTOJ在线判题系统的搭建

    打开Ubuntu终端键入 sudo apt-get update 此命令为了升级Ubuntu软件库 接下来键入 sudo apt-get install subversion 安装subversion ...

  2. 在线判题系统hustoj的搭建

    摘要:ACM/ICPC程序设计竞赛,越来越受到各个高校的重视,是程序设计竞赛中的奥林匹克.Hustoj是搭建在linux系统上的判题系统.能够判断代码的正确性.会及时返回通过或者不通过,如果不通过会返 ...

  3. OnlineJudge在线判题系统

    华东地区(浙江) 浙江大学(ZJU) http://acm.zju.edu.cn/ 华东地区(浙江) 杭州电子科技大学(HDU) http://acm.hdu.edu.cn/ 华东地区(浙江) 浙江工 ...

  4. 在线判题系统(oj)效果分析图_在线代码编写平台开发分享

    计算机专业的大学生应该都了解acm比赛,这种通过使用oj(online judge)系统在线编程刷题,实时反馈学习排名的方式能很大程度激发学生的学习热情. oj学习排名界面 oj个人学习记录界面 只是 ...

  5. Special Judge(特判程序)在OnlineJudge(在线判题系统)中的使用方法

    引言 最近搭了一个OnlineJudge,在一些比赛中,为了避免选手骗过测试,所以一个比较完善的OJ测试必须加上Special Judge 例如:题目要求:求a+b的值 测试用例: 输入1 2 输出: ...

  6. 牛客网在线判题系统JavaScript(V8)使用,附美团赛码系统判题系统使用

    牛客ACM模式 一直在刷leetcode的同学,平时一直使用核心代码模式,突然遇到ACM模式,会无从下手,下面教你处理各种输入输出情况. JavaScript作为一种动态语言,没有像C或Java那种频 ...

  7. ZZULIOJ_1199: 在线判题(字符串)

    题目描述 LittleTom开发了一个在线判题系统,判题系统需要把用户提交上来的代码编译成可执行文件,然后运行.而用户会提交什么样的代码是无法预知的,所以LittleTom做了充分的准备,比如阻止解题 ...

  8. 向大佬学习C语言1199: 在线判题(字符串)

    Title Of Contents 问题描述 代码&注释 知识点 C 库函数 - memset() C 库函数 - gets() C 库函数 - strcat() 问题描述 1199: 在线判 ...

  9. 各大高校oj判题系统

    ACM OJ Collection(排名不分先后): 中国:(China) 华东地区: 浙江: 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 浙江大学(ZJU):http: ...

  10. JavaWeb在线刷题系统

    目录 文章目录 项目背景 一.项目技术 二.使用步骤 1.Maven配置jar包 2.数据库设计 3.流程图 4.功能模块 总结 项目背景 如今面试.考研越来越卷了,每场面试必考八股文,所以不得不背诵 ...

最新文章

  1. ubuntu linux的特点,16个新特性,让你爱上Ubuntu 20.04,
  2. 如何订阅MQTT服务器历史消息,mqtt集群订阅如何只消费一个(一次)消息?
  3. kafka增加服务器,kafka增加topic的备份数量
  4. leetcode刷题集:栈与队列
  5. UIAlertView UIActionSheet随笔笔记
  6. 堆栈跟踪 堆栈跟踪_寻找缺少的堆栈跟踪
  7. linux 系统安装mongodb数据库---方法2
  8. dj鲜生-24-含资源-模板操作-注册与登陆页的模板继承
  9. 树莓派如何接硬盘_利用树莓派和闲置硬盘,搭建起家中的个人网盘
  10. 清华紫光输入法linux,清华紫光拼音输入法
  11. openCV 需要显示的图片太大超出了屏幕范围
  12. Softmax-with-Loss层的计算图 | Softmax梯度推导 | Loss损失函数
  13. 【C语言】实现简单的计算器
  14. 笔记整理--Linux守护进程
  15. JavaMai——邮箱验证用户注册
  16. 计算机的硬件系统和软件系统
  17. 简历撰写:6大板块n个细节
  18. Allein rennen spielen singen beißen.Espoir parfaitement arbre.
  19. 有没有哪个趋势指标,更好使?
  20. cakephp oracle,CakePHP入门(8)-创建Model

热门文章

  1. 你不知道的 XMLHttpRequest
  2. 4-MSP430定时器_定时器中断
  3. grid@m3#39;s password: Permission denied, please try again.
  4. MySQL字符集设置及字符转换(latin1转utf8)
  5. TCP/IP FTP/TFTP
  6. 多态在 Java 和 C++ 编程语言中的实现比较
  7. [BZOJ 4589] Hard Nim
  8. 【SpringMVC】@Controller 和 @RestController 区别
  9. python 2个dict如何合并
  10. Linux中利用NFS实现飞鸽传书