精华内容
下载资源
问答
  • 阿里云OSS对象存储搭建网盘教程

    千次阅读 2020-08-28 09:52:12
    阿里云OSS对象存储高可靠数据存储服务,使用OSS对象存储搭建个人网盘或企业网盘,存储可靠性高下载不限速,当然阿里云推出了自家的网盘,码笔记分享使用OSS对象存储搭建个人网盘或企业网盘的方法: 使用OSS对象存储...

    阿里云OSS对象存储高可靠数据存储服务,使用OSS对象存储搭建个人网盘或企业网盘,存储可靠性高下载不限速,当然阿里云推出了自家的网盘,码笔记分享使用OSS对象存储搭建个人网盘或企业网盘的方法:

    使用OSS对象存储搭建个人网盘

    使用阿里云OSS搭建个人网盘?事实上就是OSS的基本使用方法,大致流程如下图所示:

    阿里云OSS对象存储使用方法
    阿里云OSS对象存储使用方法

    码笔记来简单描述下OSS搭建个人网盘的方法,首先开通OSS对象存储服务,勾选协议即可;然后“创建 Bucket”,Bucket可以理解为在OSS上开通的存储空间;最后在Bucket内创建文件目录或上传下载文件即可。码笔记来详细说下OSS搭建网盘的方法:

    Bucket 名称:名称自定义填写,Bucket域名格式为Bucket名称.oss-cn-地域.aliyuncs.com
    区域:自行选择,确定后不可以修改
    存储类型:网盘类码笔记建议选择低频访问存储
    同城冗余存储:根据实际情况选择
    版本控制:防止删除或覆盖误操作导致数据丢失,可以开启
    读写权限:网盘类建议选择私有更安全

    然后点击“确定”,即可创建完成Bucket。

    • 3. 通过“文件管理”来管理网盘

    OSS文件管理

    进入你的Bucket内,可以使用左侧栏的文件管理功能创建目录、上传文件等操作。

    • 4. 网盘文件下载演示

    使用OSS对象存储搭建的网盘如何下载呢?码笔记建议网盘类的OSS读写权限选择私有。下载私有文件也很简单,点击需要下载的文件,URL中会生成带有OSSAccessKeyId的URL链接,点击即可下载,如下图:

    网盘文件下载

     

    阿里云OSS对象存储下载速度不受限制,很好用,而且OSS存储成本也是很低的。可以使用阿里云图形化管理工具ossbrowser来管理OSS云盘上的文件。

    使用OSS对象存储搭建企业网盘

    码笔记认为使用OSS对象存储搭建个人网盘和企业网盘的区别在于管理文件的权限问题,个人网盘只是自己使用不用考虑多用户操作权限问题,企业网盘可能涉及到各个部门一起使用,并且各个部门相互之间的文件管理是绝对独立的。这需要用到阿里云RAM访问控制,码笔记来简单说下使用OSS对象存储创建企业网盘的步骤:

    登录到阿里云RAM访问控制台,新建用户

    • 2. 在OSS对象存储控制台创建Bucket

    企业不同部门使用不同的Bucket。

    • 3. 在Bucket中授权对应的RAM用户

    如下图所示,在Bucket文件管理中,使用授权功能来授权对应的用户操作此Bucket中的文件

    OSS Bucket授权用户

    大致思路如上,以上为码笔记分享的使用阿里云OSS对象存储搭建个人网盘和企业网盘的方法。直接copy的同学越来越多了,还望手下留情,有问题欢迎留言。

    展开全文
  • OssService : 对象存储业务定义接口,定义业务中使用Oss功能的方法定义。具体实现方法由实现类定义。 String getDownloadUrl(Long resourceId); @param resourceId:业务资源id @return 对应资源的下载地址 ...

    1. 类名解释

    • OssService : 对象存储业务定义接口,定义业务中使用Oss功能的方法定义。具体实现方法由实现类定义。
      • String getDownloadUrl(Long resourceId);
      • @param resourceId:业务资源id
      • @return 对应资源的下载地址
    • OssQiNiuService:对象存储业务定义实现方法,实现OssService接口定义的具体逻辑。
    • OssQiNiuBucketZoneEnum:对象存储空间位置,用来初始化OssQiNiu配置信息
      • huabei(“https://upload-z1.qiniup.com”)
      • huadong(“https://upload.qiniup.com”)
      • huanan(“https://upload-z2.qiniup.com”)
      • beimei(“https://upload-na0.qiniup.com”)
      • xinjiapo(“https://upload-as0.qiniup.com”)
    • OssBucketNameEnum:对象存储空间名称。
      • 限制空间名称
      • 抽象类型,分离服务提供商空间名称和业务中使用的空间名称
      • app jar APP_PACKAGE(“app-package”),
      • 车辆品牌,车型,车标,车系,车款等图片 CAR_PIC(“car-pic”),
      • 产品,商品,套餐图片 GOODS_PIC(“goods-pic”),
      • 工序工艺 PROCEDURE_PIC_VIDEO(“procedure-pic-video”),
      • 个人头像等图片 PROFILE_PIC(“profile-pic”),
      • 精检,精养拍照图片 SERVICE_PIC(“service-pic”),
      • 门店附件,供应商附件 STORE_ATTACH_PIC(“store-attach-pic”);
    • OssBucketInfo:对象存储信息
      • private String bucketName;真实的空间名称
      • private String domain;cdn域名
    • OssQiniuCallbackBody:对象存储七牛回调类
    • OssQiNiuCallbackUploadToken:对象存储七牛上传凭证类
    • OssQiNiuConfiguration:对象存储七牛配置类
      • private String accessKey/private String secretKey:密钥对
      • private String callbackUrl:回调地址
      • private Long expireSeconds:上传凭证有效时长
      • private Boolean dev:环境配置
      • private OssQiNiuBucketZoneEnum zone:存储空间位置
      • private String cnameDomainSuffix:cdn配置CNAME的后缀

    2. 上传流程

    1. 客户端(PC、移动)请求业务服务器获取上传凭证
      1.1 接口:getQiniuCallbackUpToken
      1.1.1 入参:
    • OssBucketNameEnum bucketName:对象存储空间名称。
    • String originName:文件原名
    • String fops :资源预处理指令
      1.1.2 回参:
    • key:上传到七牛及保存到业务服务器上的资源名称
    • token:上传凭证
    • actualBucketName:上传到七牛存储空间的真实名称
    • uploadUrl:上传七牛存储空件的地域地址
    • url:资源访问地址
    1. 客户端携带token请求七牛服务器上传资源
    2. 七牛服务器回调业务服务器
    • 业务服务器保存资源元数据
    • 返回业务服务器生成的资源标识ResouceId
    1. 七牛服务器返回客户端信息,包含ResouceId但不限于。

    3. 客户端上传调整

    • 请求业务服务器获取上传凭证阶段,之前传的是字符串。现在修改成枚举类型【OssBucketNameEnum bucketName】

    4. 后端解耦逻辑

    • 七牛服务商
      • 配置dev
      • 配置zone
      • 配置cnameDomainSuffix
      • 增加initOssBucketInfoStore环境信息
    • 其他服务商
      • 实现OssService接口
      • 增加配置类
    展开全文
  • 使用minio自行搭建oss系统,存储文件

    千次阅读 2021-01-12 15:55:36
    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是...

    前言

    你可以购买如阿里云、七牛云、腾讯云等oss产品,也可以在内部网络搭建。

    minio

    网站:https://docs.min.io/cn/

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

    MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

    使用docker部署

    docker pull minio/minio
    

    运行

    mkdir -p /opt/minio/data
    mkdir -p /opt/minio/config
    
    docker run -p 9050:9000 --name minio \
    -d --restart=always \
    -e "MINIO_ROOT_USER=JWTROOTUSER" \
    -e "MINIO_ROOT_PASSWORD=jeCjczdTn4mE
    展开全文
  • 数据层:mysql(分库分表中间件:Mycat)、redis、elasticsearch、rabbitmq、阿里OSS 后台管理前端:gmall-admin(1000) 前台门户:gmall-shop (2000) 网关:gmall-gateway(8888) 2.2. 数据准备 把课前资料中...
    整体架构框架:springCloud-alibaba
    	注册中心:nacos	eureka zookeeper consule(原生)
    	配置中心:nacos  appollo(携程)  config(原生)  zookeeper
    	远程调用组件:feign(ribbon + hystrix) httpClient(原生)
    	网关组件:gateway(spring-webflux netty) zuul(servlet springmvc)
    	链路追踪:sleuth(分布式链路追踪框架zipkin  skywalking)
    	流控组件:sentinel(熔断)
    
    	分布式事务框架:seata
    	分布式锁框架:redisson (手写分布式锁)
    	分布式定时任务:时间驱动,xxl-job(elastic-job)
    	分布式消息队列:rabbitmq(spring-amqp)
    	
    	基础框架:
    		SSM:springMVC spring mybatis(mp:mybatis-plus)
    		springdata-redis
    		springdata-elasticsearch:elasticsearch
    		springTask:@EnableAsync @Async
    		
    	组件:
    		nginx(反向代理 动静分离 负载均衡)
    		redis:缓存 购物车
    		CompletableFuture:多线程异步编排框架
    		jwt:单点登录
    

    1. 谷粒商城介绍

    1.1. 项目分类

    主要从需求方、盈利模式、技术侧重点这三个方面来看它们的不同

    1.1.1. 传统项目

    各种企业里面用的管理系统(ERP(企业资源管理系统)、HR(人事管理系统)、OA(办公自动化)、CRM(客户资源管理系统)、物流管理系统。。。。。。。)

    • 需求方:公司、企业内部
    • 盈利模式:项目本身卖钱
    • 技术侧重点:业务功能

    1.1.2. 互联网项目

    门户网站、电商网站:baidu.com、qq.com、taobao.com、jd.com …

    • 需求方:广大用户群体
    • 盈利模式:虚拟币、增值服务、广告收益…
    • 技术侧重点:网站性能、业务功能

    而我们今天要聊的就是互联网项目中的重要角色:电商

    1.2. 为什么我们要讲电商?

    因为就互联网平台来说,电商网站有很多典型的特征:

    • 访问量大
    • 数据量大
    • 有一定的业务复杂性
    • 涉及支付 考虑一定安全性

    1.3. 常见电商模式

    电商行业的一些常见模式:

    • B2C:商家对个人,如:亚马逊、当当等
    • C2C平台:个人对个人,如:闲鱼、拍拍网、ebay
    • B2B平台:商家对商家,如:阿里巴巴、八方资源网等
    • O2O:线上和线下结合,如:饿了么、电影票、团购等
    • P2P:在线金融,贷款,如:网贷之家、人人聚财等。
    • B2C平台:天猫、京东、一号店等

    2. 搭建项目

    2.1. 项目结构说明

    ms即manager system 管理系统。
    在这里插入图片描述

    核心是microservice这块儿,它分两类微服务:

    • 后台CRUD微服务

      1. pms:商品管理系统(product) 18081

      2. ums:用户管理系统(user)18082

      3. wms:仓库管理系统(warehouse) 18083

      4. oms:订单管理系统(order)18084

      5. sms:营销管理系统(sale) 18085

        。。。。

    • 前台数据接口微服务

      1. cart:购物车微服务
      2. order:订单微服务
      3. search:搜索微服务
      4. item:商品详情微服务
      5. member:会员微服务

    第三方微服务:物流、短信、支付、云存储。。。。

    数据层:mysql(分库分表中间件:Mycat)、redis、elasticsearch、rabbitmq、阿里OSS

    后台管理前端:gmall-admin(1000)

    前台门户:gmall-shop (2000)

    网关:gmall-gateway(8888)

    2.2. 数据准备

    把课前资料中的数据文件导入数据库:
    在这里插入图片描述

    导入数据库之后:

    在这里插入图片描述

    2.3. 使用github创建仓库

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    克隆到本地:

    在这里插入图片描述

    开源协议参考:

    在这里插入图片描述

    2.4. 项目初始创建

    把课前资料/基础工程中的文件

    在这里插入图片描述

    copy到 clone下来的gmall工程中

    在这里插入图片描述

    接下来在idea中导入gmall工程:

    在这里插入图片描述

    在这里插入图片描述

    点击“OK”,一路下一步:

    在idea的Terminal窗口,查看git状态:

    /表示的是一层目录。
    在这里插入图片描述

    把.idea/和gmall.iml添加到忽略列表:

    在这里插入图片描述
    . 表示当前目录下。
    . gitIgnore也要上传上去。
    在这里插入图片描述

    推送到远程仓库:git push origin master

    在这里插入图片描述

    效果:

    在这里插入图片描述

    2.5. 依赖分析

    gmall工程:是父工程,在pom.xml中统一管理了常用依赖的版本号

    gmall-common:包含了通用的实体类及工具类,所有工程都依赖于该common工程

    gmall-admin:后台管理控制台菜单管理系统。此项目不用关注,和业务无关。

    springboot的常用依赖有:

    • redis
    • web

    springCloud的常用依赖有:

    • openfeign 用于远程调用
    • alibaba-nacos-discovery 用于注册中心
    • alibaba-nacos-config 用于配置中心
    • alibaba-sentinel 用于熔断保护
    • zipkin等

    需要链接数据库的工程需要引入mybatis相关依赖。

    2.6. 创建项目其他模块

    任何项目都要依赖common工程。

    2.6.1. 创建商品管理模块

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    创建完成:

    在这里插入图片描述

    需要手动导入的依赖:

    <dependency>
        <groupId>com.atguigu</groupId>
        <artifactId>gmall-common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    

    创建springboot工程,默认是以spring-boot-starter-parent为父工程,需要改为gmall为父工程:

    <parent>
        <groupId>com.atguigu</groupId>
        <artifactId>gmall</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    

    并且把pms工程中的如下springCloud依赖管理去掉:

    <spring-cloud-alibaba.version>2.2.0.RELEASE</spring-cloud-alibaba.version>
    <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    2.6.2. 创建用户管理模块

    在这里插入图片描述

    其他项,参考商品管理模块。

    2.6.3. 创建订单管理模块

    在这里插入图片描述

    其他项参考商品管理模块

    2.6.4. 创建营销管理模块

    在这里插入图片描述

    2.6.5. 创建仓库管理模块

    在这里插入图片描述

    搭建工程:
    	1.创建工程,选择依赖:
    		web启动器
    		redis
    		nacos-discovery
    		nacos-config
    		sentinel
    		zipkin启动器
    		openfeign启动器
    	2.pom.xml修改:
    		以gmall工程作为父工程
    		去掉properties
    		添加依赖:mp启动器 mysql驱动 gmall-common
    		去掉dependencyManagement
    	3.bootstrap.yml
    		spring.application.name=pms-service
    		spring.cloud.nacos.config.server-addr=localhost:8848
    		spring.cloud.nacos.config.namespace=namespace的id
    		spring.cloud.nacos.config.group=dev
    		spring.cloud.nacos.config.file-extension=yml
    	4.application.yml
    		server.port=18081
    		spring.cloud.nacos.discovery.server-addr=localhost:8848
    		spring.cloud.sentinel.transport.dashboard=localhost:8080
    		spring.cloud.sentinel.transport.port=8719
    		spring.zipkin.base-url=http://localhost:9411
    		spring.zipkin.discovery-client-enable=false
    		spring.zipkin.sender.type=web
    		spring.sleuth.sampler.probability=1
    		spring.datasource.driver/url/username/password
    		spring.redis.host=xxx
    		feign.sentinel.enable=true
    		mybatis-plus.mapper-location=classpath:xxx/*.xml
    		mybatis-plus.type-aliases-package=entity包路径
    		mybatis-plus.global-config.db-config.id-type=auto
    	5.启动类上的注解
    		@SpringBootApplication
    		@EnableSwagger2
    		@MapperScan("mapper包路径")
    		@EnableFeignClients
    

    2.6.6. 完整工程

    在这里插入图片描述

    接下来把这些新模块push到github。

    先添加忽略:

    在这里插入图片描述

    git add .
    git commit -m "创建后台工程"
    git push origin master
    

    在这里插入图片描述

    2.7. 逆向工程生成代码

    课前资料/逆向工程:

    在这里插入图片描述

    copy到gmall项目下:

    在这里插入图片描述

    回到idea,把逆向工程作为maven工程导入idea

    在这里插入图片描述

    在这里插入图片描述

    下面以生成pms的代码为例,其他模块操作类似!!!!!!!

    2.7.1. 修改配置

    修改逆向工程的application.yml,把数据库的连接信息改成自己的:

    在这里插入图片描述

    修改generator.properties:

    在这里插入图片描述

    2.7.2. 启动逆向工程

    启动RenrenApplication:

    在这里插入图片描述

    启动成功,监听端口号为80。浏览器访问

    在这里插入图片描述

    生成一个压缩包,被下载下来:

    在这里插入图片描述

    即找到压缩包。

    2.7.3. 把文件copy到对应工程

    1. 打开压缩包,压缩包/main/java下的com目录,copy到gmall-pms模块的src/main/java:

    在这里插入图片描述

    效果如下:

    在这里插入图片描述

    1. 把压缩包/main/resources下的mapper目录,copy到gmall-pms模块的src/java/resources目录下:

    在这里插入图片描述

    如下:

    在这里插入图片描述

    2.8. 各个模块工程的配置

    后台管理模块,每个工程的配置方式基本一样。下面还是以gmall-pms工程为例:

    2.8.1. 工程参数配置

    application.yml配置文件:

    server:
      port: 18081
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
        sentinel:
          transport:
            dashboard: localhost:8080
            port: 8719
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://172.16.116.100:3306/guli_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
        username: root
        password: root
      redis:
        host: 172.16.116.100
      zipkin:
        base-url: http://localhost:9411
        discovery-client-enabled: false
        sender:
          type: web
      sleuth:
        sampler:
          probability: 1 #采集率
    mybatis-plus:
      mapper-locations: classpath:mapper/pms/*.xml  # 读取映射文件
      type-aliases-package: com.atguigu.gmall.pms.entity #配置完以后,不需要写全限定类名,只需类名即可。
      global-config:
        db-config:
          id-type: auto  # 默认使用数据库自增
    feign:
      sentinel:
        enabled: true
    

    bootstrap.yml配置文件:

    spring:
      application:
        name: pms-service
      cloud:
        nacos:
          config:
            server-addr: 127.0.0.1:8848 
    #        namespace: 90864336-a209-431f-9082-3b429d0b38cd
    #        group: dev
    #        file-extension: yml #指定配置文件的后缀是yml,默认找服务名.properties文件
    

    2.8.2. 在引导类上添加注解

    在gmall-pms工程的引导类(GmallPmsApplication)上添加注解:

    @SpringBootApplication
    @MapperScan(basePackages = "com.atguigu.gmall.pms.mapper")
    @EnableSwagger2
    public class GmallPmsApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(GmallPmsApplication.class, args);
        }
    
    }
    

    使用mybatis-plus步骤:

    1. 配置目录中引入映射文件
    2. 在引导类上添加@MapperScan扫描所有mapper/dao接口
    3. 编写mapper接口实现BaseMapper即可
    4. 编写service接口继承IService,编写xxxService继承ServiceImpl<Mapper, Entity>
    5. 查询分页要添加分页过滤器:
    @Configuration
    public class MybatisPlusConfig {
    
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
            // paginationInterceptor.setOverflow(false);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            // paginationInterceptor.setLimit(500);
            // 开启 count 的 join 优化,只针对部分 left join
            paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
            return paginationInterceptor;
        }
    }
    

    2.8.3. 配置到nacos

    创建名称空间:

    在这里插入图片描述

    给pms添加配置:

    在这里插入图片描述

    修改bootstrap.yml配置:

    spring:
      application:
        name: pms-service
      cloud:
        nacos:
          config:
            server-addr: 127.0.0.1:8848
            namespace: 3aeaadb8-203f-44a1-a384-af429c486c0a
            group: dev
            file-extension: yml  # 默认找服务名.properties文件
    

    在GmallPmsApplication类上添加@RefreshScope注解:

    在这里插入图片描述

    2.9. 参照PMS完成其他管理模块

    其他模块都按照gmall-pms的方式完成搭建。

    所有后台管理模块,都需要完成以下操作:

    1. 逆向工程,copy生成的java文件及映射文件到对应的目录下

    2. 在pom.xml中配置父工程、去掉springCloud的版本管理、引入common工程及mybatis mysql的依赖

      <!-- 所有后续创建的工程以该工程为父工程 -->
      <parent>
          <groupId>com.atguigu</groupId>
          <artifactId>gmall</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </parent>
      
      <!-- 添加common及mybatis mysql依赖 -->
      <dependency>
          <groupId>com.atguigu</groupId>
          <artifactId>gmall-common</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
      <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
      </dependency>
      
      <!-- 最后别忘了去掉springCloud的依赖管理,使用gmall父工程的依赖管理 -->
      
    3. 添加application.yml配置,建议把该配置放到nacos中。例如:

      server:
        port: 18081
      spring:
        cloud:
          nacos:
            discovery:
              server-addr: 127.0.0.1:8848
          sentinel:
            transport:
              dashboard: localhost:8080
              port: 8719
        datasource:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://172.16.116.100:3306/guli_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false
          username: root
          password: root
        redis:
          host: 172.16.116.100
        zipkin:
          base-url: http://localhost:9411
          discovery-client-enabled: false
          sender:
            type: web
        sleuth:
          sampler:
            probability: 1
      mybatis-plus:
        mapper-locations: classpath:mapper/pms/*.xml  # 读取映射文件
        type-aliases-package: com.atguigu.gmall.pms.entity
        global-config:
          db-config:
            id-type: auto  # 默认使用数据库自增
      feign:
        sentinel:
          enabled: true
      

      注意:不同模块需要修改server.port、spring.datasource.url以及mybatis-plus相关的值

    4. 添加bootstrap.yml配置,例如:

      spring:
        application:
          name: pms-service
        cloud:
          nacos:
            config:
              server-addr: 127.0.0.1:8848
              namespace: 3aeaadb8-203f-44a1-a384-af429c486c0a
              group: dev
              file-extension: yml  # 默认找服务名.properties文件
      

      注意:不同模块需要修改spring.application.name及spring.cloud.nacos.config.namespace的值

    5. 给引导类添加注解,例如:

      @SpringBootApplication
      @MapperScan(basePackages = "com.atguigu.gmall.pms.mapper")
      @EnableSwagger2
      @RefreshScope
      public class GmallXxxApplication {
          .....
      }
      

      注意:需要修改basePackages的值

    2.10. 搭建网关服务

    nacos容器内的所有服务,可以直接相互访问。nacos外的服务,为了保证安全,必须通过网关访问后台各个管理模块

    在这里插入图片描述

    在这里插入图片描述

    pom.xml:

    这里也要以gmall父工程为父,去掉cloud及alibaba版本号管理。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.atguigu</groupId>
            <artifactId>gmall</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <groupId>com.atguigu</groupId>
        <artifactId>gmall-gateway</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>gmall-gateway</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    添加配置:

    在这里插入图片描述

    bootstrap.yml配置如下:

    spring:
      application:
        name: gateway-api
      cloud:
        nacos:
          config:
            server-addr: 127.0.0.1:8848
    

    application.yml配置如下:

    server:
      port: 8888
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
        gateway:
          routes: 
            - id: pms-route # 商品管理路由
              uri: lb://pms-service
              predicates:
                - Path=/pms/**
            - id: oms-route # 订单管理路由
              uri: lb://oms-service
              predicates:
                - Path=/oms/**
            - id: ums-route # 用户管理路由
              uri: lb://ums-service
              predicates:
                - Path=/ums/**
            - id: wms-route # 仓库管理路由
              uri: lb://wms-service
              predicates:
                - Path=/wms/**
            - id: sms-route # 营销管理路由
              uri: lb://sms-service
              predicates:
                - Path=/sms/**
    

    测试:

    在这里插入图片描述

    3. 通过域名访问

    3.1. 统一环境

    我们现在访问页面使用的是:http://localhost:8888

    有没有什么问题?

    实际开发中,会有不同的环境:

    • 开发环境:自己的电脑
    • 测试环境:提供给测试人员使用的环境
    • 预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试
    • 生产环境:项目最终发布上线的环境

    如果不同环境使用不同的ip去访问,可能会出现一些问题。为了保证所有环境的一致,我们会在各种环境下都使用域名来访问。

    我们将使用以下域名:

    • 主域名是:gmall.com
    • 管理系统域名:manage.gmall.com
    • 网关域名:api.gmall.com

    但是最终,我们希望这些域名指向的还是我们本机的某个端口。

    那么,当我们在浏览器输入一个域名时,浏览器是如何找到对应服务的ip和端口的呢?

    3.2. 域名解析

    一个域名一定会被解析为一个或多个ip。这一般会包含两步:

    • 本地域名解析

      浏览器会首先在本机的hosts文件中查找域名映射的IP地址,如果查找到就返回IP ,没找到则进行域名服务器解析,一般本地解析都会失败,因为默认这个文件是空的。

      • Windows下的hosts文件地址:C:/Windows/System32/drivers/etc/hosts
      • Linux下的hosts文件所在路径: /etc/hosts

      样式:

      # My hosts
      127.0.0.1 localhost
      
    • 域名服务器(DNS)解析

      本地解析失败,才会进行域名服务器解析,域名服务器就是网络中的一台计算机,里面记录了所有注册备案的域名和ip映射关系,一般只要域名是正确的,并且备案通过,一定能找到。

    我们不可能去购买一个域名,因此我们可以伪造本地的hosts文件,实现对域名的解析。修改本地的host为:

    127.0.0.1 www.gmall.com api.gmall.com item.gmall.com cart.gmall.com order.gmall.com auth.gmall.com search.gmall.com manager.gmall.com
    

    这样就实现了域名的关系映射了。

    在这里插入图片描述

    通过域名访问:

    在这里插入图片描述

    3.3. nginx反向代理

    域名问题解决了,但是现在要访问后台页面,还得自己加上端口:http://api.gmall.com:8888

    这就不够优雅了。我们希望的是直接域名访问:http://api.gmall.com。这种情况下端口默认是80,而80端口只有一个,将来我们可能有多个工程需要通过域名访问,如何让多个工程都直接通过域名访问呢?

    这里就要用到反向代理工具:Nginx

    在这里插入图片描述

    nginx安装:略。。。。。。

    3.4. 配置反向代理

    windows宿主机hosts文件,配置如下:

    172.16.116.100 api.gmall.com manager.gmall.com 
    172.16.116.100 www.gmall.com gmall.com static.gmall.com 
    172.16.116.100 search.gmall.com item.gmall.com sso.gmall.com cart.gmall.com 
    172.16.116.100 order.gmall.com payment.gmall.com
    

    注意:172.16.116.100改成你自己虚拟机的ip地址

    修改nginx配置文件,完整配置如下:

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
    	# 代理网关
        server {
            listen       80;
            server_name  api.gmall.com;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                proxy_pass   http://192.168.3.2:8888;
            }
        }
    	
    	# 代理后台管理
    	server {
            listen       80;
            server_name  manager.gmall.com;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                proxy_pass   http://192.168.3.2:1000;
            }
        }
    
    }
    

    重启nginx命令:nginx -s reload

    启动nginx命令:nginx

    在浏览器中测试,完美!

    在这里插入图片描述

    4. 系统管理前后端联调

    4.1. 启动系统管理前端工程

    把课前资料/前端工程/gmall-admin-vue.zip解压到工作空间下,例如:

    在这里插入图片描述

    这是一个用nodejs构建的项目,解压后进入项目根目录,打开cmd窗口执行:

    npm install  # 安装npm依赖包
    npm start	# 启动该项目
    

    启动成功:

    在这里插入图片描述

    可以通过1000端口即可访问,这里推荐使用域名访问:
    在这里插入图片描述

    此时还不能登录,因为没有对应的后台管理系统。

    4.2. 启动系统管理后台工程

    要想正常登陆,并使用后台管理系统,还需要启动如下工程

    在这里插入图片描述

    启动前,需要修改配置:

    在这里插入图片描述

    数据库连接信息:

    在这里插入图片描述

    然后开始启动gmall-admin工程,启动成功后,刷新管理前端页面即可通过admin/admin登录

    在这里插入图片描述

    打开品牌管理试试:

    在这里插入图片描述

    这时,你使用浏览器直接访问品牌查询接口,发现访问没事,但是这里却报错,什么原因?

    这其实是浏览器的同源策略造成的跨域问题。

    5. 跨域问题

    跨域:浏览器对于javascript的同源策略的限制 。

    以下情况都属于跨域:

    跨域原因说明示例
    域名不同www.jd.comwww.taobao.com
    域名相同,端口不同www.jd.com:8080www.jd.com:8081
    二级域名不同item.jd.commiaosha.jd.com

    com属于顶级域名。
    如果域名和端口都相同,但是请求路径不同,不属于跨域,如:

    www.jd.com/item

    www.jd.com/goods

    http和https也属于跨域

    而我们刚才是从manager.gmall.com去访问api.gmall.com,这属于端口不同,跨域了。

    5.1. 为什么有跨域问题?

    跨域不一定都会有跨域问题。

    因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击。

    因此:跨域问题 是针对ajax的一种限制

    但是这却给我们的开发带来了不便,而且在实际生产环境中,肯定会有很多台服务器之间交互,地址和端口都可能不同,怎么办?

    5.2. 解决跨域问题的方案

    目前比较常用的跨域解决方案有3种:

    • Jsonp

      最早的解决方案,利用script标签可以跨域的原理实现。

      限制:

      • 需要服务的支持
      • 只能发起GET请求
    • nginx反向代理

      思路是:利用nginx把跨域反向代理为不跨域,支持各种请求方式

      缺点:需要在nginx进行额外配置,语义不清晰
      违背了devops思想。(开发人员多为运维人员考虑)

    • CORS

      规范化的跨域请求解决方案,安全可靠。

      优势:

      • 在服务端进行控制是否允许跨域,可自定义规则
      • 支持各种请求方式

      缺点:

      • 会产生额外的请求

    我们这里会采用cors的跨域方案。

    5.3. 什么是cors

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

    它允许浏览器向跨源服务器,发出[XMLHttpRequest]请求 (就是Ajax请求,它是Ajax底层的一个对象),从而克服了AJAX只能同源使用的限制。

    CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。

    • 浏览器端:

      目前,所有浏览器都支持该功能(IE10以下不行)。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。

    • 服务端:

      CORS通信与AJAX没有任何差别,因此你不需要改变以前的业务逻辑。只不过,浏览器会在请求中携带一些头信息,我们需要以此判断是否允许其跨域,然后在响应头中加入一些信息即可。这一般通过过滤器完成即可。

    5.4. 原理有点复杂

    预检请求

    跨域请求会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。

    浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。

    options就是一个预检请求。

    一个“预检”请求的样板:

    OPTIONS /cors HTTP/1.1
    # 从哪过来的请求。(是不是在服务器的白名单中)
    Origin: http://localhost:1000
    # 支持什么方式的请求
    Access-Control-Request-Method: GET
    # 将携带什么头信息
    Access-Control-Request-Headers: X-Custom-Header
    User-Agent: Mozilla/5.0...
    
    • Origin:会指出当前请求属于哪个域(协议+域名+端口)。服务会根据这个值决定是否允许其跨域。

    • Access-Control-Request-Method:接下来会用到的请求方式,比如PUT

    • Access-Control-Request-Headers:会额外用到的头信息

    预检请求的响应

    服务的收到预检请求,如果许可跨域,会发出响应:

    HTTP/1.1 200 OK
    Date: Mon, 01 Dec 2008 01:15:39 GMT
    Server: Apache/2.0.61 (Unix)
    Access-Control-Allow-Origin: http://miaosha.jd.com
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Methods: GET, POST, PUT
    Access-Control-Allow-Headers: X-Custom-Header
    Access-Control-Max-Age: 1728000
    Content-Type: text/html; charset=utf-8
    Content-Encoding: gzip
    Content-Length: 0
    Keep-Alive: timeout=2, max=100
    Connection: Keep-Alive
    Content-Type: text/plain
    

    如果服务器允许跨域,需要在返回的响应头中携带下面信息:

    • Access-Control-Allow-Origin:可接受的域,是一个具体域名或者*(代表任意域名)
    • Access-Control-Allow-Credentials:是否允许携带cookie,默认情况下,cors不会携带cookie,除非这个值是true
    • Access-Control-Allow-Methods:允许访问的方式
    • Access-Control-Allow-Headers:允许携带的头
    • Access-Control-Max-Age:本次许可的有效时长,单位是秒,过期之前的ajax请求就无需再次进行预检了

    有关cookie:

    要想操作cookie,需要满足3个条件:

    • 服务的响应头中需要携带Access-Control-Allow-Credentials并且为true。
    • 浏览器发起ajax需要指定withCredentials 为true
    • 响应头中的Access-Control-Allow-Origin一定不能为*,必须是指定的域名( * 表示所有域名都可以跨域访问)

    5.5. 实现非常简单

    虽然原理比较复杂,但是前面说过:

    • 浏览器端都有浏览器自动完成,我们无需操心
    • 服务端可以通过拦截器统一实现,不必每次都去进行跨域判定的编写。

    事实上,Spring已经帮我们写好了CORS的跨域过滤器,内部已经实现了刚才所讲的判定逻辑。

    spring-webmvc:CorsFilter
    spring-webflux:CorsWebFilter
    

    springcloud-gateway集成的是webflux,所以这里使用的是CorsWebFilter

    gmall-gateway中编写一个配置类,并且注册CorsWebFilter:

    @Configuration
    public class CorsConfig {
    
        @Bean
        public CorsWebFilter corsWebFilter() {
    
            // 初始化CORS配置对象
            CorsConfiguration config = new CorsConfiguration();
            // 允许的域,不要写*,否则cookie就无法使用了
            //setAllowedOrigin(集合)也是一样的作用。
            config.addAllowedOrigin("http://manager.gmall.com");
            config.addAllowedOrigin("http://www.gmall.com");
            config.addAllowedOrigin("http://127.0.0.1:1000");
            config.addAllowedOrigin("http://localhost:1000");
            // 允许的头信息
            config.addAllowedHeader("*");
            // 允许的请求方式
            config.addAllowedMethod("*");
            // 是否允许携带Cookie信息
            config.setAllowCredentials(true);
    
            // 添加映射路径,我们拦截一切请求
            UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
            corsConfigurationSource.registerCorsConfiguration("/**", config);
    
            return new CorsWebFilter(corsConfigurationSource);
        }
    }
    

    测试:完美解决!

    在这里插入图片描述

    进行分页插件

    在pms中创建一个config包,然后把类放进去。(MP分页)
    SpringBoot1.x需要手动声明启动事务。2.x不需要手动声明。

    @Configuration
    public class MybatisPlusConfig {
    
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
            // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
            // paginationInterceptor.setOverflow(false);
            // 设置最大单页限制数量,默认 500 条,-1 不受限制
            // paginationInterceptor.setLimit(500);
            // 开启 count 的 join 优化,只针对部分 left join
            paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
            return paginationInterceptor;
        }
    }
    

    6. 图片上传

    这里使用阿里云对象存储(OSS)

    官方文档:https://help.aliyun.com/document_detail/64041.html?spm=5176.87240.400427.54.1bfd4614VN7fDp

    我们之前采用sdk的方式,图片–>后台服务器–>阿里云。

    这样后台服务器面临并发压力,既然是上传给阿里云,可不可以直接传给阿里云服务器。

    上传成功后,只需要给我一个图片地址保存到数据库即可。

    查看官方文档,发现提供了浏览器直接上传到阿里云的参考文档:

    在这里插入图片描述

    6.1. 阿里云配置

    登录到个人阿里云控制台,并创建bucket。

    在这里插入图片描述

    找到权限设置–>跨域设置

    在这里插入图片描述

    点击设置–>创建规则–>如下填写表单–>点击确定

    在这里插入图片描述

    在这里插入图片描述

    6.2. 服务端签名后直传

    在这里插入图片描述

    用户发送请求到应用服务端,服务端怎么返回policy和签名?

    官方文档再往下翻,有java示例:

    在这里插入图片描述

    点进去就有示例代码:

    在这里插入图片描述

    6.3. 编写代码实现签名获取

    在这里插入图片描述

    请求路径:/pms/oss/policy

    请求方式:GET

    请求参数:无

    响应数据:统一都是Resp对象

    6.3.1. 导入OSS的依赖

    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.5.0</version>
    </dependency>
    

    6.3.2. 编写Controller方法

    @RequestMapping("pms/oss")
    @RestController
    public class PmsOssController {
    
        String accessId = "LTAI4FuGwRrRAh1M8mRkndr6"; // 请填写您的AccessKeyId。
        String accessKey = "LvIZkyPyKqoBGcVTY2wABYhv4QJmYT"; // 请填写您的AccessKeySecret。
        String endpoint = "oss-cn-shanghai.aliyuncs.com"; // 请填写您的 endpoint。
        String bucket = "ggmall"; // 请填写您的 bucketname 。
        String host = "https://" + bucket + "." + endpoint; // host的格式为 bucketname.endpoint
        // callbackUrl为 上传回调服务器的URL,请将下面的IP和Port配置为您自己的真实信息。
        //String callbackUrl = "http://88.88.88.88:8888";
        // 图片目录,每天一个目录
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String dir = sdf.format(new Date()); // 用户上传文件时指定的前缀。
    
        @GetMapping("policy")
        public ResponseVo<Object> policy() throws UnsupportedEncodingException {
    
            OSSClient client = new OSSClient(endpoint, accessId, accessKey);
    
            long expireTime = 30;
            long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
            Date expiration = new Date(expireEndTime);
            PolicyConditions policyConds = new PolicyConditions();
            policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
            policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);
    
            String postPolicy = client.generatePostPolicy(expiration, policyConds);
            byte[] binaryData = postPolicy.getBytes("utf-8");
            String encodedPolicy = BinaryUtil.toBase64String(binaryData);
            String postSignature = client.calculatePostSignature(postPolicy);
    
            Map<String, String> respMap = new LinkedHashMap<String, String>();
            respMap.put("accessid", accessId);
            respMap.put("policy", encodedPolicy);
            respMap.put("signature", postSignature);
            respMap.put("dir", dir);
            respMap.put("host", host);
            respMap.put("expire", String.valueOf(expireEndTime / 1000));
            // respMap.put("expire", formatISO8601Date(expiration));
    
            return ResponseVo.ok(respMap);
        }
    }
    

    6.3.3. 上传测试

    在这里插入图片描述

    在这里插入图片描述

    6.4. 参数说明

    6.4.1. AccessKeyID及AccessKeySecret

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    选择用户,添加权限:

    在这里插入图片描述

    选择OSS所有权限

    在这里插入图片描述

    完成权限的添加

    6.4.2. bucktName及EndPoint

    在这里插入图片描述

    6.4.3. 公共读权限

    为了方便回显,需要把读写权限改为公共读
    在这里插入图片描述

    展开全文
  • oss-server 简单对象存储系统

    千次阅读 2018-06-14 13:24:30
    原文链接:点击打开链接摘要: oss-server是针对项目开发时提供的小型对象存储系统,开发者在针对文件上传时业务剥离,同时方便文件迁移,为满足单个项目,多个系统的情况下,提供统一的oss服务项目介绍oss-server是...
  • springboot集成oss对象存储服务

    千次阅读 2021-04-18 16:59:30
    前提环境搭建请参考阿里云oss对象存储官方文档:传送门 2.创建springboot项目导入 oss相关依赖 <!--OSS图片服务器 --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>...
  • 目录 一、资源申请 ...三、OSS Browser下载 1. 下载 2. 安装 3. 登录 四、基本文件操作 1.存储空间(Bucket) 1.1 创建Bucket 1.2 删除Bucket 1.3 Bucket的权限 2.对象/文件(Object) ...
  • 之前已经学习了OSS的一些基本API,接下来可以在微服务中使用它了。 创建OSS微服务 1、创建SpringBoot微服务wunian-edu-oss,然后在pom.xml中导入相关依赖。 <!-- 配置OSS依赖 --> <dependencies> <...
  • 选用第三方对象存储服务 七牛云 http://www.qiniu.com 使用 CDN 使用第三方服务器的好处是集成了CDN服务。 CDN(Content Delivery Network/Content Delivery Network)内容分发网络 将原站内容分发至最近用户节点,...
  • 对象存储是要付费的,根据所占用的空间来算,关于计费这块请访问阿里云官网了解详情。 几乎每个云厂商都会有类似的对象存储,但也会收费。一般像阿里云、腾讯云、百度云、华为云都会有这样的存储。 像七牛云、又拍云...
  • 阿里云OSS(对象存储服务)简介

    万次阅读 2018-06-15 11:13:24
    所以提前熟悉一下,做一个记录注:阿里云官方文档已经很详细的阐述了OSS、以及开发流程,本文大多都是参考官方文档OSS官方介绍地址:https://help.aliyun.com/document_detail/31947.html阿里云对象存储服务(Object...
  • 全称阿里云对象存储OSS 阿里云oss其实就是阿里云提供的类型云盘的服务,收费也还算合理,一般小项目使用简直香的不行啊,哈哈哈~ 由于是阿里的产品,不管是技术上,还是服务上,体验都非常良好。 具体前往:...
  • 文件存储NAS与对象存储OSS

    千次阅读 2021-02-04 15:44:47
    摘要:本文主要介绍文件存储NAS与对象存储OSS这2种目前主要的存储技术,以及差异,并介绍了各自的主要使用场景。 一、技术介绍 1.1、文件存储NAS 1.1.1概念 NAS(Network Attached Storage):是一套网络储存...
  • 后台服务器使用 Node.js 和 Aliyun OSS 对象存储SDK: Installation npm install vue-oss-filemanager --save OR git clone git@github.com:refinec/vue-filemanager.git npm install npm run serve
  • 哈喽 大家好,我叫人宅,很高兴和大家一起讲解一下关于OSS对象系统。 那你有可能会问,这个是什么...OSS对象系统,实际上就是一个存储系统,用于存储我们的各种数据,这些数据包括音频,视频,以及各种格式的数据文...
  • OSS,通俗一点理解就像是一块硬盘用来存储东西呢,只不过,它是由很多服务器,通过类似负载均衡,raid等各种技术,搭建起来的云存储,类似我们经常使用的百度云盘,360云盘等。我们可以将我们服务,数据存放上去,...
  • 1)k8s集群,我是通过kubeadm搭建的2节点集群 2)准备好阿里云的OSS账号,并创建bucket 2.在每台机器上安装阿里云ossfs软件。这个软件必须要安装,因为pv/pvc如果想要用阿里云的oss的话,这是必须的软件。...
  • OSS对象存储建立纯静态页面站点

    千次阅读 2019-10-12 10:39:37
    因为该对象存储是将文件存储到云端,无法利用nginx进行跳转,此时我们可以利用前端代码来实现跳转 < ! DOCTYPE html > < html lang = "en" > < head > < meta charset = "UTF-8" > < title > Title < /...
  • 配置Nginx访问OSS对象存储静态资源

    万次阅读 2018-11-13 13:44:29
    它功能强大并且还是开源软件,支持正则,这也使得它的配置可以十分多样,OSS是阿里云的一种云存储服务,价格便宜,并且不需要考虑性能,支持各种接口,按需收费,本文章将分享一下用Nginx去访问OSS对象存储上的静态资源。...
  • 来源 | https://www.cnblogs.com/dongteng/archive/2020/11/04/13926426.html1、根据oss url获取文件数据流/** ...
  • up.php(前端上传) <!DOCTYPE html> <... ...form action="oss.php" method="post" enctype="multipart/form-data"> 请选择文件:<input type="file" name="filename"><br&g
  • 挂载oss之后,使用rsync可以同步图片数据,非常方便官方教程: https://bbs.aliyun.com/read/307212.html本文来源: http://www.xxorg.com/archives/4450 醒醒的服务器VPS折腾小站使用阿里云的VPS安装Linux的...
  • 今天小编就在欢快的编码,来了一个刚毕业的小嫩青,虚心求教到对象存储服务到底有啥用?说起这个对象存储服务,那家伙,那场面,那可是锣鼓喧天、鞭炮齐鸣打住,打住,其实小编对于对象存储服务的理解...
  • 关于阿里云的oss对象存储 公司最近的项目中用到了oss对象存储,作为一名爱好技术的菜鸟程序员,马上度娘了一下,直接上代码。 关于好处也是有很多,最重要的无非是同步,以及存储速度快,安全性好,方便等等。 ...
  • 阿里云对象存储OSS和文件存储NAS有什么区别?文件存储NAS和对象存储OSS如何选择?NAS是传统的NFS挂载共享文件夹,OSS可以使用RESTful API,阿里云百科从技术、使用方式...对象存储OSS常用于网站搭建、动静资源分离、CD
  • 注意选择产品的Region(不同地域的价格不一样),规格,资源包(OSS收取存储和流量下行费用)大小等。基于本公司的是实际情况和业务需求,我购买了标准型(LRS)存储包500G和下行流量包50G。对于企业网盘来说,毫秒...
  • 无论是个人还是企业,搭建一个对象存储服务器都是非常有必要的。Minio 是个基于 Golang 编写的开源对象存储套件,虽然轻量,却拥有着不错的性能。 国内许多云厂商提供了对象存储服务:阿里 OSS、腾讯 COS、华为 OBS...
  • 选用第三方对象存储服务 我们在头条项目中使用七牛云对象存储服务http://www.qiniu.com。 使用 注册 新建存储空间 使用七牛SDK完成代码实现 七牛Python SDK 网址...
  • SpringCloud项目整合OSS对象存储

    千次阅读 2020-08-26 20:11:50
    整合Spring Cloud Alicloud OSS1) passjava-common项目引入spring-cloud-starter-alicloud-oss依赖2) 配置alicloud oss3)测试上传4.获取服务端签名4.1 准备工作:4.2 获取签名类4.3 配置网关路由4.4 配置跨域访问...
  • 第一个我们要有一个阿里云对象存储oss 对象存储资源包还是很便宜的,一块钱一个月,很嗨皮 不过阿里云之后要收流量费,不过也不是很贵,我用oss小半年了,才2毛钱(虽然我只存储一些笔记图片 ) 所以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,199
精华内容 1,679
关键字:

搭建oss对象存储