【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
背景
第一次安装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` 目录下。
我对"一键安装“的理解
- 纯净的系统:指仅有系统本身的功能系统,其它如mysql, nginx, apache,PHP都还没有安装过的.
- 未运行 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, 密码似乎是随机生成的。因为只有管理员才可以在题库里面增加题,所以这个很重要。因为这我又专门重新安装了一次看这个密码。
我的安装
- Ubuntu是用的 Ubuntu server 18.04.3LTS.
- Ubuntu server是没有图形界面的.
- 在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: 换图标
Q5: 如何换学校名称,OJ名称
以管理员登录,”后台“-”设置“中配置:
改后的效果:
Q6: 如何批量导入题库
目前只支持从hustoj导出的题目。
我还没用过。
来源:oschina
链接:https://my.oschina.net/SamXIAO/blog/3145761