目录

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

一:配置LAMP环境

二:安装HUSTOJ

三:管理数据库:

四:配置oj

五:oj优化

六:将web文件夹内容放入文件夹 /var/www/html 中(最重要)

七:其他操作(此处无需用到)

八.博客参考


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

一:配置LAMP环境

㈠何为LAMP?

LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指PerlPython) 的第一个字母,一般用来建立web应用平台。

㈡如何配置LAMP环境?

⑴更新系统资源:
方式一:

sudo apt-get update             # 获取最新资源包
sudo apt-get upgrade           # 本机软件全部更新
sudo apt-get dist-upgrade    # 本机系统软件更新

方式二:

sudo apt-get update && sudo apt-get upgrade

⑵Apache

①安装 Apache2.4:

sudo apt-get install apache2

②模块修改
apache2(默认):     mpm_event
php(默认):           mpm_prefork

sudo a2dismod mpm_event

sudo a2enmod mpm_prefork

③重启apache

sudo service apache2 restart

④现在开始访问你的 web 服务器,打开浏览器并输入http://localhost

出现此页面表示成功

⑶Mysql 5.7

wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb
sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb
sudo apt-get update
sudo apt-get install mysql-server-5.7

⑷PHP7.0
①首先查看下当前源中是否含有php7.0

sudo apt-cache search php7.0

②如果没有,则添加源,并更新,然后安装

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

③如果有则直接安装

sudo apt-get install php7.0

⑸整合LAMP
①整合PHP和mysql

sudo apt-get install php7.0-mysql

②整合php和Apache

sudo apt-get install libapache2-mod-php7.0
sudo service apache2 restart

⑹验证环境

①Apache默认的网站根目录位于 /var/www/html/ ,进入这个目录,并创建 info.php

<?php phpinfo(); ?>

②在浏览器中输入 http://localhost/info.php 

若出现此界面则LAMP环境配置成功

二:安装HUSTOJ

⑴根据系统版本选择安装

①Ubuntu14.04:

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu14.04.sh
sudo bash install-ubuntu14.04.sh


②Ubuntu16.04

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu16+.sh
sudo bash install-ubuntu16+.sh

三:管理数据库:

⑴进入数据库

mysql -u root -p

⑵数据库操作:

show databases;		--查看数据库
use jol;			--进入jol数据库
insert into privilege(user_id,rightstr)
values('123456','administrator');--创建管理员账号1233456

四:配置oj

⑴  /home/judge/src/web/include   目录下的db_info.inc.php文件

<?php @session_start();
	ini_set("display_errors","Off");  //set this to "On" for debugging  ,especially when no reason blank shows up.
	ini_set("session.cookie_httponly", 1);   
	header('X-Frame-Options:SAMEORIGIN');
//for people using hustoj out of China , be careful of the last two line of this file !
// connect db 
static 	$DB_HOST="localhost";
static 	$DB_NAME="jol";
static 	$DB_USER="root";
static 	$DB_PASS="root";
//上面四行中如果没有问题就不要动,都是默认好的。可能数据库账户密码不是root,这点并不影响。
//16.04安装可能数据库账户密码为空,如果为空,账户填写为 root 密码填写 自己设置的。
//如果需要改写的话一定要用vim或者vi打开
static 	$OJ_NAME="HUSTOJ";
static 	$OJ_HOME="./";
static 	$OJ_ADMIN="root@localhost";
static 	$OJ_DATA="/home/judge/data";
static 	$OJ_BBS="discuss3";//"bbs" for phpBB3 bridge or "discuss" for mini-forum
static  $OJ_ONLINE=false;
static  $OJ_LANG="en";
static  $OJ_SIM=false; 
static  $OJ_DICT=false;
static  $OJ_LANGMASK=0; //1mC 2mCPP 4mPascal 8mJava 16mRuby 32mBash 1008 for security reason to mask all other language
static  $OJ_EDITE_AREA=true;//true: syntax highlighting is active
static  $OJ_ACE_EDITOR=true;
static  $OJ_AUTO_SHARE=false;//true: One can view all AC submit if he/she has ACed it onece.
static  $OJ_CSS="white.css";
static  $OJ_SAE=false; //using sina application engine
static  $OJ_VCODE=false;
static  $OJ_APPENDCODE=false;
static  $OJ_CE_PENALTY=false;
static  $OJ_PRINTER=false;
static  $OJ_MAIL=false;
static  $OJ_MEMCACHE=false;
static  $OJ_MEMSERVER="127.0.0.1";
static  $OJ_MEMPORT=11211;
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=false; //新注册用户需要审核
static  $OJ_NEED_LOGIN=false; //需要登录才能访问
static  $OJ_RANK_LOCK_PERCENT=0; //比赛封榜时间比例
static  $OJ_SHOW_DIFF=false; //是否显示WA的对比说明
static  $OJ_TEST_RUN=false; //提交界面是否允许测试运行
static  $OJ_BLOCKLY=false; //是否启用Blockly界面
static  $OJ_ENCODE_SUBMIT=false; //是否启用base64编码提交的功能,用来回避WAF防火墙误拦截。
//static  $OJ_EXAM_CONTEST_ID=1000; // 启用考试状态,填写考试比赛ID
//static  $OJ_ON_SITE_CONTEST_ID=1000; //启用现场赛状态,填写现场赛比赛ID
static $OJ_OPENID_PWD = '8a367fe87b1e406ea8e94d7d508dcf01';
/* weibo config here */
static  $OJ_WEIBO_AUTH=false;
static  $OJ_WEIBO_AKEY='1124518951';
static  $OJ_WEIBO_ASEC='df709a1253ef8878548920718085e84b';
static  $OJ_WEIBO_CBURL='http://192.168.0.108/JudgeOnline/login_weibo.php';
/* renren config here */
static  $OJ_RR_AUTH=false;
static  $OJ_RR_AKEY='d066ad780742404d85d0955ac05654df';
static  $OJ_RR_ASEC='c4d2988cf5c149fabf8098f32f9b49ed';
static  $OJ_RR_CBURL='http://192.168.0.108/JudgeOnline/login_renren.php';
/* qq config here */
static  $OJ_QQ_AUTH=false;
static  $OJ_QQ_AKEY='1124518951';
static  $OJ_QQ_ASEC='df709a1253ef8878548920718085e84b';
static  $OJ_QQ_CBURL='192.168.0.108';
//if(date('H')<5||date('H')>21||isset($_GET['dark'])) $OJ_CSS="dark.css";
if( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'],"zh-CN")) {
        $OJ_LANG="cn";
}
if (isset($_SESSION[$OJ_NAME.'_'.'OJ_LANG'])) $OJ_LANG=$_SESSION[$OJ_NAME.'_'.'OJ_LANG'];
require_once(dirname(__FILE__)."/pdo.php");
		// use db
	//pdo_query("set names utf8");	
		
	if(isset($OJ_CSRF)&&$OJ_CSRF&&$OJ_TEMPLATE=="bs3"&&basename($_SERVER['PHP_SELF'])!="problem_judge")
		 require_once('csrf_check.php');
	//sychronize php and mysql server with timezone settings, dafault setting for China
	//if you are not from China, comment out these two lines or modify them.
	//date_default_timezone_set("PRC");
	//pdo_query("SET time_zone ='+8:00'");
?>

⑵   /home/judge/etc   目录下的  judge.conf文件

OJ_HOST_NAME=127.0.0.1
OJ_USER_NAME=root
OJ_PASSWORD=root
OJ_DB_NAME=jol
OJ_PORT_NUMBER=3306
OJ_RUNNING=1
OJ_SLEEP_TIME=1
OJ_TOTAL=1
OJ_MOD=0
OJ_JAVA_TIME_BONUS=2
OJ_JAVA_MEMORY_BONUS=64
OJ_JAVA_XMS=-Xms64M
OJ_JAVA_XMX=-Xmx128M
OJ_SIM_ENABLE=0
OJ_HTTP_JUDGE=0
OJ_HTTP_BASEURL=http://127.0.0.1/JudgeOnline
OJ_HTTP_USERNAME=IP
OJ_HTTP_PASSWORD=admin
OJ_REDISENABLE=0
OJ_REDISSERVER=127.0.0.1
OJ_REDISPORT=6379
OJ_REDISAUTH=123456
OJ_REDISQNAME=hustoj
OJ_OI_MODE=1
OJ_SHM_RUN=1
OJ_USE_MAX_TIME=1
OJ_LANG_SET=0,1,2,3,4,5,6,7,8,9,10,11
OJ_COMPILE_CHROOT=1
OJ_TURBO_MODE=0
OJ_CPU_COMPENSATION=1.0

五:oj优化

⑴修改公告

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

⑵去除广告

首页的广告 是在 /home/judge/src/web/template/bs3   下面的js.php,修改此文件即可

六:将web文件夹内容放入文件夹 /var/www/html 中(最重要)

⑴将web中的文件放入apache网站显示文件夹中

mv /home/judge/src/web/ /var/www/html/

⑵重启apache2

sudo service apache2 restart

⑶在浏览器中输入 http://localhost

出现此页面那么恭喜了,你的oj已成功搭建

 

七:其他操作(此处无需用到)

⑴修改apache2网站根目录

vi /etc/apache2/sites-available/000-default.conf

⑵修改apache2网站默认网页

vi /etc/apache2/mods-available/dir.conf

⑶Ubuntu16.04安装phpMyAdmin

①使用apt自动安装

 sudo apt install phpmyadmin

②创建软连接到web根目录(/var/www/html/)

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

③在浏览器中输入 http://localhost/phpmyadmin

出现次页面则表示成功

八.博客参考

https://segmentfault.com/a/1190000004687322

https://blog.csdn.net/longgeaisisi/article/details/78448525

https://blog.csdn.net/longchena/article/details/80153160

https://blog.csdn.net/gakki_wpt/article/details/81215509

https://blog.csdn.net/holly_Z_P_F/article/details/81943886

https://blog.csdn.net/nwpushuai/article/details/82564140