HUSTOJ是现在使用较多的开源OJ之一,而且最近HUSTOJ也在一直改版,一直更新,最近也更新了最新版本
其实HUSTOJ搭建还是比较简单的,搭建的时候首先要明确所使用的系统,建议使用Ubuntu 14.04系统,不建议使用Ubuntu 16.04 ,更新之前使用16.04搭建O不能使用,更新之后不太清楚了,所以还是使用14.04,比较稳妥
HUSTOJ所使用的环境是Ubuntu系统,Apache服务,MySQL数据库,以及php5,所以在安装之前我们要配置好这些环境
1、如果不是root权限的话先获取root权限
sudo -i
然后输入密码即可
2、更新系统配置
apt-get update
3、安装MySQL-server、mysql-client
apt-get install mysql-server mysql-client
这一步中途会弹出窗口,那是设定数据库密码,这个密码一定要保管好,十分重要,以后也会用到
数据库账号默认为root
4、安装phpmyadmin
apt-get install phpmyadmin
这个软件可以直接利用网址登陆数据库
安装过程中会跳出弹窗,只需要按空格,再按回车即可
然后会弹出窗口,要求输入密码,应该是输入数据库密码并设定登录密码,建议与数据库密码相同,免去不必要的麻烦
5、安装subversion
apt-get install subversion
到此所有的环境配置完成,接下来就是下载oj安装文件以及安装了
6、安装hustoj
svn co https://github.com/zhblue/hustoj/trunk/trunk/install hustoj
cd hustoj
bash install-ubuntu14.04.sh
第一行是下载安装文件到本地hustoj文件夹下
第二行打开文件夹
第三行启用hustoj安装脚本,安装hustoj
上述脚本为ubuntu 14.04系统安装版本,如果使用其他版本系统,执行相对应的系统安装脚本即可
接下来就是等待它安装完毕吧,大概3-10分钟,重点要看网速
安装完成后,本地访问localhost即可看到oj主页,这时OJ配置工作基本完成,接下来就要使用oj配置文件配置适合自己的oj了
如果在浏览器中访问不到OJ界面,但却是白屏,没有任何显示,则执行第8步数据库配置,一般都是数据库账号密码问题,修改之后刷新即可
7、配置服务
建议使用Nginx服务,但是当前默认开启Apache服务,所以要关闭Apache服务,开启Nginx服务
/etc/init.d/apach2 stop
/etc/init.d/nginx start
8、配置文件 db_info.inc.php
cd /var/www/html/JudgeOnline/include
vim db_info.inc.php
如果vim提示无法使用的话就使用下面指令安装vim,再使用
apt-get install vim
打开配置文件后
static $DB_HOST="localhost"; //服务器地址
static $DB_NAME="jol"; //数据库名称
static $DB_USER="root"; //数据库账号
static $DB_PASS="********"; //数据库密码,就是之前设置的那个
//以上都不需要修改,默认就是配置好的
static $OJ_NAME="HUSTOJ"; //OJ名称
static $OJ_HOME="./"; //OJ主页位置
static $OJ_ADMIN="root@localhost"; //管理员email
static $OJ_DATA="/home/judge/data"; //OJ数据存储位置
static $OJ_BBS="discuss3";//论坛的形式,discuss为自带的简单论坛,bbs为外挂论坛,参考bbs.php代码。
static $OJ_ONLINE=false; //是否使用在线监控,开启比较消耗一些内存和计算,不建议开启
static $OJ_LANG="cn"; //OJ语言,默认中文
static $OJ_SIM=false; //是否使用OJ查重,但是单独开启这个也不行,还需要修改另一个文件下的一个代码才可以
static $OJ_DICT=false; //是否采取在线词典
static $OJ_LANGMASK=262064; //掩码表示的OJ接受的提交语言,可以被比赛设定覆盖。
static $OJ_EDITE_AREA=true;//是否启用高亮语法显示的提交界面,可以在线编程,无须IDE。
static $OJ_AUTO_SHARE=false;// 是否自动分享到AC代码
static $OJ_CSS="white.css"; // 默认的css,可以选择dark.css和gcode.css,具有有限的界面制定效果。
static $OJ_SAE=false; //是否是在新浪的云平台运行web部分
static $OJ_VCODE=false; //是否开启验证码,开启后注册、登录、提交都要输入验证码才行
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的端口
static $OJ_REDIS=false;
static $OJ_REDISSERVER="127.0.0.1";
static $OJ_REDISPORT=6379;
static $OJ_REDISQNAME="hustoj";
static $SAE_STORAGE_ROOT="http://hustoj-web.stor.sinaapp.com/";
static $OJ_TEMPLATE="bs3"; //使用的默认模板
if(isset($_GET['tp'])) $OJ_TEMPLATE=$_GET['tp'];
static $OJ_LOGIN_MOD="hustoj";
static $OJ_REGISTER=true; //允许注册新用户
static $OJ_REG_NEED_CONFIRM=true; //新注册用户需要审核
static $OJ_RANK_LOCK_PERCENT=0; //比赛封榜时间比例
static $OJ_SHOW_DIFF=true; //是否显示WA的对比说明
static $OJ_TEST_RUN=false; //提交界面是否允许测试运行
static $OJ_BLOCKLY=false; //是否启用Blockly界面
static $OJ_ENCODE_SUBMIT=false; //是否启用base64编码提交的功能,用来回避WAF防火墙误拦截
9、配置文件 judge.conf
cd /home/judge/etc
vim judge.conf
进入配置文件
OJ_HOST_NAME=127.0.0.1 //如果用mysql连接读取数据库,数据库的主机地址
OJ_USER_NAME=root //数据库账户名
OJ_PASSWORD=******** //数据库密码
OJ_DB_NAME=jol //数据库名称
OJ_PORT_NUMBER=3306 //数据库端口
OJ_RUNNING=2 //judged会启动judge_client判题,这里规定最多同时运行几个judge_client,不要太多,参考服务器CPU核心数量
OJ_SLEEP_TIME=1 //judged通过轮询数据库发现新任务,轮询间隔的休息时间,单位秒
OJ_TOTAL=1 //老式并发处理中总的judged数量
OJ_MOD=0 //老式并发处理中,本judged负责处理solution_id按照TOTAL取模后余数为几的任务。
OJ_JAVA_TIME_BONUS=2//ava等虚拟机语言获得的额外运行时间。
OJ_JAVA_MEMORY_BONUS=64//ava等虚拟机语言获得的额外内存。
OJ_JAVA_XMS=-Xms64M
OJ_JAVA_XMX=-Xmx128M
OJ_SIM_ENABLE=0 //是否开启代码相似度比对,开启这个并且同时开启db_info.inc.php中static $OJ_SIM=false,才能启用OJ查重
OJ_HTTP_JUDGE=0 //是否使用HTTP方式连接数据库,如果启用,则前面的HOST_NAME等设置忽略
OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline //使用HTTP方式连接数据库的基础地址,就是OJ的首页地址
OJ_HTTP_USERNAME=IP //使用HTTP方式所用的用户帐号(HTTP_JUDGE权限),该帐号登录时不能启用VCODE图形验证码,但可以登录成功后启用
OJ_HTTP_PASSWORD=admin //使用HTTP方式所用的用户密码
OJ_REDISENABLE=0
OJ_REDISSERVER=127.0.0.1
OJ_REDISPORT=6379
OJ_REDISAUTH=123456
OJ_REDISQNAME=hustoj
OJ_OI_MODE=1 //是否采用OI模式
OJ_SHM_RUN=1 //是否使用/dev/shm的共享内存虚拟磁盘来运行答案,如果启用能提高判题速度,但需要较多内存
OJ_USE_MAX_TIME=1 //是否使用所有测试数据中最大的运行时间作为最后运行时间,如果不启用则以所有测试数据的总时间作为超时判断依据
OJ_LANG_SET=0,1,2,3,4,5,6,7,8,9,10,11 //判题机评测语言,即C、C++、Java、Python……
OJ_COMPILE_CHROOT=1
OJ_TURBO_MODE=0
10、修改ico网页图标
先在本地选择一张图片,然后修改成16*16像素的图片大小,并修改图片名及后缀名为favicon.ico
将服务器/var/www/html/JudgeOnline/目录下的favicon.ico修改为其他名
apt-get install lrzsz
cd /var/www/html/JudgeOnline
rz
在对话窗口中找到要使用的图标,并选择确认上传
上传完毕后,刷新网页还是没变,重启服务器,也不行,这是因为访问权限问题
chown www-data favicon.ico
使用语句修改权限就可以了
到此,OJ的配置几乎完成,如果有想修改OJ界面的可以自行修改一下,所有文件默认都在/var/www/html/JudgeOnline/template/bs3下
11、无法访问localhost/phpmyadmin
输入如下指令
cd /home/judge/src/web/
ln -s /usr/share/phpmyadmin phpmyadmin
这是将phpmyadmin和OJweb连接起来,这样才可以访问
以上就是个人搭建hustoj的方法,如有错误请指点