耗时6天-JNOJ(江南OJ)搭建、安装记录

原创
2019/12/21 19:22
阅读数 2.8K

背景

第一次安装OJ,选了下觉得JNOJ功能、界面都很好而且作者还一直在维护中,于是开始安装。

6天:5个工作日主要是晚上3、4小时。一个周六全天.

手动安装没有成功

       就是自己下载MYSQL, MYSQL,NGINX,主要按官方的“environment.md”文档安装LNMP环境
Ubuntu选择最新的Ubuntu server 18.04.3LTS, 当然是VM 虚拟机。 安装没有什么问题,主要是配置后出现运行时的各种问题。
       开头4天使用手动一步一步安装,装了4次,出现了几个问题,如:
NGINX不能访问,
NGINX能访问,但PHP不正常,
数据库不能访问,
最后始终不能登录,看NGINX的error.log记录是PHP访问数据有问题 ,没法解决。都想换其它OJ系统再试试了。再看文档进发现最近3天有一个新的更新,还发现作者放了一个在Ubuntu18.04上全自动成功安装过的脚本叫“一键安装脚本”。于是就尝试全自动安装。

一键安装脚本

原文说明如下:

在 Linux 环境下安装。判题机是在 Linux 环境下写的,Windows 下无法运行判题机。
搭建 LNMP (或 LAMP) 环境:PHP 7.x、MySQL、Nginx / Apache2
本教程分为 **一键安装脚本**、**手动安装过程**。这两个过程选择其中一个即可。

一键安装脚本
-----------
> 适合在纯净的系统或未运行 Web 有关服务的系统中。
**注意!!!此方法目前仅在 Ubuntu 18.04 中测试过。更多Linux系统还需测试。**
执行以下命令,进行安装:

wget https://raw.githubusercontent.com/shi-yang/jnoj/master/docs/install.sh
sudo bash install.sh
该脚本将 OJ 安装在 `/home/judge/jnoj` 目录下。

我对"一键安装“的理解

  1. 纯净的系统:指仅有系统本身的功能系统,其它如mysql, nginx, apache,PHP都还没有安装过的.
  2. 未运行 Web应该是指没有运行apche, nginx之类WEB服务

安装过程

第一步,下载install.sh脚本

wget https://raw.githubusercontent.com/shi-yang/jnoj/master/docs/install.sh

第二步执行install.sh脚本

sudo bash install.sh

这上步10分钟左右可以完成

安装完成后要注意看提示管理员的密码

如下图中所示管理员的帐号和密码:

默认的管理员是admin, 密码似乎是随机生成的。因为只有管理员才可以在题库里面增加题,所以这个很重要。因为这我又专门重新安装了一次看这个密码。

我的安装

  1. Ubuntu是用的 Ubuntu server 18.04.3LTS.
  2. Ubuntu server是没有图形界面的.
  3. 在Windows server 2019中使用VM 15.0安装Ubuntu server.

安装时将镜像源更改为ALIYUN的,以便加快安装速度,20分钟左右安装完成。不能更改镜像源Ubuntu server 18.04安装速度非常慢,一小时都没完。

替换为:http://mirrors.aliyun.com/ubuntu

运行

一键安装完成后,在浏览器里面输入服务器的IP地址就可以看到正常的界面,可以登录了。普通用户先注册,再登录。 普通用户没有下图所示的“后台”一项。

登录过后,就可以做题提交了,安装完后系统自带3个题目,下图中的前面3个。

遇到的问题

Q1: 重启系统后终端提交后一直显示“等待测评”

首先遇到的问题是重启系统后终端提交后一直显示“等待测评”。这个问题已经提交给作者的github上:

https://github.com/shi-yang/jnoj/issues/61

现象是:

重新启动服务器系统后,终端提交代码一直“等待测评”中,以为是改了时区的问题,结果又搞了两天,才发现是判题机没有启动,只要登录后手动启动就OK,但需要sudo 并且只能在dispatcher目录中启动才行,

临时的解决方法:手动运行后判题机正常工作

每次系统启动后,手动运行判题机一次。如下2条命令:

cd /home/judge/jnoj/judge
sudo ./dispatcher

可以做成一个脚本如xszjnoj.sh:

samxiao@jnoj3:~$ ls
install.sh  psef.sh  xszjnoj.sh
samxiao@jnoj3:~$
samxiao@jnoj3:~$ sudo ./xszjnoj.sh
[sudo] password for samxiao:
JNOJ Judge starting...
/home/judge/jnoj/judge
 running ok
/home/judge/jnoj/judge
root        943      1  0 09:43 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root       1676      1  0 09:54 ?        00:00:00 ./dispatcher
root       1941   1937  0 10:34 pts/0    00:00:00 grep dis

xszjnoj.sh 内容

samxiao@jnoj3:~$ cat xszjnoj.sh
#!/bin/sh
echo 'JNOJ Judge starting...'
cd /home/judge/jnoj/judge
pwd
# sudo ./dispatcher
./dispatcher
# sudo -S ./dispatcher
echo ' running ok'
pwd
ps -ef | grep dis
exit 0

手动成功后,想把这个脚本放在系统的自启动服务中,但用时3天尝试多种自动启动脚本方式都没能成功。

Q2: 管理员怎么登录

密码是自动安装完成后有一个提示,用户名admin, 密码似乎是随机生成的

Q3: 文件大于2M不能上传

出现这个问题是在上传题目的输入文件时遇到。

导入题目的地方有说:


发现有2个php.ini,其中配置较小需要改,2个值都改为20M后重启系统后还是不能上传

samxiao@jnoj3:~$ sudo find  / -name php.ini
/etc/php/7.2/fpm/php.ini
/etc/php/7.2/cli/php.ini

 

后面想应该还可能是web服务器NGINX也限制了,度娘后果然有这个限制,更改方法是更改nginx.conf,搜了一下位于

samxiao@jnoj3:~$ sudo find / -name "nginx.conf"

/etc/nginx/nginx.conf

但看其结构和度娘说的差别较大,下不了手。发现和前几天手动安装要改的配置文件/etc/nginx/sites-enabled/default 结构相符,改这个文件重启系统后可以上传大文件了。改后的文件如下,增加了一行

client_max_body_size 20M;

 

Q4: 换图标

替换 `web/images/logo.png` 文件即可修改学校 LOGO;我的换成了:

Q5: 如何换学校名称,OJ名称

以管理员登录,”后台“-”设置“中配置:

改后的效果:

Q6: 如何批量导入题库

目前只支持从hustoj导出的题目。

我还没用过。

 

展开阅读全文
打赏
1
0 收藏
分享
加载中
SamXIAO博主
又是6天解决了JNOJ在Ubuntu18.04.3不能自启动的问题
2019/12/28 10:13
回复
举报
SamXIAO博主
http://www.517coding.com/ 应该是用JNOJ搭的
2019/12/24 09:39
回复
举报
SamXIAO博主
今天又安装了一下,不到10分钟完成,ADMIN密码是随机的。
2019/12/22 18:02
回复
举报
没有docker镜像?
2019/12/21 21:52
回复
举报
SamXIAO博主
没有。
2019/12/22 15:39
回复
举报
SamXIAO博主
费时啊。今天就用了10小时,6天共用时在30小时以上。
2019/12/21 21:00
回复
举报
更多评论
打赏
6 评论
0 收藏
1
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部