江南在线评测系统(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里修改)