Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第三方部署 #31

Closed
9 of 11 tasks
Jiang-Xuan opened this issue Oct 23, 2019 · 17 comments · Fixed by #138
Closed
9 of 11 tasks

第三方部署 #31

Jiang-Xuan opened this issue Oct 23, 2019 · 17 comments · Fixed by #138
Assignees
Labels
help wanted Extra attention is needed
Milestone

Comments

@Jiang-Xuan
Copy link
Owner

Jiang-Xuan commented Oct 23, 2019

2020.3.30 剩余的工作

  • 在多系统 Ubuntu, centos 下测试 self-hosted.config.js 测试用例应该在多平台下进行测试, 不属于该 issue 内容. e2e 测试就是在测试可用性测试
  • bff 层获取 index.html 的逻辑根据 frondend.asset 中的配置获取

图片存储源配置

self-hosted.config.js -> backend.imageStorage

  • alioss, 可以通过 CDN 加速
  • 本地的某一个地址, 内网访问会比 CDN 更快 目前代码中并不支持 本地存储目录存储图片, 该 issue 只是为了支持第三方部署, 不是为了添加新功能, 该功能推迟

前端静态资源发布配置

self-hosted.config.js -> frondend.asset

  • alioss, 可以通过 CDN 加速
  • 本地的某一个地址, 内网访问会比 CDN 更快

MongoDB 数据库

  • 访问地址配置

后端服务配置

  • 监听端口
  • 生成删除图片 Key 的加密 key
  • 请求频率限制, 以秒为单位
  • 请求频率限制, 以小时为单位
@Jiang-Xuan Jiang-Xuan added this to the Backlog milestone Oct 23, 2019
@Jiang-Xuan Jiang-Xuan modified the milestones: Backlog, Version 0.2.0 Nov 5, 2019
@Jiang-Xuan Jiang-Xuan added explore 在某一个版本之中的探索功能 help wanted Extra attention is needed labels Nov 5, 2019
@Jiang-Xuan
Copy link
Owner Author

第三方部署直接就是 production 环境

需要抽出来的环境变量有(还未最终确定):

  1. 机密数据 MongoDB url, 包括数据库 username, password, database
  2. 机密数据 上传至阿里云的 accessKey id
  3. 机密数据 上传至阿里云的 accessKey secret
  4. 开放数据 前端 bff 层服务监听的端口(默认: 4303)
  5. 开放数据 后端服务监听的端口(默认: 4300)

@Jiang-Xuan
Copy link
Owner Author

当前的项目使用 pm2 作为进程守护工具

@Jiang-Xuan
Copy link
Owner Author

第三方部署需要是可升级式的部署, 提供升级的文档, 相应的提供卸载的文档

@Jiang-Xuan
Copy link
Owner Author

Jiang-Xuan commented Nov 8, 2019

  1. 开放数据 前端 bff 层服务监听的端口(默认: 4303)
  2. 开放数据 后端服务监听的端口(默认: 4300)

启动时从用户的配置文件中读取相应的值, 校验数据格式是否正确, 不正确抛出错误, 终止程序. 如果没有的话使用系统的内部值

  • 配置文件命名?
  • 配置文件放置在哪里?

self-hosted.config.js

@Jiang-Xuan Jiang-Xuan pinned this issue Nov 12, 2019
@Jiang-Xuan Jiang-Xuan self-assigned this Nov 13, 2019
@Jiang-Xuan
Copy link
Owner Author

校验 ali-oss 的 accessKeyId accessKeySecret 等参数

new Oss({
   // 配置文件中的 ali-oss 的配置数据
})

只会校验配置的参数和格式, 不会校验是否 id, secret 是否真的有效, 可以上传或者是删除图片, 这种校验涉及到第三方服务, 可以暂不校验, 等待服务启动起来之后再行校验

为什么不校验是否真正有效?

因为 id, key 是否有效需要阿里云第三方服务校验, 不属于该系统的校验, 该系统只校验 id, key 是字符串就可, 当真正的上传图片的时候才去第三方校验, 如果失败, 让用户感知是第三方服务抛出了错误, 而不是该系统抛出了错误

@Jiang-Xuan

This comment has been minimized.

@Jiang-Xuan

This comment has been minimized.

@Jiang-Xuan
Copy link
Owner Author

Jiang-Xuan commented Jan 5, 2020

参考 https://github.com/DXY-F2E/api-mocker , index.html 可以通过 nginx 配置进行访问, bff 层不是必须的, 因此 BFF 的配置和启动皆为可选项

静态资源也只有启动的第一次的时候需要, 其实的时候其实不是必须, 静态资源的打包需要配置的就是 index.html 的静态资源的引用地址, webpack 支持配置 cdn 的地址(publicPath), 所以这个配置需要交给用户

@Jiang-Xuan
Copy link
Owner Author

用户的配置文件在仓库中被 gitignore, 里面存储机密数据和非机密数据, 统称为配置

@Jiang-Xuan
Copy link
Owner Author

Jiang-Xuan commented Mar 9, 2020

前端静态资源发布管理

  • 是否将资源发布至云存储?

是 使用何种云服务发布静态资源, 目前只支持阿里云oss
否 将静态资源挂载到何处, 默认为 frondend 目录下的 dist 目录

module.exports = {
    frondend: {
        asset: {
            useCloudStorage: false,
            cloudStorageUpload: {
                aliOss: {
                    accessKeyId: '',
                    accessKeySecret: '',
                    bucket: '',
                    secure: true
               }
            },
           // 资源要挂载的目录地址, 默认为 frondend 目录下的 dist 目录
            location: '',
           // webpack 打包的 publicPath 配置, 详情可以参考 webpack 的文档
            webpackPublicPath: '',
        }
    }
}

@Jiang-Xuan

This comment has been minimized.

@Jiang-Xuan
Copy link
Owner Author

如何跨端(windows, linux)测试

安装 -> config -> 启动服务 -> 运行测试

@Jiang-Xuan
Copy link
Owner Author

用户和手动安装方式

  1. git clone <仓库地址>

  2. 创建 self-hosted.config.js 配置文件

  3. 开始启动各项服务

    1. frondend 层安装依赖, 打包, 发布静态资源

    2. bff 层安装依赖, 启动 HTTP 服务

    3. backend 层安装依赖, 启动 HTTP 服务

Github Actions 方式

  1. git clone <仓库地址> Github Actions 负责执行

  2. 创建 self-hosted.config.js, 通过 Github Actions secret 传递敏感数据 由 Github Actions 调用脚本负责执行这一操作

  3. 开始启动各项服务

    1. frondend 层安装依赖, 打包, 发布静态资源 由 Github Actions 调用脚本负责执行这一操作

    2. bff 层安装依赖, 启动 HTTP 服务 由 Github Actions 调用 pm2 deploy 来实现 CD

    3. backend 层安装依赖, 启动 HTTP 服务 由 Github Actions 调用 pm2 deploy 来实现 CD

@Jiang-Xuan

This comment has been minimized.

@Jiang-Xuan
Copy link
Owner Author

Jiang-Xuan commented Mar 18, 2020

  /** @type {{}} 后端 */
  backend: {
    /** @type {{}} 图片存储源 */
    imageStorage: {
      aliOss: {}
    },
    /** @type {number} HTTP 服务监听的端口号 */
    listenPort: 1,
    /** @type {string} 生成删除图片 Key 的加密 key */
    deleteKeyCryptoKey: '',
    /** @type {[number, number]} 请求频率限制, 以秒为单位 */
    seconds: [],
    /** @type {[number, number]} 请求频率限制, 以小时为单位 */
    hours: [],
    /** @type {string} mongodb 数据库的地址 */
    dbPath: ''
  }

@Jiang-Xuan
Copy link
Owner Author

Jiang-Xuan commented Mar 23, 2020

目前仓库里面后端 e2e 测试需要 aliyun 的 oss 服务介入, 所以需要提供测试的 alioss 配置

test: {
  imageStorage: {
    aliOss: {}
  }
}

@Jiang-Xuan
Copy link
Owner Author

Jiang-Xuan commented Mar 27, 2020

本地存储目录配置

local: {
path: '/path/to/store/images'
}

目前代码中并不支持 本地存储目录存储图片, 该 issue 只是为了支持第三方部署, 不是为了添加新功能, 该功能推迟

@Jiang-Xuan Jiang-Xuan removed the explore 在某一个版本之中的探索功能 label Mar 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant