HUSTOJ(2019)在线判题系统的搭建
最新的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)在线判题系统的搭建相关推荐
- 基于Ubuntu 16.04的HUSTOJ在线判题系统的搭建
打开Ubuntu终端键入 sudo apt-get update 此命令为了升级Ubuntu软件库 接下来键入 sudo apt-get install subversion 安装subversion ...
- 在线判题系统hustoj的搭建
摘要:ACM/ICPC程序设计竞赛,越来越受到各个高校的重视,是程序设计竞赛中的奥林匹克.Hustoj是搭建在linux系统上的判题系统.能够判断代码的正确性.会及时返回通过或者不通过,如果不通过会返 ...
- OnlineJudge在线判题系统
华东地区(浙江) 浙江大学(ZJU) http://acm.zju.edu.cn/ 华东地区(浙江) 杭州电子科技大学(HDU) http://acm.hdu.edu.cn/ 华东地区(浙江) 浙江工 ...
- 在线判题系统(oj)效果分析图_在线代码编写平台开发分享
计算机专业的大学生应该都了解acm比赛,这种通过使用oj(online judge)系统在线编程刷题,实时反馈学习排名的方式能很大程度激发学生的学习热情. oj学习排名界面 oj个人学习记录界面 只是 ...
- Special Judge(特判程序)在OnlineJudge(在线判题系统)中的使用方法
引言 最近搭了一个OnlineJudge,在一些比赛中,为了避免选手骗过测试,所以一个比较完善的OJ测试必须加上Special Judge 例如:题目要求:求a+b的值 测试用例: 输入1 2 输出: ...
- 牛客网在线判题系统JavaScript(V8)使用,附美团赛码系统判题系统使用
牛客ACM模式 一直在刷leetcode的同学,平时一直使用核心代码模式,突然遇到ACM模式,会无从下手,下面教你处理各种输入输出情况. JavaScript作为一种动态语言,没有像C或Java那种频 ...
- ZZULIOJ_1199: 在线判题(字符串)
题目描述 LittleTom开发了一个在线判题系统,判题系统需要把用户提交上来的代码编译成可执行文件,然后运行.而用户会提交什么样的代码是无法预知的,所以LittleTom做了充分的准备,比如阻止解题 ...
- 向大佬学习C语言1199: 在线判题(字符串)
Title Of Contents 问题描述 代码&注释 知识点 C 库函数 - memset() C 库函数 - gets() C 库函数 - strcat() 问题描述 1199: 在线判 ...
- 各大高校oj判题系统
ACM OJ Collection(排名不分先后): 中国:(China) 华东地区: 浙江: 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 浙江大学(ZJU):http: ...
- JavaWeb在线刷题系统
目录 文章目录 项目背景 一.项目技术 二.使用步骤 1.Maven配置jar包 2.数据库设计 3.流程图 4.功能模块 总结 项目背景 如今面试.考研越来越卷了,每场面试必考八股文,所以不得不背诵 ...
最新文章
- ubuntu linux的特点,16个新特性,让你爱上Ubuntu 20.04,
- 如何订阅MQTT服务器历史消息,mqtt集群订阅如何只消费一个(一次)消息?
- kafka增加服务器,kafka增加topic的备份数量
- leetcode刷题集:栈与队列
- UIAlertView UIActionSheet随笔笔记
- 堆栈跟踪 堆栈跟踪_寻找缺少的堆栈跟踪
- linux 系统安装mongodb数据库---方法2
- dj鲜生-24-含资源-模板操作-注册与登陆页的模板继承
- 树莓派如何接硬盘_利用树莓派和闲置硬盘,搭建起家中的个人网盘
- 清华紫光输入法linux,清华紫光拼音输入法
- openCV 需要显示的图片太大超出了屏幕范围
- Softmax-with-Loss层的计算图 | Softmax梯度推导 | Loss损失函数
- 【C语言】实现简单的计算器
- 笔记整理--Linux守护进程
- JavaMai——邮箱验证用户注册
- 计算机的硬件系统和软件系统
- 简历撰写:6大板块n个细节
- Allein rennen spielen singen beißen.Espoir parfaitement arbre.
- 有没有哪个趋势指标,更好使?
- cakephp oracle,CakePHP入门(8)-创建Model
热门文章
- 你不知道的 XMLHttpRequest
- 4-MSP430定时器_定时器中断
- grid@m3#39;s password: Permission denied, please try again.
- MySQL字符集设置及字符转换(latin1转utf8)
- TCP/IP FTP/TFTP
- 多态在 Java 和 C++ 编程语言中的实现比较
- [BZOJ 4589] Hard Nim
- 【SpringMVC】@Controller 和 @RestController 区别
- python 2个dict如何合并
- Linux中利用NFS实现飞鸽传书