最新的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.php
-
-
static $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的图
首页
判题
管理界面
/home/judge/src/web/include的db_info.inc.php
/home/judge/src/web的cn.php 两个目录可以更改一些字;