mxd's Online Judge (使用HUST OJ搭建)

正文:

Part 1 选择一个适合自己的OJ


目前,在网络上有很多的OJ系统可以让我们一键部署,特别方便

比如以下OJ都支持一键部署:

"> mxd's Online Judge (使用HUST OJ搭建)

正文:

Part 1 选择一个适合自己的OJ


目前,在网络上有很多的OJ系统可以让我们一键部署,特别方便

比如以下OJ都支持一键部署:

"> 如何搭建一个属于自己的OJ系统 – mxd's Blog
如何搭建一个属于自己的OJ系统
本文最后更新于 509 天前,其中的信息可能已经有所发展或是发生改变。

欢迎各位访问我的OJ:mxd's Online Judge (使用HUST OJ搭建)


正文:

Part 1 选择一个适合自己的OJ


目前,在网络上有很多的OJ系统可以让我们一键部署,特别方便

比如以下OJ都支持一键部署:

HUST OJ https://github.com/zhblue/hustoj/

Hydro https://docs.hydro.ac/

QDUOJ https://opensource.qduoj.com/#/

还有很多,我就不一一列出来了

Part 2.1 搭建OJ


  1. 搭建HUST OJ

  2. 搭建Hydro

  3. 搭建QDUOJ

Part 2.2 搭建HUST OJ


其实官网内容已经很详细了   https://github.com/zhblue/hustoj/

我来说几个必踩的坑:

1.更换主题模板

修改 db_info.inc.php[默认位置/home/judge/src/web/include] 中 $OJ_TEMPLATE 的值 就行

默认是 syzoj 改成如下的值就可以使用其他主题!

bs3原版

sweet主题

syzoj主题 added by@renbaoshuo

bshark主题 added by @yemaster

mdui主题 added by@renbaoshuo

2.SSL配置

如果你像我一样用的是宝塔面板,只需要按照其他网站一样部署就行了。特别简单

    

RR]HZNT91L}A]Q2OQ7ZJ$MH.png

如果你没有使用宝塔面板的,使用的是apache或nginx就要申请证书并且到apache/nginx当中正确配置。

3.背景图片

hust oj 默认是从Bing每日一图同步,可以在配置文件db_info.inc.php[默认位置/home/judge/src/web/include] 中 $OJ_BG 的值

比如我的就是这样的:

image.png

其实db_info.inc.php这里面的注释都写的非常详细的,各位可以自己研究一下

4.时间不同步(难点)

这个可是重头戏,困扰了我好久,就是代码提交的时间跟当前时间对不上,官方文档里面也没有但是最后还是被我解决了

具体状态表现如下:电脑当前时间14:36,在此时提交代码 提交时间会晚8小时。 其实一眼就可以看出来是时区的问题

{@7S[90EQFDY34HPMERZ`1B.png

该怎么解决呢?(在ROOT身份下运行)

timedatectl set-timezone Asia/Shanghai
timedatectl set-local-rtc 1

搞定!然后reboot

sudo reboot

重启后还是不行?运行一下timedatectl   

看看是不是像我这样

image.png

再重启试试!

Part 2.3 搭建 QDUOJ


前提:我是在Ubuntu 22.04 纯净系统 上完成的

我的系统上没有部署过任何东西!!

CentOS我没有测试过,你可以自己把apt换成yum。

CentOS已经很老了,建议换系统!!!!

安装过docker的,请先完全卸载再操作!!以防万一!!!

完全卸载docker:

https://blog.csdn.net/qq_45495857/article/details/113743109

更新一下软件源

sudo apt-get update

什么?太慢?换个软件源就是了!  https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

清华大学换源链接,自己更改发行版!

然后:

sudo apt-get install -y vim python3-pip curl git

更新pip

pip3 install --upgrade pip
# 或者下面的 看情况
pip install --upgrade pip

然后通过pip 安装docker-compose

pip install docker-compose

下载docker

国内使用脚本一键安装:sudo curl -sSL https://get.daocloud.io/docker | sh 

//来自作者2023/07/27提醒,今天我用这个时,已经失效!

国外使用脚本一键安装:sudo curl -sSL get.docker.com | sh

//换用这个就行!

然后选择一个合适的目录  执行  空间一定大于5GiB!!

git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy

建议更改配置文件(如果没有特殊要求别操作!!!)

vim docker-compose.yml

最后,docker-compose一下!(时间超级久 10-30min左右)

docker-compose up -d

当你看见几个绿油油的DONE过后就大功告成了!!

顺带说下,请确保80、3306、6379这几个端口不要被占用

当服务启动完成后,执行下面命令查看容器运行状态,如果没有unhealthy 或 Exited (x) xxx 就代表 OJ 已经启动成功。

现在就可以开始使用了。HTTP80端口或者HTTPS443端口。

云服务器的用户记得放行对应端口

后台管理路径为/admin,自动添加的超级管理员用户名为 root,密码为 rootroot, 请务必及时修改密码

//这几句转载自https://blog.csdn.net/qq_43058685/article/details/108871714 感谢!

自此,大功告成!各位可自行探索!

QDUOJ SSL 配置

HTTPS 相关问题

OnlineJudge 强烈推荐使用 HTTPS 协议

  • 数据传输加密,提高安全性,防劫持

  • 可以使用 HTTP2,加快访问速度(默认配置)

OnlineJudge 的部署脚本默认情况下会生成一个自签名证书,浏览器会提示不信任,可以自己去申请对应域名的可信证书,OnlineJudge 也提供了下面两个特性方便 HTTPS 证书的申请和使用。

申请 HTTPS 证书

/.well-known 的 url 前缀,会自动使用 data/backend/ssl/.well-known 目录下面的文件,默认情况下 data/backend/ssl/ 已经存在,所以可以手动的创建 .well-known 及其子文件夹,比如需要 url 为 /.well-known/pki-validation/fileauth.txt 的验证文件,就可以创建 data/backend/ssl/.well-known/pki-validation/fileauth.txt 文件,内容为指定的内容。

然后替换 data/backend/ssl/ 下面的证书和私钥文件,之后 docker exec -it oj-backend sh -c "cd /app/deploy; supervisorctl restart nginx"

FORCE_HTTPS

如果 HTTPS 配置成功,为了增强安全性,推荐重定向 HTTP 流量到 HTTPS 流量,这时候可以取消注释 docker-compose.yml 文件中的 FORCE_HTTPS=1 这一行,然后 docker-compose up -d 重启即可。


Part 2.4 搭建Hydro OJ


搭建Hydro OJ, 官网说的也比较详细   https://docs.hydro.ac/docs/install/

我也是说说必踩的坑:

1.SSL

这个困扰了我好久,最后看来官方文档加上我的多次尝试才成功

image.png

样例Canddy File

hydro.ac {
  log {
    output file /data/access.log {
      roll_size 1gb
      roll_keep_for 72h
    }
    format json
  }
  root * /root/.hydro/static
  @static {
    file {
      try_files {path}
    }
  }
  handle @static {
    file_server
  }
  handle {
    reverse_proxy http://127.0.0.1:8888
  }
}

我在此不多赘述,有疑问请留言!

版权声明:本文由mxd's Blog发布,如需转载请注明出处。
如果文章中有风险行为,文章作者不负任何责任。
除非另有说明,否则本站内容依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接。

本文链接:https://blog.mxdyeah.top/mxdyeah_blog_post/6.html
本文标题:如何搭建一个属于自己的OJ系统
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇