Skip to content

部署说明

Zisu Zhang edited this page Aug 25, 2023 · 4 revisions

AOI Server

如果您希望快速测试 AOI Server,可以使用 Docker Compose 快速单机部署(下面的小节)并继续到下一节。 若希望为生产环境部署,请详细阅读本节。

Docker Compose 快速单机部署

version: "3.8"

services:
  server:
    image: ghcr.io/zhzxdev/aoi-server:latest
    ports:
      - 8080:1926
    environment:
      - AOI_MONGO_URL=mongodb://mongo:27017/aoi
      - AOI_JWT_SECRET=${AOI_JWT_SECRET}

  mongo:
    image: mongo:latest
    volumes:
      - ./mongo:/data/db

  # minio:
  #   image: quay.io/minio/minio:latest
  #   ports:
  #     - 9000:9000
  #     - 9090:9090
  #   environment:
  #     - MINIO_ROOT_USER=${MINIO_ROOT_USER}
  #     - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
  #   volumes:
  #     - ./minio:/data
  #   command: server /data --console-address ":9090"

依赖服务

AOI Server 依赖如下服务:

其中,MongoDB和S3都可以采用本地部署或使用云服务(SaaS)。下面介绍如何本地部署这些服务。

MongoDB

推荐使用 Docker 部署 MongoDB。

docker run --name aoi-mongo -v /path/to/data:/data/db -p 27017:27017 -d mongo

上面的命令启动了一个名为 aoi-mongo 的 MongoDB 容器,将容器内的 /data/db 目录映射到宿主机的 /path/to/data 目录,同时将容器内的 27017 端口映射到宿主机的 27017 端口。

Minio (兼容S3 API)

推荐使用 Docker 部署 Minio。

docker run -d \
   -p 9000:9000 \
   -p 9090:9090 \
   --user $(id -u):$(id -g) \
   --name minio \
   -e "MINIO_ROOT_USER=ROOT" \
   -e "MINIO_ROOT_PASSWORD=ROOT1@3$" \
   -v ${HOME}/minio/data:/data \
   quay.io/minio/minio server /data --console-address ":9090"

请注意:该命令将会以当前用户运行 MinIO,并挂载 ${HOME}/minio/data 为存储目录。 请确保 ${HOME}/minio/data 已经存在。

创建后,可以在浏览器中访问 http://localhost:9090 来查看 MinIO 的管理界面。

部署服务器(手动)

AOI Server 发布在 npm 上,可以通过 npmyarn 来安装。

环境配置

AOI Server 需要 Node.JS 18 或更高的LTS版本。建议使用 nvm 管理 Node.JS 版本。

安装 NVM

请确保网络联通,运行以下命令安装 nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

重新进入终端,或者运行 source ~/.bashrc 使 nvm 生效。 运行 nvm --version 检查是否安装成功。

安装 Node.JS

运行以下命令安装 Node.JS 18:

nvm install 18

运行 node --version 检查是否安装成功。

安装 AOI Server

运行以下命令安装 AOI Server:

npm install -g @aoi-js/server

运行 which aoi-server 检查是否安装成功。 如果显示了 aoi-server 的路径,则安装成功。

部署服务器(Docker)

TODO

前端

@aoi-js/server 包含可选依赖 @aoi-js/frontend,后者提供了官方维护的前端,并在安装 @aoi-js/server 时会自动安装。

评测机

TODO