原文鏈接:這里
0.前言
前面我們已經搭建了QingdaoUOJ和hydroOJ了,今天這篇文章我們在嘗試搭建一下JNOJ
官方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)