csthenry / HOJ-Deploy

HOJ: Deployment warehouse supports one click deployment based on docker compose and supports single machine deployment and distributed deployment!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

环境准备

Linux 环境

1. 安装必要的依赖

sudo apt-get update && sudo apt-get install -y vim curl git

2. 安装 Docker

  1. 安装需要的包

    sudo apt-get update
  2. 安装依赖包

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
  1. 添加 Docker 的官方 GPG 密钥

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  2. 设置远程仓库

    sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
  3. 安装 Docker-CE

    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  4. 验证是否成功

    sudo docker run hello-world

3. 安装docker-compose

  1. 下载

    sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  2. 授权

    sudo chmod +x /usr/local/bin/docker-compose

Windows 环境

Windows 下的安装仅供体验,勿在生产环境使用。如有必要,请使用虚拟机安装 Linux 并将 OJ 安装在其中。

以下教程仅适用于 Win10 x64 下的 PowerShell

  1. 安装 Windows 的 Docker 工具
  2. 右击右下角 Docker 图标,选择 Settings 进行设置
  3. 选择 Shared Drives 菜单,之后勾选你想安装 OJ 的盘符位置(例如勾选D盘),点击 Apply
  4. 输入 Windows 的账号密码进行文件共享
  5. 安装 Pythonpipgitdocker-compose,安装方法自行搜索。

开始部署

  1. 选择好需要安装的位置,运行下面命令

    git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy
  2. 单机部署(建议服务器内存2G以上)

    注意:以下操作建议试用,配置大部分是默认的,实际运行请修改docker-compose.yml文件的配置

    cd standAlone && docker-compose up -d

    根据网速情况,大约十到二十分钟即可安装完毕,全程无需人工干预。

    等待命令执行完毕后,查看容器状态

    docker ps -a

    大概初始化启动需要一至两分钟,当看到所有的容器的状态status都为UPhealthy就代表 OJ 已经启动成功。

    更多自定义配置请查看**/standAlone/.env**的文件,或者/src下各组件的详情说明

    以下默认参数说明

    • 默认超级管理员账号与密码:root / hoj123456
    • 默认redis密码:hoj123456
    • 默认mysql账号与密码:root / hoj123456
    • 默认nacos管理员账号与密码:root / hoj123456
    • 默认不开启https,开启需修改文件同时提供证书文件
    • 判题并发数默认:cpu核心数*2
  • 默认开启vj判题,需要手动修改添加账号与密码,如果不添加不能vj判题!

    • vj判题并发数默认:cpu核心数*4

    登录root账号到后台查看服务状态以及到http://ip/admin/conf修改服务配置!

    注意:网站的注册及用户账号相关操作需要邮件系统,所以请在系统配置中配置自己的邮件服务。

    开启使用例如QQ邮箱提供的POP3/SMTP服务:

    Host: smtp.qq.com
    Port: 465
    Username: qq邮箱账号
    Password: 开启SMTP服务后生成的随机授权码
  1. 分布式部署(默认开启rsync数据同步)

    • 主服务启动,默认不提供判题服务,请修改该启动文件配置

      cd distributed/main
      vim .env # 请根据文件内注释提示修改

      配置修改保存后,在docker-compose.yml当前路径下启动该服务

      docker-compose up -d
    • 判题服务启动,请修改该启动文件配置

      cd distributed/judgeserver
      vim .env # 请根据文件内注释提示修改

      配置修改保存后,在docker-compose.yml当前路径下启动该服务

      docker-compose up -d

    两个服务都启动完成,在浏览器输入主服务ip或域名进行访问,登录root账号到后台查看服务状态以及到http://ip/admin/conf修改服务配置!

如果需要开启https

  • 单机:

    提供server.crt和server.key证书与密钥文件放置/standAlone目录下,与docker-compose.yml.env文件放置同一位置,然后修改docker-compose.yml中的hoj-frontend的配置

  • 分布式:提供server.crt和server.key证书与密钥文件放置/distributed/main目录下,与docker-compose.yml.env文件放置同一位置,然后修改docker-compose.yml`中的hoj-frontend的配置

hoj-frontend:
    image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend
    container_name: hoj-frontend
    restart: always
    # 开启https,请提供证书
    volumes:
      - ./server.crt:/etc/nginx/etc/crt/server.crt
      - ./server.key:/etc/nginx/etc/crt/server.key
    environment:
      - SERVER_NAME=localhost  # 提供你的域名!!!!
      - BACKEND_SERVER_HOST=${BACKEND_HOST:-172.20.0.5} # backend后端服务地址
      - BACKEND_SERVER_PORT=${BACKEND_PORT:-6688} # backend后端服务端口号
      - USE_HTTPS=true # 使用https请设置为true
    ports:
      - "80:80"
      - "443:443"
    networks:
      hoj-network:
        ipv4_address: 172.20.0.6

最后

在线文档:HOJ文档 https://docs.hdoi.cn

在线demo:https://www.hcode.top

源代码主仓库:https://gitee.com/himitzh0730/hoj

About

HOJ: Deployment warehouse supports one click deployment based on docker compose and supports single machine deployment and distributed deployment!

License:GNU General Public License v3.0


Languages

Language:C++ 68.1%Language:JavaScript 20.4%Language:HTML 5.4%Language:Shell 2.4%Language:CSS 2.2%Language:Dockerfile 1.5%