1.下载安装包
进入MinIO官网
点击 linux-amd64(上图中圈起来的地方)
点击miio(下图中圈起来的地方),即开始下载minio的运行程序
2.配置
将上面步骤下载好的文件复制到Linux机器中
赋予执行权限
chmod +x minio
可以看到minio变绿了
创建minio数据存放路径(本例使用:/software/minio/data
)
mkdir -p /software/minio/data
赋予每个人整个minio文件夹(/software/minio/data
)读、写的权限
chmod 666 /software/minio/
配置用于登录minio控制台的用户和密码
vim /etc/profile
文件最后一行加上
export MINIO_ROOT_USER=登录用户名
export MINIO_ROOT_PASSWORD=登录密码
示例如下图所示
wq保存退出
使配置生效
source /etc/profile
3.编写启动脚本
vim start
minio_pid_count=`ps -ef|grep "minio server"|wc -l`
#如果有minio进程则杀掉
if (($minio_pid_count > 1));
then ./stop
fi
echo "minio is starting..."
console_port=9099 #控制台端口
server_port=9098 #服务端口
log_path=/software/minio/minio.log #日志文件路径(自定义)
minio_program_path=/software/minio/minio #minio应用程序所在路径
data_dir=/software/minio/data/ #数据存放路径(自定义)
#使用一些参数并 以后台运行的方式启动MinIO,同时写入日志文件
nohup $minio_program_path server $data_dir --console-address ":$console_port" --address ":$server_port" >> $log_path 2>&1 &
echo "console-port:$console_port"
echo "api-port:$server_port"
echo "minio-log-path:$log_path"
echo "MINIO_ROOT_USER:${MINIO_ROOT_USER}"
echo "MINIO_ROOT_PASSWORD:${MINIO_ROOT_PASSWORD}"
echo "certs_dir:${certs_dir}"
echo "minio is started successfully!"
wq保存退出
赋予执行权限
chmod +x start
3.编写停止脚本
vim stop
pid=`ps -ef | grep "minio server" | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "minio is stopped"
wq保存退出
赋予执行权限
chmod +x stop
此时minio目录如下
4.启动
/software/minio/start
启动成功,可见控制台端口是9099
防火墙开放9099端口
firewall-cmd --zone=public --add-port=9099/tcp --permanent=
重启防火墙
firewall-cmd --reload
通过 ip:端口访问
输入在 /etc/profile
中配置的用户名和密码登录即可
5.Java简单使用MinIO
5.1创建Access Key
进入minio控制台,点击Access Keys
然后点击Create access key
点击上图中的create,将 access key 和 secret key保存起来(因为它只显示一次,且后面要用到)
点击×
关闭后,可以看到创建成功了
5.2编写简单代码测试上传功能
导入依赖或对应依赖包,我这里是maven项目,直接导入依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.0.0</version>
</dependency>
注意:我这里使用9098作为minio服务端口,也需要开放
准备一个文件,内容如下
编写测试类
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Test {
public static void main(String[] args) {
try {
/**
* 模拟上传文件
**/
String filePath = "E:\\123.txt"; //要上传的文件路径
String serverAddress = "http://192.168.50.75:9098"; //minio服务端地址 注意端口与控制台端口不一样
String accessKey = "你在minio控制台创建的accessKey";
String secretKey = "accessKey对应的secretKey";
String bucketName = "bk1";
//1.创建minio客户端
MinioClient minioClient = MinioClient.builder()
.endpoint(serverAddress)
.credentials(accessKey, secretKey)
.build();
//2.判断存储桶是否存在,不存在则创建
boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
if (!exists){
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
//3.创建file对象
File file = new File(filePath);
//4.file转输入流并上传
InputStream in = null;
try {
in = new FileInputStream(file);
minioClient.putObject(PutObjectArgs.builder()
.bucket(bucketName)
.object("文件名111.txt") //文件名也写死了 所以同名文件会覆盖
.stream(in, in.available(), -1)
.contentType("txt") //文件类型,这里写死了,实际上需要根据文件动态获取
.build()
);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}catch (Exception e){
e.printStackTrace();
}
}
}
运行
上传成功
网址访问文件的方法
将bucket开放为public
通过 ip:端口/存储桶路径/文件名称
例:http://192.168.50.75:9098/bk1/tt/屏幕截图 2023-04-13 162619.png