怎样部署hustoj

2021年10月5日 | 分类: 【技术】

【介绍】

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

官网:https://github.com/zhblue/hustoj

知乎:https://www.zhihu.com/people/zhang-hao-bin-2

博客:http://www.hustoj.com/

参考:https://zhblue.github.io/hustoj/#/README
参考:https://zhblue.github.io/hustoj/#/Install
参考:https://github.com/zhblue/hustoj/tree/master/wiki

参考:https://blog.csdn.net/chaoshenyutou/article/details/18950909
参考:https://cloud.tencent.com/developer/article/1545184?from=article.detail.1086539

【魔改】

https://github.com/Pigeon-Developer

【部署】

基于 Ubuntu 22.04 安装:

wget http://dl.hustoj.com/install-ubuntu22.04.sh && sudo bash install-ubuntu22.04.sh

安装完毕,输出:

Successfully built 05996e2fc023
Successfully tagged hustoj:latest
install-ubuntu20.04.sh: line 165: cls: command not found
Remember your database account for HUST Online Judge:
username:debian-sys-maint
password:aY7Hmv5G3a6LUiPq
DO NOT POST THESE INFORMATION ON ANY PUBLIC CHANNEL!
Register a user as 'admin' on http://127.0.0.1/
打开http://127.0.0.1/ 注册用户admin,获得管理员权限。
不要在QQ群或其他地方公开发送以上信息,否则可能导致系统安全受到威胁。

现在即可使用 IP 访问。

如将域名解析到 IP ,可实现 www.domain.name 访问。

【配置】

需求:全局 https 访问

参考:https://amon.org/hustoj-https

需求:导入题目 fps

参考:https://amon.org/hustoj-fps

需求:支持 Pascal 判题

参考:https://amon.org/hustoj-pascal

需求:支持 Java 判题

参考:https://amon.org/hustoj-java

需求:用户仅能使用QQ邮箱注册

参考:https://amon.org/hustoj-qq

原程序让用户以QQ头像为自定义头像。

文件路径:/home/judge/src/web/template/syzoj/userinfo.php
可见:// 如果email填写的是qq邮箱,取QQ头像显示

测试后显示QQ头像正常。只需要约定大家只能使用QQ邮箱得了。

需求:安装 phpmyadmin 在线管理数据库

参考:https://amon.org/phpmyadmin

chown -R www-data:root /home/judge/src/web/phpmyadmin

访问:https://domain.name/phpmyadmin

使用 hustoj 部署完之后输出的数据库用户名和密码登录。

username:debian-sys-maint
password:aJ8Qmv5G3a6LUiPq

登录进去后,查看 jol 数据库,即为 hustoj 所用。

需求:修改 favicon.ico

文件路径:/home/judge/src/web/favicon.ico

用新的 favicon.ico 直接覆盖。

需求:禁止注册新用户

文件路径:/home/judge/src/web/include/db_info.inc.php

static  $OJ_REGISTER=true; //允许注册新用户
static  $OJ_REG_NEED_CONFIRM=false; //新注册用户需要审核
static  $OJ_NEED_LOGIN=false; //需要登录才能访问
static  $OJ_LONG_LOGIN=false; //启用长时间登录信息保留
static  $OJ_KEEP_TIME="30";  //登录Cookie有效时间(单位:天(day),仅在上一行为true时生效)

需求:修改网站名称

文件路径:/home/judge/src/web/include/db_info.inc.php

static 	$OJ_NAME="Site Name";  //左上角显示的系统名称