发布于 2024/9/22:该文章已脱去重要的私人信息。

本日志为重新搭建评测系统时记录过程所写。

由于本文是记录性日志,许多内容简略写过,如有疑惑之处,欢迎邮件联系。

服务器配置:2 Cores CPU & 4GB RAM & 60G SSD

System: Ubuntu LTS 18.04

由于是大陆服务器(腾讯轻量云服务器),因此下述安装过程包含一些技巧。

安装方式这里采用快速部署方式。

本地机器为 Windows 11

用密钥方式在本地电脑登入服务器

一、服务器绑定密钥

在控制台处,选择 SSH密钥 界面,创建密钥

这里我们创建了一个名为 hoj2024 的SSH密钥。

此处创建成功之后,浏览器会下载一个名为 hoj2024.pem 的私钥,待会我们将用到。

创建成功之后,我们回到服务器界面,选择 SSH密钥 选项,绑定密钥。

界面如下,按提示操作即可。

二、本地电脑配置密钥

这里我们创建一个文件夹,命名为 hoj-build,作为我们接下来的工作目录,放置接下来所需的文件和执行相关所需的操作。

该文件夹绝对位置:E:\hoj-build\

将先前自动下载的私钥文件 hoj2024.pem 放置于该位置。

接下来,在终端输入如下操作:(显然是在工作目录下执行命令)

1
2
$ icacls hoj2024.pem /grant <Users Name>:F
$ icacls hoj2024.pem /inheritancelevel:r

<Users Name> 替换为当前我们电脑的用户名即可。

如何查找自己的用户名?打开文件夹,地址栏输入 C:\Users\ ,如果是自己的电脑,除了 Default公用,剩下的就是你的用户名。

三、使用 ssh 和 scp 登录传输文件

接下来登录和传输文件只需要如下命令:

1
2
3
ssh -i hoj2024.pem ubuntu@<Server IP>

scp -i hoj2024.pem -r <本地文件/文件夹地址> ubuntu@<Server IP>:<想要放置在远程的服务器地址>

这里不再赘述,给出一篇相关使用文章,同时你也可以使用相关的一些图形界面软件如 PuttyWinscp

SSH与SCP基本用法-知乎专栏

配置 root 密码

ubuntu 用户登入服务器后,执行下述指令:

1
2
3
4
$ sudo passwd root # 按提示输入两次密码即可

$ su root # 输入密码后即可使用 root 账户

部署 HOJ 前的环境配置

一、安装 docker

ubuntu 用户登入服务器后,执行下述指令:

  1. 更新软件列表

    1
    $ sudo apt-get update # 更新软件列表
  2. 安装相关依赖

    1
    2
    3
    4
    5
    6
    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  3. 添加 GPG 密钥,这里注意,由于国内网络环境,修改为阿里云镜像

    1
    $ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  4. 添加 阿里云镜像源并更新软件列表

    1
    2
    3
    $ sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

    $ sudo apt-get update
  5. 安装 Docker-CE

    1
    2
    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
  6. 修改 Docker Hub 源,加速镜像下载。

    6.1 打开配置文件

    1
    $ vim /etc/docker/daemon.json

    6.2 按 iinsert 切换至编辑模式,添加如下内容

    1
    2
    3
    4
    5
    {
    "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
    ]
    }

    随后按 esc 退出编辑模式,输入 :wq 保存并退出。

    6.3 重启 docker

    1
    $ sudo systemctl restart docker

    6.4 检查当前 Docker 的配置

    1
    $ sudo docker info

    若返回下述部分,则成功。

  7. 验证是否成功

    1
    $ sudo docker run hello-world

二、安装 docker-compose

  1. 下载

    1
    $ sudo wget "https://pc.clougence.com/docker-compose-1.28.3" -O /usr/local/bin/docker-compose
  2. 赋予权限

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

参考文章:

博客园-ubuntu 18使用国内源安装指定版本docker,安装docker-compose,配置阿里云docker镜像加速器

腾讯云-安装 Docker 并配置镜像加速源

HOJ Docs-环境部署

部署HOJ

这里采用快速部署中的单机部署方式。

ubuntu 用户登入服务器后,执行下述指令:

这里我将安装位置置于 /home/ubuntu 下。

  1. 拉取仓库

    1
    $ git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy
  2. 进入单体部署文件夹

    1
    $ cd standAlone
  3. 查看文件,使用命令 ls -a ,显然包含一些文件。

    我们待会将会用到,docker-compose.yml.env 这两个文件。

  4. 修改配置文件里面的默认配置

    1
    $ vim .env

    修改三个初始密码。

    • 缓存Redis的密码配置项:REDIS_PASSWORD
    • 数据库MySQL的密码配置项:MYSQL_ROOT_PASSWORD
    • 服务注册中心Nacos的密码配置项:NACOS_PASSWORD
  5. 安装和启动服务

    1
    $ docker-compose up -d
  6. 查看服务状态

    1
    $ docker ps -a
  7. 查看网站是否搭建成功

    打开浏览器,访问你的服务器IP,若显示即成功。

    成功之后,记得立即进入后台修改超级管理员密码。

    1
    2
    账户:root
    密码:hoj123456

配置 SSL证书和自动化签证

这里我们使用 acme.sh 。

ubuntu 用户登入服务器后,使用 su root 跳转到 root 用户下执行命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# cd /home/ubuntu/

# mkdir ssl-auto

# cd ssl-auto

# git clone --depth 1 https://github.com/acmesh-official/acme.sh.git

# cd acme.sh

# ./acme.sh --install -m abcd@abcd.com

# source ~/.bashrc

# acme.sh --set-default-ca --server letsencrypt

# export DP_Id="此处填写你的 DNSPod Token ID"

# export DP_Key="此处填写 DNSPod Token Key"

# acme.sh --issue --dns dns_dp -d abcd.com -d www.abcd.com

# acme.sh --install-cert -d abcd.com \
--cert-file /home/ubuntu/hoj-deploy/standAlone/server.crt \
--key-file /home/ubuntu/hoj-deploy/standAlone/server.key \
--reloadcmd "cd /home/ubuntu/hoj-deploy/standAlone && docker-compose up -d"

里面的 DP_IdDP_Key 为:从 DNSPod 上申请得到的 DNSPod Token。访问地址如下:API 密钥-DNSPod

abcd@abcd.com 修改为你自己的电子邮箱;将 abcd.comwww.abcd.com 修改为你自己的域名。

此处不再赘述。

自动化配置完毕后,在 HOJ 下的 docker-compose.yml 文件中的 hoj-frontend 配置如下:

修改完成后重启容器即可:

1
$ sudo docker-compose up -d

自定义前端

logo 和 自定义前端同上图配置。

位置位于下方处。

1
2
3
/home/ubuntu/hoj-deploy/standAlone/logo

/home/ubuntu/hoj-deploy/standAlone/dist

配置完重启即可。