当前位置: 首页 > news >正文

做视频网站服务器怎么选择wordpress 产品网站

做视频网站服务器怎么选择,wordpress 产品网站,婚庆公司名字,wordpress无法选择数据库一. MinIO概述 官网地址#xff1a;https://minio.org.cn MinIO是一款基于Apache License v2.0开源协议的分布式文件系统#xff08;或者叫对象存储服务#xff09;#xff0c;可以做为云存储的解决方案用来保存海量的图片、视频、文档等。由于采用Golang实现#xff0c;服…一. MinIO概述 官网地址https://minio.org.cn MinIO是一款基于Apache License v2.0开源协议的分布式文件系统或者叫对象存储服务可以做为云存储的解决方案用来保存海量的图片、视频、文档等。由于采用Golang实现服务端可以工作在Windows、Linux、 OS X和FreeBSD上。配置简单基本是复制可执行程序单行命令就可以运行起来。 MinIO兼容亚马逊S3(Simple Storage Service简单存储服务)云存储服务接口非常适合于存储大容量非结构化的数据例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等而且每个对象文件可以是任意大小从几kb到最大5T不等。 MinIO特点 1. 高性能作为高性能对象存储在标准硬件条件下它能达到55GB/s的读、35GB/s的写速率 2. 可扩容不同MinIO集群可以组成联邦并形成一个全局的命名空间并跨越多个数据中心 3. SDK支持: 基于Minio轻量的特点它得到类似Java、Python或Go等语言的sdk支持 4. 支持纠删码MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配  置下即使丢失1/2的磁盘也能恢复数据 MinIO基本概念 bucket桶 类似文件系统的目录(文件夹)Object 类似文件系统的文件Keys 类似文件名MINIO_ACCESS_KEY访问key类似账号MINIO_SECRET_KEY秘钥类似密码。 二. Dokcer安装Minio 2.1 创建文件夹 在home/docker/minio文件夹下创建两个文件夹分别是data、config用于挂载容器中的数据卷。 mkdir home/docker/minio/data mkdir home/docker/minio/config 2.1 拉取镜像 docker pull minio/minio 2.3 启动容器 docker run -p 9000:9000 -p 9001:9001\--name minio \-d --restartalways \-e MINIO_ROOT_USERminio \-e MINIO_ROOT_PASSWORDminio123 \-v /home/docker/minio/data:/data \ -v /home/docker/minio/config \minio/minio server \/data --console-address :9001 -address :9000 参数说明 -pMinIO 服务会暴露 9000 端口作为API端口9001 端口为可视化管理页面端口-v 挂载数据卷将 minio 容器内存储的数据、配置文件映射到宿主机-e MINIO_ROOT_USER设置 root 用户名-e MINIO_ROOT_PASSWORD设置 root 的密码长度至少 8 位--console-address指定可视化界面端口-address指定服务端口 记得开放安全组 2.4 查看日志 docker logs minio容器id 通过以上命令查看 minio 日志会输出以下内容 我们可以通过日志中的Console地址来访问可视化界面。 三.访问Minio 登录成功后可以创建桶 此时在桶列表会会出现刚刚创建的桶点击Manage设置桶的访问策略修改为 Public 公共策略这样 minio 中的文件才能被外界访问 并可以直接在桶中上传文件。 四. 整合Springboot完成文件上传 4.1创建springboot工程 4.2 导入相关依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency!-- 必须要导入OKhttp的依赖 --dependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion4.8.1/version/dependency!-- https://mvnrepository.com/artifact/io.minio/minio --dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion8.5.7/version/dependency!--web--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--lombok--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency /dependencies 4.3 yaml中配置 Minio 在 yaml 中新增以下配置 minio:accessKey: minio # 访问KeysecretKey: minio123 # 密钥bucket: test endpoint: http://xxx.x.x.x:9000 # ip:api端口readPath: http://xxx.x.x.x:9000 # ip:api端口servlet:multipart:# 单个上传文件的最大值是200mbmax-file-size: 200MB# 单次请求的最大值max-request-size: 200MB 4.4 编写 MinIO属性配置类 Data Component ConfigurationProperties(prefix minio) //自动注入属性前缀为minio的配置 public class MinIOConfigProperties implements Serializable {private String accessKey; // 访问keyprivate String secretKey; // 秘钥private String bucket; // 桶private String endpoint; // 地域节点private String readPath; // 读取路径 } 4.5 编写MinIO配置类注册MinioClient客户端Bean实例 Configuration public class MinIOConfig {Autowiredprivate MinIOConfigProperties minIOConfigProperties;// 注册MinIO实例Beanpublic MinioClient buildMinioClient(){return MinioClient.builder().credentials(minIOConfigProperties.getAccessKey(), minIOConfigProperties.getSecretKey()).endpoint(minIOConfigProperties.getEndpoint()).build();} } 4.6 编写操作minio相关业务接口 public interface FileStorageService {/*** 上传图片文件** param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/public String uploadImgFile(String prefix, String filename, InputStream inputStream);/*** 上传html文件** param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/public String uploadHtmlFile(String prefix, String filename, InputStream inputStream);/*** 删除文件** param pathUrl 文件全路径*/public void delete(String pathUrl);/*** 下载文件** param pathUrl 文件全路径* return*/public byte[] downLoadFile(String pathUrl);} 业务接口实现类 Service public class MinIOFileStorageService implements FileStorageService {AutowiredMinioClient minioClient;AutowiredMinIOConfigProperties minIOConfigProperties;final static String separator /; //文件夹分隔符/*** 构建文件的绝对路径** param dirPath 文件路径* param filename 文件名 yyyy/mm/dd/file.jpg* return /test*/public String builderFilePath(String dirPath, String filename) {StringBuilder stringBuilder new StringBuilder(50);if (!StringUtils.isEmpty(dirPath)) {stringBuilder.append(dirPath).append(separator);}SimpleDateFormat sdf new SimpleDateFormat(yyyy/MM/dd);String todayStr sdf.format(new Date());stringBuilder.append(todayStr).append(separator);stringBuilder.append(filename);return stringBuilder.toString();}/*** 上传图片文件** param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/Overridepublic String uploadImgFile(String prefix, String filename, InputStream inputStream) {String filePath builderFilePath(prefix, filename);try {PutObjectArgs putObjectArgs PutObjectArgs.builder().object(filePath).contentType(image/jpg).bucket(minIOConfigProperties.getBucket()).stream(inputStream, inputStream.available(), -1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath new StringBuilder(minIOConfigProperties.getReadPath());urlPath.append(separator minIOConfigProperties.getBucket());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();} catch (Exception ex) {throw new RuntimeException(上传文件失败);}}/*** 上传html文件** param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/Overridepublic String uploadHtmlFile(String prefix, String filename, InputStream inputStream) {String filePath builderFilePath(prefix, filename);try {PutObjectArgs putObjectArgs PutObjectArgs.builder().object(filePath) //文件名.contentType(text/html)//文件类型.bucket(minIOConfigProperties.getBucket())//桶名称与minio创建的桶一致.stream(inputStream, inputStream.available(), -1)//文件流.build();minioClient.putObject(putObjectArgs);StringBuilder urlPath new StringBuilder(minIOConfigProperties.getReadPath());urlPath.append(separator minIOConfigProperties.getBucket());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString(); //文件全路径} catch (Exception ex) {ex.printStackTrace();throw new RuntimeException(上传文件失败);}}/*** 删除文件** param pathUrl 文件全路径*/Overridepublic void delete(String pathUrl) {String key pathUrl.replace(minIOConfigProperties.getEndpoint() /, );int index key.indexOf(separator);String bucket key.substring(0, index);String filePath key.substring(index 1);// 删除ObjectsRemoveObjectArgs removeObjectArgs RemoveObjectArgs.builder().bucket(bucket).object(filePath).build();try {minioClient.removeObject(removeObjectArgs);} catch (Exception e) {e.printStackTrace();}}/*** 下载文件** param pathUrl 文件全路径* return 文件流*/Overridepublic byte[] downLoadFile(String pathUrl) {String key pathUrl.replace(minIOConfigProperties.getEndpoint() /, );int index key.indexOf(separator);String bucket key.substring(0, index);String filePath key.substring(index 1);InputStream inputStream null;try {inputStream minioClient.getObject(GetObjectArgs.builder().bucket(minIOConfigProperties.getBucket()).object(filePath).build());} catch (Exception e) {e.printStackTrace();}//字节数组输出流ByteArrayOutputStream byteArrayOutputStream new ByteArrayOutputStream();byte[] buff new byte[100];int rc 0;while (true) {try {if (!((rc inputStream.read(buff, 0, 100)) 0)) break;} catch (IOException e) {e.printStackTrace();}byteArrayOutputStream.write(buff, 0, rc);}return byteArrayOutputStream.toByteArray();}} 4.7 编写controller进行测试 RestController RequestMapping(/minio) public class MinioController {Autowiredprivate FileStorageService fileStorageService;/*** 上传图片到minio** param file* return*/PostMapping(/upload)public void uploadFile(MultipartFile file) throws IOException {try {// 获取文件名称String fileName file.getOriginalFilename();/*解决多次上传同名文件覆盖问题*/// 在文件名称里面添加随机唯一的值String uuid UUID.randomUUID().toString().replaceAll(-, );fileName uuid fileName;// 获取文件输入流InputStream is file.getInputStream();String imgUrl fileStorageService.uploadImgFile(img, fileName, is);return 上传成功!imgUrl:imgUrl;} catch (IOException e) {e.printStackTrace();return 上传失败;}}} 4.8 启动项目测试 查看 Minio 可视化界面图片是否上传成功 可通过ip图片路径直接访问。
http://www.pierceye.com/news/22269/

相关文章:

  • 网站视频嵌入代码wordpress.c0m
  • discuz建站流程保定百度推广联系电话
  • 网站建设 300元当前网站建设的主要方法
  • 手机网站弹出菜单页面模板只能有30个文章吗
  • 关键词搜索网站重庆营销型网站随做的好
  • 意识形态 加强网站建设谷歌英文网站
  • 做移动网站首页软怎么破解wordpress主题
  • 用云主机做网站wordpress手机加搜索
  • 加强三农网站建设的意义做生鲜的网站
  • 浏览有关小城镇建设的网站wordpress作者墙主题
  • 国税局网站里打印设置如何做网络规划设计师视频教程百度云
  • 企业手机网站制作住房建设网站柳州
  • 淘宝做网站的都是模板模板网站建设哪家专业
  • 博客网站大连做网站的科技公司
  • 网站建设招标公告游戏推荐网站怎么做
  • 建设网站的规则网站用社交图标做链接侵权吗
  • 江都建设局网站李局推广引流渠道方法大全
  • asp网站静态化wordpress创意插件
  • 深圳网站建设html5马尔康网站建设
  • 软件开发包含网站开发河南映天建设网站
  • 织梦网站图片不显示图片南京网站排名优化费用
  • 安徽省建设厅网站工程师查询青海省住房建设厅网站首页
  • 学网站建设 去那里做自适应网站
  • 通辽市网站建设网站服务器选购
  • 丹阳建设局网站vue做网站导航
  • 红古微信网站建设构建电子商务网站的步骤
  • 青州做网站的网络公司免费申请靓号
  • 江西企业网站建设电话哪类网站流量大
  • 小说网站静态模板网站开发的方式
  • 孟村网站建设百度大全下载