# oss 一个文件存储系统, 提供文件的存储, 访问和删除等服务, 不支持文件修改. ## 依赖 - os:Linux - jdk:11 - maven:3.9 - mysql:5.7 ## 架构 oss 项目模块: - oss-api - oss-sdk > 可看作 oss 的 client, 第三方使用引入此包可对 oss 中的数据进行操作 > > 和 [aliyun-oss-java-sdk](https://github.com/aliyun/aliyun-oss-java-sdk) 类似 - oss-store > 监听 4010 HTTP 端口和 14010 RPC 端口 > > 存储节点 - oss-console > 监听 4030 HTTP 端口和 14030 RPC 端口 > > 管理存储节点 > > 本模块由 [bnt](https://git.reghao.cn/reghao/bnt) 项目实现 oss-console 和 oss-store 之间的关系如下图所示: ![](https://blog.reghao.cn/file/fa7491b21f3843b089365191c33d10e7.png) > store 和 console 之间使用 dubbo rpc 进行通信 > > 每台作为存储节点的机器上都需要且只能一个部署 store 实例 > > 在 store 的配置文件中指定 mgr 的地址 > > 只能部署一个 console 实例 ## 初始化 MySQL - 1.oss/zzz/oss_init.sql 文件是系统的初始数据 - 2.执行 oss/zzz/init_schema.sh 脚本可完成数据库的创建和初始化 > 需要自行指定脚本中的 host, username, password, db 等变量值 - 3.然后可以开始构建和部署系统 ## 构建 根据需要构建的类型使用 wget 获取构建脚本: ``` # 构建 jar 包使用此脚本 wget https://git.reghao.cn/reghao/oss/raw/master/zzz/build_jar.sh # 构建 docker 镜像使用此脚本 wget https://git.reghao.cn/reghao/oss/raw/master/zzz/build_image.sh ``` - 1.修改构建脚本中的 base_dir 变量的值 - 2.执行构建脚本 - 3.构建完成 > 如果使用 build_jar.sh 脚本构建, 生成的 jar 包会存放在 oss/oss-store/bin 目录中 > > 如果使用 build_image.sh 脚本构建, 生成的镜像则使用 docker images | grep 'oss-store' 命令查看 ## 部署 oss-store 应用强依赖 oss-console, 必须先启动 oss-console 后再启动 oss-store ### jar 包 部署 oss-store 流程: - 1.修改 oss/oss-store/bin/oss.yml 文件中的配置 > mysql 配置 > > server.tomcat.basedir > > tomcat 服务器使用的临时目录, 不应将此目录设置到文件存储所在的磁盘 > > oss.storeHost > > oss-store 所部署机器的 IP 地址 > > oss.diskDirs > > 存储文件使用的位置, 每个位置都必须是一块独立的磁盘, 推荐将单块磁盘挂载到此位置 > > > > oss.consoleHost > > oss-console 所部署机器的 IP 地址 > - 2.使用 cd 命令切换到 oss/oss-store/bin 目录 - 3.执行 start1.sh 脚本 > 如果不使用 oss.yml 配置, 则执行 start2.sh 脚本 ### docker 镜像 ``` docker run -d --name=bntweb --network=host \ -v /opt/disk/1:/opt/disk/1 \ reghao/oss-store:12345678 ``` > 自行指定生成的 image > > image 格式是 REPOSITORY:TAG > > 使用 -v 将 host 目录挂载到容器目录 > > docker 镜像使用 resources/application-test.yml 配置