ubuntu16.04 安装hustoj 最新【亲测,附带常见问题解决】

最近在学习Linux,就想着搭建一个oj玩玩。在网上找了好多教程,发现因为版本比较老,好多文件已经变了。装了好几次,中间出现各种问题,但是也借着这次机会对linux命令有了进一步的理解和认识。下面是我的安装过程和一些解决办法。废话不多说,开始安装。

1、先将用户切换为root,因为需要安装一些软件和执行一些命令,这样方便。

sd@sd:/$ su root
密码:

输入密码就行了

2、将下边的命令粘贴到终端,最好先cd到home目录,下载之后的install-ubuntu16+.sh脚本就在home目录

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

3、在运行install-ubuntu16+.sh脚本的时候cd到home目录,因为脚本里的一些重要软件可能安装不上,所以先提前安一下。

apt-get update
apt-get install mysql-server mysql-client
//在执行完这句后,会弹出一个窗口让设定mysql的密码,要设定为root
apt-get install nginx
//这个容易出错,我之前直接运行脚本,这个安装会有错误。在安装完之后再运行一下下边的命令看一下有没有错误,有的话直接解决,不然后边很麻烦。
nginx -t
apt-get install php7.0

下面是运行nginx -t之后的结果,说明没问题。如果报错可能是有一个文件里多注释了一行,会有提示是哪个文件,对照一下{}(花括号)就知道哪行是多注释的了。

root@sd:/# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

将以上三个安装好之后其实就可以避免绝大多数问题了,剩下的问题可能也就是少了个文件啊啥的。

4、接下来就是运行脚本了,但是不建议直接运行脚本进行安装,因为中间可能会出现问题,然后再去改的花会很麻烦的,所以,强烈建议自己手动复制命令去运行,一旦出现问题直接去解决,这样会容易很多。我就是自己手动执行的,虽然你会感觉很麻烦,还慢,但是最后你会发现自己手动执行比执行脚本不止快了一点,因为执行脚本一旦出现问题,不会直接停下来,等停下来可能已经出好多错误了。

5、在执行 chown www-data src/web/upload data run0 run1 run2 run3 这条命令时,可能会报错没有run0 run1 run2 run3文件夹,那么基本上就是之前的命令没有执行对

if grep “OJ_SHM_RUN=0” etc/judge.conf ; then
mkdir run0 run1 run2 run3
chown www-data run0 run1 run2 run3
fi

解决办法:
在执行这句命令之前,就去 etc/judge.conf 中看看 OJ_SHM_RUN=0这句是否等于0,如果不是,将值改为0,然后在运行上边的命令即可。

6、还有就是在执行 ./make.sh 这句的时候会报错,是因为make.sh脚本中

rm /usr/bin/sim_rb /usr/bin/sim_sh
//这句会报错 因文件不存在无法删除
ln -s /usr/bin/sim_c /usr/bin/sim_cc
//这句会报错 因为文件已存在无法连接

这两个错误可以不用理会,因为那两个文件本来就需要删除的,第二句链接既然已经存在了,也就不用再去连了。

7、后边基本上就可以安装成功了。

8、打开oj,打开浏览器,输入127.0.0.1进入oj的页面,如果标签那块已经显示oj的图标了(像下图那样),但是页面上一片空白,也没有报错
这里写图片描述
是因为数据库没有给密码,无法连接到数据库的原因。先打开/home/judge/src/web/include/db_info.inc.php
这里写图片描述
找到图片中最后一行的 static $DB_PASS=”root”,我这里双引号中的root是数据库的密码(就是最开始安装数据库时弹窗里填写的密码),你的这里双引号中应该是什么都没有的,将密码填进去就OK了。

9、到这里基本就是我安装这个oj的大致过程了。因为遇到的情况有限,如果出现其他问题,请根据install-ubuntu16+.sh脚本 中的命令自行更正。

10、安装后几个重要配置文件的位置

/home/judge/etc/judge.conf
/home/judge/src/web/include/db_info.inc.php
/etc/php5/fpm/php.ini 或 /etc/php7.0/fpm/php.ini
/etc/nginx/sites-enabled/default

如遇其他情况可以针对这几个文件进行修改,也有可能是某个软件没有安装导致的OJ不能正常运行。

猜你喜欢

转载自blog.csdn.net/k_young1997/article/details/81629818