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)
注册成服务在后台运行
- 地址:https://github.com/winsw/winsw/releases
- 将WinSW.exe复制到自定义的目录,并重命名为自己想命名的服务名称minio-server.exe
- 同目录下创建minio-server.xml。特别注意,xml和exe必须同名
- 配置minio-server.xml文件
- 使用minio-server.exe install安装服务
- 安装完后,去服务中启动服务。启动成功就可以正常使用minio啦
- 使用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、自定义用户和秘钥安装
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是代码创建的,里面的文件也是代码上传的。: