原文链接:这里
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;
}
}
修改后使用 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)