Minio单机安装和使用

什么是minio?

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

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

1、官网地址 http://www.minio.org.cn/

2、github地址 https://github.com/minio/minio

window部署

3、windows 服务端下载地址

     http://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe

4、安装启动

    启动一个cmd窗口,进入minio.exe所在文件夹,输入如下命令

   新建一个目录存放minio文件,我建的文件名叫 D:\Dminio\DminioData,CMD进入刚刚下载的minio.exe所在目录,

  直接在cmd下运行:minio.exe server D:\Dminio\DminioData

  启动成功以后如下图(启动就是这么简单),最后红色字提示修改access Key和Secret Key  (默认全是minioadmin)

 注册成服务在后台运行

  1. 地址:https://github.com/winsw/winsw/releases
  2. 将WinSW.exe复制到自定义的目录,并重命名为自己想命名的服务名称minio-server.exe
  3. 同目录下创建minio-server.xml。特别注意,xml和exe必须同名
  4. 配置minio-server.xml文件
  5. 使用minio-server.exe install安装服务
  6. 安装完后,去服务中启动服务。启动成功就可以正常使用minio啦
  7. 使用minio-server.exe uninstall卸载服务
<service>
    <id>minio-server</id>
    <name>minio-server</name>
    <description>minio文件存储服务器</description>
    <!-- 可设置环境变量 -->
    <env name="HOME" value="%BASE%"/>
    <executable>%BASE%\minio.exe</executable>
    <arguments>server "%BASE%\data"</arguments>
    <!-- <logmode>rotate</logmode> -->
    <logpath>%BASE%\logs</logpath>
    <log mode="roll-by-size-time">
      <sizeThreshold>10240</sizeThreshold>
      <pattern>yyyyMMdd</pattern>
      <autoRollAtTime>00:00:00</autoRollAtTime>
      <zipOlderThanNumDays>5</zipOlderThanNumDays>
      <zipDateFormat>yyyyMMdd</zipDateFormat>
    </log>
</service>

  

 5、浏览器打开 http://127.0.0.1:9000/  输入access Key和Secret Key  (全是minioadmin)

 

 6、修改AccessKey和SecretKey(D:\Dminio\DminioData\.minio.sys\config\config.json)

 

 

用户名即为上面的AccessKey

密码即为上面的SecretKey

7、上传文件,先要新建一个bucket (中文是桶的意思,我们理解为文件夹),点右下角有一个+号,选Create bucket ,

 

 再上传一个文件,如下图,表示成功了。

 

docker部署

搜索镜像的命令

docker search minio

拉取镜像的命令

docker pull minio/minio

a、启动与安装镜像(这种安装方式并没有指定 ACCESS_KEY 和 SECRET_KEY 进行设置,安装后可以进行 echo命令设置,)

docker run -it -p 9000:9000 -d minio/minio server /data

-it 表示运行参数,-p 表示暴露端口 ,-d 表示后台运行,data 指定目录存放文件

echo 命令设置 ACCESS_KEY 和 SECRET_KEY

echo "admin" | docker secret create access_key -
echo "admin123456" | docker secret create secret_key -

b、自定义用户和秘钥安装

这种安装方式 MinIO 自定义 Access 和 Secret 密钥要覆盖 MinIO 的自动生成的密钥,您可以将 Access 和 Secret 密钥设为环境变量。MinIO 允许常规字符串作为 Access 和 Secret 密钥
docker run -p 9000:9000 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123456" \
-v /home/data:/data \
-v /home/config:/root/.minio \
minio/minio server /data

linux部署

先建立个存放minion的文件夹。并进入,或者直接在home目录下,用wget下载

wget https://dl.minio.io/server/minio/release/linux-amd64/minio

若是以上的下载链接速度较慢,可使用国内的下载链接

wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio

如果:-bash: wget: 未找到命令,先安装wget

yum -y install wget

接着为下载的minion添加执行权限(进入安装目录进行赋权操作)

chmod +x minio

复制minio到指定目录,方便管理

mv minio /usr/local/

创建Minio的文件存在目录

mkdir -p /home/minio/data

设置minio的账号和密码,也就是 access key and secret key(不指定,系统就是使用默认密码,账号和密码都是 minioadmin)

export MINIO_ACCESS_KEY=dezcloud
export MINIO_SECRET_KEY=NBdd123456

启动minion:(进入 /usr/local/目录)

./minio server /home/minio/data/

如果这样启动的话,命令窗口不能关闭,可以设置后台启动方式

./minio server /home/minio/data &

 如果报错Unable to initialize the server: Unable to initialize sub-systems: Credentials missing

应该是修改了MINIO_ACCESS_KEY与 MINIO_SECRET_KEY,先设置下改过的MINIO_ACCESS_KEY 与 MINIO_SECRET_KEY ,然后再启动就正常。

export MINIO_ACCESS_KEY=dezcloud
export MINIO_SECRET_KEY=NBdd123456
./minio server /home/minio/data &

查看是否启动正常

ps -e|grep minio

[root@localhost local]# ps -e|grep minio 
439 pts/3 00:00:03 minio
[root@localhost local]#

设置minio开机自启

1.打开开机自启文件

vi /etc/rc.local

2.添加自启脚本(如果自定义账号密码添加export MINIO_ACCESS_KEY=dezcloudexport MINIO_SECRET_KEY=NBdd123456)

export MINIO_ACCESS_KEY=dezcloud
export MINIO_SECRET_KEY=NBdd123456
nohup /usr/local/minio server /home/minio/data > /home/minio/data/minio.log 2>&1 &

3.保存
4.修改权限

chmod +x /etc/rc.local

5.重启测试

reboot

登录地址为启动后显示 ,默认为 ip:9000

 8、用java测试上传功能:

import io.minio.MinioClient;
import io.minio.ObjectStat;
import io.minio.errors.MinioException;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class Program {
    public static void main(String[] args){
        System.out.println("hello java");
        try {
            test1();
        }catch (Exception e){
            System.out.println("test1错误: " + e);
        }

    }


    public static void test1()throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException {

        try {
            // 参数为:图床,账号,密码
            MinioClient minioClient = new MinioClient("http://127.0.0.1:9000", "minioadmin", "minioadmin");

            //boolean v=minioClient.bucketExists("test1");
            // 检查文件夹是否已经存在
            boolean isExist = minioClient.bucketExists("test1");
            if(isExist) {
                System.out.println("test1文件夹已经存在了");
            }
            else {
                // 创建一个名为managertest的文件夹
                System.out.println("test1文件夹还没存在");
                minioClient.makeBucket("test1");
            }

            // 使用putObject上传一个文件到文件夹中。
            //参数为:文件夹,要存成的名字,要存的文件 (如果文件名相同将会复盖原来的文件)
            minioClient.putObject("test1","tujpg2.png", "E:/Convert/testAllFile/tujpg2.jpg");
            System.out.println("上传成功了");


            //使用getObject获取一个文件
            // 调用statObject()来判断对象是否存在。
            ObjectStat file=minioClient.statObject("test1", "tujpg2.png");
            System.out.println("文件名:"+file.name()+",文件大小:"+file.length());

            // 获取1.png的流并保存到photo.png文件中。
            //参数为:文件夹,要获得的文件,要写入的文件
            minioClient.getObject("test1", "tujpg2.png", "E:/Convert/testAllFile/tujpg_minio.png");
            System.out.println("下载成功了");

        } catch(MinioException e) {
            System.out.println("错误: " + e);
        }
    }
}

 9、运行以后,test是开始手动点右下角创建的,test1是代码创建的,里面的文件也是代码上传的。:

posted @ 2021-03-01 15:51  hzy_叶子  阅读(3522)  评论(0编辑  收藏  举报