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;

注意  末尾有分号

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

HUSTOJ(2019)在线判题系统的搭建

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

选择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

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

db_info.inc.php

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

  1. :q 退出
  2. :q! 不保存 退出
  3. :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

HUSTOJ(2019)在线判题系统的搭建

HUSTOJ(2019)在线判题系统的搭建

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

首页

HUSTOJ(2019)在线判题系统的搭建

 

判题

HUSTOJ(2019)在线判题系统的搭建

管理界面

HUSTOJ(2019)在线判题系统的搭建

 

/home/judge/src/web/include的db_info.inc.php
/home/judge/src/web的cn.php 两个目录可以更改一些字;