江南在線評測系統(Jiangnan Online Judge),是一個在線的判題系統。 用戶可以在線提交程序多種程序(如C、C++、Java)源代碼,系統對源代碼進行編譯和執行,並通過預先設計的測試數據來檢驗程序源代碼的正確性。
GitHub項目介紹:https://www.jnoj.org
GitHub項目地址:https://github.com/shi-yang/jnoj
在線Demo:https://demo.jnoj.org
環境需求
- 在 Linux 環境下安裝。判題機是在 Linux 環境下寫的,Windows 下無法運行判題機。
- 搭建 LAMP (或 LANP) 環境:PHP 7.x、MySQL、Apache2 / Nginx
- 可以參考:LAMP 環境搭建
安裝過程
-
1.下載 jnoj 運行命令:
git clone https://github.com/shi-yang/jnoj.git
-
2.配置 Web 端
i.配置數據庫信息
在
config/db.php
文件中配置數據庫信息,例如:return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=jnoj', 'username' => 'root', 'password' => '123456', 'charset' => 'utf8', ];
注意: Web 程序不會爲你創建數據庫,需要你自己手動創建該數據庫(創建方法:運行
mysql -u root -p
登錄MySQL,然後create database jnoj;
,執行···quit;···可退出MySQL)。ii.執行安裝命令
進入 jnoj 目錄,在命令行運行 ./yii install 來安裝。安裝過程會自動導入所需的 SQL 數據,並且需要你根據提示輸入管理員的賬號密碼。
做好以上步驟後便可以使用 Web 端:
http://localhost/jnoj/web/
此時還不能進行判題,需配置判題機才能判題。
-
3.配置判題機
i.安裝編譯的依賴,運行命令:
sudo apt install libmysqlclient-dev libmysql++-dev
ii.創建一個用於判題的用戶,運行命令:sudo useradd -m -u 1536 judge
iii.將控制檯切換到judge
目錄(即運行cd judge
命令),然後運行make
命令
iiii.運行sudo ./dispatcher
命令 -
4.配置配置多邊形出題系統
i.將控制檯切換到
polygon
目錄(即運行cd polygon
命令),然後運行make
命令
ii.運行sudo ./polygon
命令
安裝過程執行命令如下:$ cd /var/www/html $ git clone https://github.com/shi-yang/jnoj.git $ cd jnoj $ vim config/db.php $ ./yii install $ sudo useradd -m -u 1536 judge $ vim judge/config.ini $ cd judge $ sudo apt install libmysqlclient-dev libmysql++-dev $ make $ sudo ./dispatcher $ cd ../polygon $ vim config.ini $ make $ sudo ./polygon
善後
- 網頁Logo替換
var/www/html/jnoj/web/favicon.ico
- 如何增加新的編程語言
https://github.com/shi-yang/jnoj/issues/45 - ssh https://blog.csdn.net/bobozai86/article/details/80318403
- 配置MySQL密碼,MySQL&apache2&php配置文件
MySQL密碼修改:https://blog.csdn.net/qq_38737992/article/details/81090373
MySQL常用命令:https://blog.csdn.net/m0_37774790/article/details/81007192
配置文件:
https://cubercsl.cn/notes/DOMjudge-Note.html
apache2配置修改https://www.cnblogs.com/starof/p/4278370.html
apache2性能優化https://www.cnblogs.com/saryli/p/10148785.html
限制上傳文件大小和評測時間 (php&apache2裏修改)