0.前言

前面我们已经搭建了QingdaoUOJ和hydroOJ了,今天这篇文章我们在尝试搭建一下JNOJ

官方地址:https://www.jnoj.org/

官方github:https://github.com/shi-yang/jnoj

官方码云:https://gitee.com/shi-yang/jnoj

本机环境:centOS7.5+宝塔面板7.5

1.一键安装脚本

JNOJ支持一键安装脚本

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

该脚本将 OJ 安装在 /home/judge/jnoj 目录下。

安装后管理员账号: admin,密码:123456

初始默认密码过于简单,请立即登陆修改

2.自动部署

因为我的服务器中已经有很多软件了,所以就没有采用一键部署脚本,采用手动部署的方法。

需要LNMP环境,因为宝塔已经有一键安装脚本了,所以就不作详细解释。

我们在服务器中新建一个文件夹用来单独装jnoj。

(1)下载

git clone https://github.com/shi-yang/jnoj.git

(2)配置web端

我们首先要在mysql中创建属于jnoj的数据库,并设置好密码。

在 jnoj/config/db.php 文件中配置数据库信息,请根据数据库实际情况修改相应的 username 和 password。在服务器上可以使用 vim 或 nano 命令进行编辑。例如:

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=jnoj',
    'username' => 'root',
    'password' => '123456',
    'charset' => 'utf8',
];

(3)执行安装命令

我们执行

./yii install

如果报错 Error: Method ReflectionParameter::getClass() is deprecated。说明php版本过高,降低一下版本就行。宝塔面板如何降低php版本请点击这里

如果报错 Error: passthru() has been disabled for security reasons可以点击这里。

遇到下面这幅图,输入yes,继续。

然后输入全局管理员的用户名和密码还有邮箱地址

然后就出现安装成功了画面

3.访问相关功能

前面我们已经部署完了,接下来我们要配置相关页面并访问相关功能了。一共有两种方式

(1)方式一:修改 /etc/nginx/sites-enabled/default 文件,需要修改的配置:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # 修改 root 后的路径为 jnoj/web 目录所对应的路径。看你具体把 jnoj 目录放到哪里。
        root /home/judge/jnoj/web;

        index index.php;

        server_name _;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
}
  1. 修改后使用 sudo nginx -s reload 重现加载配置 做好以上步骤后便可以使用 Web 端:
http://ip地址
本地主机则访问  http://127.0.0.1

(2)方式二:宝塔面板修改

因为服务器上还有别的网站,都交给宝塔统一管理了,而且后期还要配置域名,所以平常喜欢用宝塔部署网站。

先随便给他一个域名,把网站指向jnoj的web目录。

然后,我新添加一个ip和端口,这个指向我们刚才新建的网站。

然后访问IP+端口就能看到了;

4.后记

JNOJ界面比较精简,功能够用。但是缺点也很明显, 开发者好像已经不再维护了,加了github上的QQ后留言一直没有人回复。而且搭建出来的页面,点击相关功能没有反应,所以,如果你的代码能力非常强,可以下载下来研究一下(这个的源代码的结构还是不错的),如果你仅仅想搭建一个简单OJ来使用,则不建议搭建这个OJ。

注:后面的文章继续开发了这个OJ,请站内搜索查看最新文章。

后续的这个部署教程解决了上面的问题:JNOJ部署教程(2)—一键部署版 – 每天进步一点点 (longkui.site)

分类: 开发与创造