本人使用HUSTOJ开源在线评测系统已经有一些时间了,下面和大家分享一下本人的一些使用心得,读者们如果有其它的使用心得,可以在评论区和大家一起分享。
一、搭建网站
(1)关于如何在云服务器搭建HUSTOJ网站,在百度上有很多教程,可以参考下面这个网址中的操作进行搭建:
https://github.com/zhblue/hustoj
(2)如果想在本地自己的服务器搭建网站,可以关注hustoj的公众号,获取iso镜像文件,通过镜像文件在本地服务器直接安装系统或者将镜像安装到本地服务器的虚拟机当中。
搭建的方法也可以参考这篇博客进行操作https://blog.csdn.net/qq_40632760/article/details/88902499
二、进行简单的设置
(1)hustoj重要的配置文件包含以下几个:
/home/judge/etc/judge.conf #判题judged/judge_client
/home/judge/src/web/include/db_info.inc.php #Web配置文件
/etc/php5/fpm/php.ini 或 /etc/php7.0/fpm/php.ini 或 /etc/php.ini (in Centos7) #php配置文件
/etc/nginx/sites-enabled/default 或 /etc/nginx/nginx.conf (in Centos7) #nginx配置文件
https://github.com/zhblue/hustoj里面有关于上面几个重要配置文件的介绍。
(2)首先,本人在使用XShell访问云服务器的时候,经常遇到以下这个错误:
Connection closed by foreign host.
Disconnected from remote host
经过一番查找,得知执行以下代码即可解决上述问题:
cd /etc/ssh
sudo chmod 644 ./*
sudo chmod 600 ssh_host_dsa_key
sudo chmod 600 ssh_host_rsa_key
sudo chmod 755 .
/etc/init.d/ssh restart
(3)对web配置文件进行简单的修改:
使用XShell远程访问服务器,使用cd命令与vim命令访问/home/judge/src/web/include/db_info.inc.php这个web配置文件,
在操作的过程中,可以使用“/需要查找的字符串”这一命令快速查找所需的内容,按n键可以定位到下一个需要查找的内容
① 更改网站语言:
将里面语言静态全局变量static $OJ_LANG="en"改为static $OJ_LANG="cn";即可变为中文。
② 更改网站样式:
因为网站默认使用的模板是static $OJ_TEMPLATE="bs3";需要更改样式的话,如果想更改网站的样式只需要进入到/home/judge/src/web/template/bs3;将自己编写好的css文件上传到当前闻之即可;也可以调用当前已存在的样式文件。
③ 更改网站样式:
最后,更改网站样式:将static $OJ_CSS="blue.css";改为你所需要的css样式文件即可
④ 对用户提交的代码进行查重:
修改/home/judge/etc/judge.conf,设置OJ_SIM_ENABLE=1,修改/home/judge/src/web/include/db_info.inc.php,设置$OJ_SIM=true,之后提交的代码启用查重,之前的不做考察,除非重判所有提交。自己抄自己不记为抄袭。centos用户注意安装flex组件,否则查重器可能无法编译通过。——这段话来源与hustoj公众号
(4)如何使用Xshell进行与服务器进行上传和下载操作:
首先使用XShell连接上云服务器 ,接着使用sudo -i //切换为管理员权限
然后使用sudo apt-get install lrzsz //安装上传下载插件
最后即可进行上传和下载操作:
上传文件使用 rz 命令
下载使用 sz+文件名
(5)访问hustoj中的mysql数据库:
sudo vi /etc/mysql/my.cnf //连接上服务器后,在目标服务器上使用下面的命令修改mysql的my.cnf文件:
#bind-address = 127.0.0.1 //使用#注释掉bind-address,屏蔽其只对本地监听
sudo restart mysql //重新启动MySQL服务,使其修改的配置生效
cat /etc/mysql/debian.cnf //使用sudo -i命令切换服务器的管理员权限,并使用下面的命令查看当前数据库管理员的账号密码:
使用下面的命令即可以管理员的权限访问mysql数据库
mysql -u 上一步骤显示的用户名 -p
然后在输入上一步骤显示的密码即可
修改mysql中root用户密码为root的方法:
可以查看https://blog.csdn.net/qq_38737992/article/details/81090373这篇博客上的内容:
use mysql;
// 下面这句命令有点长,请注意。
update mysql.user set authentication_string=password('root') where user='root' and Host ='localhost';
update mysql.user set Password=password('root') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password";
flush privileges;
quit;
//更改完密码后,重启mysql服务,然后输入root用户的账号密码进行登录
sudo service mysql restart
mysql -u root -p // 启动后输入已经修改好的密码:root
进行修改密码操作并重启mysql服务后,即可使用root用户登录进数据库:
(6)暂停所有正在进行的评测与恢复评测命令:
sudo pkill -9 judge //暂停所有正在进行的评测
sudo judged //重新恢复测评
其它:在Ubuntu中systemctl被apt-get install这一命令替代