华为云云耀云服务器L实例评测|在云耀云服务器L实例上部署minio--属于自己的OSS对象存储
云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。Docker是一个开源的容器化平台,具有轻量、快速、便携和可扩展等特点。它使得开发人员可以轻松地将应用程序打包成容器,并在任何地方运行这些容器。Docker可以用于部署应用
目录
一.介绍
1.1 云耀云服务器L介绍
云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。
1.2Docker介绍
Docker是一个开源的容器化平台,具有轻量、快速、便携和可扩展等特点。它使得开发人员可以轻松地将应用程序打包成容器,并在任何地方运行这些容器。Docker可以用于部署应用程序、测试环境的搭建、持续集成和持续部署等方面。
1.3Minio介绍
Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。基于Apache License v2.0开源协议的对象存储项目,采用Golang实现,客户端支Java,Python,Javacript, Golang语言。其设计的主要目标是作为私有云对象存储的标准方案。主要用于存储海量的图片,视频,文档等。非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
1.4Nginx介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
二:准备云耀云服务器L
2.1首先登陆华为云官网(没有账号的可以注册)
选择华为云耀云服务器
2.2 点击购买
2.3选择对应服务器的配置
这里我选择的是centos7.9的系统镜像,大家可以根据自己对哪一个系统熟悉来选择
2.4 确认订单
完成订单之后返回控制台开始配置实例
三:准备系统环境
3.1更新yum源
yum -y update
3.2下载相关工具
yum install -y yum-utils device-mapper-persistent-data lvm2
3.3配置docker环境
3.3.1设置docker仓库源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.3.2查看docker版本并下载
查看版本
yum list docker-ce --showduplicates | sort -r
下载对应版本(默认最新)
sudo yum install -y docker-ce
启动docker服务
docker enable docker --now
查看状态
docker status docker
3.3.3配置docker源
这里以华为云镜像为例
获取镜像加速地址
编写配置文件
vim /etc/docker/daemon.json
>>
{
"registry-mirrors": [ "你自己的镜像加速地址" ]
}
<<
重启docker服务
systemctl restart docker
3.4 下载nginx(可选)
下载nginx
yum -y install nginx
启动nginx并查看状态
systemctl enable nginx --now
systemctl status nginx
此时可以通过浏览器查看
此时需要设置安全组
3.5开放安全组
到控制台找到对应的服务器
开放80 ,9000,9001端口
3.6docker部署minio服务
3.6.1简单介绍docker compose
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。
3.6.2使用docker compose部署minio
vim docker-compose.yml
>>
version: "3"
services:
minio:
image: minio/minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
environment:
MINIO_ROOT_USER: 用户名
MINIO_ROOT_PASSWORD: 密码!一定要复杂
restart: always
command: server --address :9000 --console-address :9001 --compat /data
volumes:
minio_data: {}
<<
运行docker-compose
docker compose up -d
浏览器输入ip:9001
输入密码后即可查看控制台
至此minio初步搭建完成
3.7nginx代理minio控制台(可选)
vim /etc/nginx/nginx.conf
>>
location ~ /{
proxy_pass http://localhost:9001;
}
<<
#检查nginx配置
nginx -t
#重启nginx
nginx -s reload
这时就可以不加端口访问minio控制台了
四:测试minio服务
4.1 创建对应的密钥/用户 ,以及桶
创建密钥
创建桶
添加只读属性
4.2编写java测试
pom文件
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zly</groupId>
<artifactId>minIO</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.4</version>
</dependency>
</dependencies>
</project>
public class Main {
public static void main(String[] args) {
MinioClient minioClient = null;
try {
// 构建一个Minio客户端
minioClient = MinioClient.builder()
//创建容器时指定的账号
.credentials("key", "value")
//上传地址
.endpoint("http://【ip】:9000").build();
File file = new File("D:\\6073c458af3ea.jpg");
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.object("图片.jpg") //文件名
.contentType("image/jpeg") //文件类型
.bucket("test") //存储目录名
.stream(new FileInputStream(file), file.length(), -1).build(); //文件流,以及大小,-1代表不分片
//执行上传
ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
System.out.println("上传结果 " + objectWriteResponse);
} catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException e) {
System.out.println("Error occurred: " + e);
} finally {
}
}
}
运行结果
浏览器查看
测试成功 完成个人OSS搭建!!!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)