Skip to content
forked from zhblue/hustoj

Popular Open Source Online Judge based on PHP/C++/MySQL/Linux for ACM/ICPC and NOIP training, with easy installation. 开源OJ系统

Notifications You must be signed in to change notification settings

flame-222/hustoj

 
 

Repository files navigation

hustoj -- 流行的OJ系统,跨平台、易安装、有题库。

版权说明

HUSTOJ is an GPL Free Software.

HUSTOJ 是采用GPL的自由软件。(仅限原创部分代码,其中使用了其他开源项目的组件,请遵循原组件的协议。)

注意:基于本项目源码从事科研、论文、系统开发,请在文中或系统中表明来自于本项目的内容和创意。

论文请引用参考文献基于开放式云平台的开源在线评测系统设计与实现

如果打算进行二次开发,Wiki和这份文档可能有帮助。

PS: GPL保证你可以合法忽略以上注意事项但不能保证你不受鄙视,呵呵。

常见问题自动应答微信公众号:hustoj

关注后回复: 新装系统、升级、目录等关键词,系统会自动回复相关帮助。

有问题请先查阅 FAQ常见问答Wiki使用技巧 或使用搜索引擎。

如果这个项目对你有用,请:

  • 挥动鼠标,右上角给个Star!
  • 保留网站页脚的二维码
  • 访问tk题库,充值下载题目
  • 向同学同事推荐这个项目
  • 每天扫一扫本页底部的支付宝红包
  • 在您的论文参考文献中写出本项目的网址

热烈祝贺CCPC2019顺利举办!

Star us, please!

目录

更新日志

安装说明

注意事项

校园网安装

基于Ubuntu18.04安装

基于Ubuntu16.04安装

基于Deepin深度15安装

基于Centos安装

基于Docker安装

基于其他发行版安装

LiveCD下载安装

装后须知

备份

迁移

升级

支持捐助、加入社区

二次开发

系统演示

硬件需求

免费题库

求助 报错

如果您喜欢在线聊天,希望问题获得及时反馈,不介意付费获得服务,请加官方群23361372

更新日志

2020-01-31 更新:@melongist 增加了很多页面美化。

2020-01-27 更新:题目限时增强为浮点型,3位小数精度,即标称毫秒(ms)。

2020-01-26 更新:允许为每个Web添加多个UDP通知对象,每个判题服务器允许使用不同的UDP端口监听消息。阿里云+腾讯云测试通过。

2020-01-23 更新:修订了Moodle集成代码,实现HUSTOJ给moodle系统作业自动判分。

2020-01-20 更新:删除noip模式比赛的多余提交记录,允许自定义“noip”关键词,增加privilege表user_id索引。

2019-12-19 更新:增加了judge.conf中的注释,提供了备案号变量$OJ_BEIAN,对系统判题时间分辨率进行了更新优化,提高灵活度。

2019-11-23 喜讯:hustoj在首届深度软件开发大赛中获得三等奖。

2019-11-21 补丁:修复比赛中Edit按钮后可以选择出题人禁用的语言提交【感谢湘潭大学谢老师的报告】。

2019-11-20 更新:在运行结果对比输出(OJ_SHOW_DIFF)中提示每个数据点的结果(AC/WA/TLE...)。

2019-11-16 优化:muzea 开发了从github到gitee的同步机制,并部署了CI。

2019-11-13 更新:在运行时错误(RuntimeError)中显示数据点文件名(infile)

2019-10-30 更新:提供$OJ_OI_MODE开关。

2019-10-29 更新:加强了OI模式下的限制,控制Web行为。

2019-10-3 更新:修订测试deepin15.11安装脚本,补丁:注册页面验证csrf

2019-9-23 补丁:修复昵称比赛中不更新问题,以及提醒官方群用户及时更新处理504超时问题。

2019-9-21 补丁:修复部分安装脚本不能执行第二次的问题

2019-8-6 更新:支持用UDP数据包触发判题轮询,实现Web本地judge秒判。

2019-7-26 更新:支持华为鲲鹏服务器,aarch64,感谢深度科技公司和华为云提供鲲鹏服务器。

2019-7-6 NOIP:对于标题带有NOIP字样的比赛,比赛结束后才能看到结果。

2019-7-4 mark:设置$OJ_MARK="mark"显示得分,$OJ_MARK="percent"显示错误率(WA)或通过率(AC),设置$OJ_MARK=""只显示最终结果。

2019-6-24 文档:对项目首页进行分块标注,调整顺序和内容,增加目录。

2019-6-12 更新:添加Fortran语言、Matlab(Octave),修订:比赛结束后编辑时丢失提交统计数据、修复部分RE。

2019-5-18 修订:16.04以上版本FB显示异常。 基于OpenJudger的Windows集成便携版 浙传网盘

2019-5-17 修订:改善ajax,减少并发量,降低web压力,提高judge轮询效率。

2019-5-15 修订:修复了部分TLE误判为RE的情况,主要是在Ubuntu18/19 Deepin15.9/15.10 以上的版本,估计与gcc/g++有关。

2019-5-7 更新:muzea 提供了Debian安装包打包(*.deb),https://github.com/zhblue/hustoj/releases

2019-4-13 更新:支持SQL判题,基于sqlite3,支持龙芯3A3000(致谢江苏航天龙梦信息技术有限公司提供龙芯主机!)。

2019-3-14 更新:主线支持 树莓派(arm) 龙芯(loongson-2f) i386 x86_64

安装说明

注意事项

根据你选择的发行版不同,从下面三个脚本里选一个来用。

不要相信百度来的长篇大论的所谓教程,那些都是好几年前的老皇历了,会导致不判题,不显示,不好升级等等问题。

尤其别装apache,如果已经安装,请先停用或卸载,以免80端口冲突。

不要使用LNMP/LAMP/Cpanel/其他面板程序提供的Mysql Nginx Apache PHP 环境,安装脚本已经包含所有必须环境的安装。

腾讯云用户请换软件源,增加multiverse。

阿里云用户请百度“阿里云 80端口”

校园网安装

近期github的svn访问缓慢,可以到release中下载tar.gz版本,然后用install目录下的*-bytgz.sh脚本安装。 但是注意这样安装的实例,将来升级时只能手工升级。 例如18.04下载好Releases中的19.06.04.tar.gz,然后准备好install-ubuntu18-bytgz.sh

sudo bash install-ubuntu18-bytgz.sh 19.06.04.tar.gz

基于Ubuntu18.04 通过gitee安装 / 腾讯云用户请换软件源

wget https://gitee.com/zhblue/hustoj/raw/master/trunk/install/install-ubuntu18-gitee.sh
sudo bash install-ubuntu18-gitee.sh

基于Ubuntu18.04安装 / 腾讯云用户请换软件源

wget https://github.com/zhblue/hustoj/raw/master/trunk/install/install-ubuntu18.04.sh
sudo bash install-ubuntu18.04.sh

基于Ubuntu16.04安装 / 腾讯云用户请换软件源

首先安装ubuntu16.04(如果没有18再选这个),然后用下面脚本快速安装OJ:

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu16+.sh
sudo bash install-ubuntu16+.sh

https://www.youtube.com/watch?v=nlhmfZqyHnA

基于Deepin15+安装

国内桌面用户Deepin15.9+(内置QQ微信WPS方便出题人本地测试,最新15.11测试通过)

wget https://github.com/zhblue/hustoj/raw/master/trunk/install/install-deepin15.9.sh
sudo bash install-deepin15.9.sh

基于Centos安装

假如你不得已非要用centos7 (有的语言可能不支持,但是某些机架式服务器的Raid卡Ubuntu不认只能装CentOS),可以用下面脚本快速安装OJ:

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-centos7.sh
sudo bash install-centos7.sh

REDHAT / CENTOS 用户请浏览

https://github.com/zhblue/hustoj/blob/master/wiki/CentOSx86_64.md

https://github.com/zhblue/hustoj/blob/master/wiki/CentOS.md

基于Docker安装

docker安装,可用于快速体验HUSTOJ的全部功能,可能存在未知的魔法问题,请慎重考虑用于生产环境!!! 使用构建好的docker镜像(GitLab CI/CD系统自动构建)

docker run -d           \
    --name hustoj       \
    -p 8080:80          \
    -v ~/volume:/volume \
    registry.gitlab.com/mgdream/hustoj

部署后使用浏览器访问http://localhost:8080

基于其他发行版安装

其他的发行版,如树莓派的raspbian8/9,ubuntu14.04,deepin的安装脚本在install目录可以找到,但是不完善,安装后需要部分手工修复调整。

https://www.youtube.com/watch?v=hRap7ettUWc

树莓派用户请用rpi分支源码(实验性质)手工搭建web,并编译安装core目录下的judged和judge_client。

更多安装方法

LiveCD下载安装

Linux不熟悉的用户推荐使用:

HUSTOJ_LiveCD(发送"livecd"到微信公众号onlinejudge,获得百度云下载链接)

HUSTOJ_Windows(仅支持XP,QQ群23361372共享文件)进行安装。

使用说明见iso中README,也可以参考LiveCD简介

Linux新手请看鸟哥的私房菜

建好系统需要题目,请访问TK题库freeeproblemset项目

装后须知

常见问题自动应答微信公众号:hustoj 关注后回复: 新装系统、升级、目录等关键词,系统会自动回复相关帮助。

有问题请先查阅 FAQ常见问答Wiki使用技巧 或使用搜索引擎。

安装完成,用admin作为用户名注册一个用户,自动成为管理员。

大部分功能和选项的开关和参数调整都在配置文件中,安装后几个重要配置文件的位置如下:

/home/judge/etc/judge.conf                                                      判题judged/judge_client
/home/judge/src/web/include/db_info.inc.php                                     Web
/etc/php5/fpm/php.ini 或 /etc/php7.0/fpm/php.ini 或 /etc/php.ini (in Centos7)    php
/etc/nginx/sites-enabled/default 或 /etc/nginx/nginx.conf (in Centos7)          nginx

如果用户量比较大,报50x错误,可能需要修改/etc/nginx/nginx.conf中的设置:

	worker_processes 8;    #其中数字8可以取CPU核心数的整数倍。
	events {
		worker_connections 2048;
		multi_accept on;
	}

如果遇到比赛人数多,比赛排名xls文件无法下载,请修改/etc/nginx/sites-enabled/default,在fastcgi_pass一行的后面增加

 	fastcgi_buffer_size 128k;
        fastcgi_buffers 32 32k;

保存后,重启nginx

备份

脚本安装的用户,可以使用install目录中的bak.sh进行备份。

sudo bash /home/judge/src/install/bak.sh

备份后的数据在/var/backups/

百度学习crontab的用法后,可以使用

sudo crontab -e

定制自动备份计划,部分安装脚本中包含了自动备份,但可能需要运行上面的语句一次来激活。

迁移

如果你需要进行跨系统迁移(如从Ubuntu迁移到CentOS),可以尝试使用下面的脚本进行备份

sudo bash /home/judge/src/install/backup+.sh

备份后的归档在/home/judge/backup,命名格式为%Y-%m-%d-%H-%M-%S

将你需要迁移的归档复制到目标系统的/home/judge/backup目录下,执行下面的脚本进行恢复

sudo bash /home/judge/src/install/restore+.sh

脚本的第一个参数为恢复的目标归档,如果没有参数则默认为按名字排序后字典序最大的归档

升级

脚本安装的用户,可以使用install目录中的update-hustoj进行升级。

sudo bash /home/judge/src/install/update-hustoj

升级脚本执行后,可能需要登陆web端管理后台,执行一次更新数据库。

修复

自己不小心改坏了web代码,可以使用install目录中的fixing.sh进行系统修复。

支持捐助、加入社区

使用上需要帮助,请加用户交流QQ群23361372,验证问题答案:开源软件。 或加TG

群共享有题库 安装盘 文档 ,群内可以讨论 答疑 。 新加群,请改群名片,5分钟后可以发言 。 请尊重开源软件开发者的辛苦劳动,出言不逊者将被踢出,群费不退。

您可以用这几种方式支援本项目:

1、付费50加入官方群23361372

2、领取并使用支付宝红包

3、在TK题库充值下载题目

4、右上角点击Star,给本项目加星

5、保留您安装使用的系统中页脚的公众号和红包二维码

6、在您的论文中引用本项目的网址

7、向其他老师同学推荐本项目

系统演示

前台演示 龙芯部署

后台功能

硬件需求

更严谨的请求数QPS测试,请参考muzea的hustoj web 跑分小工具

免费题库

访问项目FPS下载免费例程。

访问TK题库免费专区

FQ访问谷歌代码存档版,下载老版本FPS共享题库。

About

Popular Open Source Online Judge based on PHP/C++/MySQL/Linux for ACM/ICPC and NOIP training, with easy installation. 开源OJ系统

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 76.5%
  • PHP 15.1%
  • CSS 4.4%
  • HTML 0.8%
  • C 0.8%
  • C++ 0.7%
  • Other 1.7%