FastDFS
FastDFS是一款轻量级的开源分布文件系统,他用纯C语言实现,支持Linux,FreeBSD,AIX等UNIX系统。
只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。
fastdfs 运行:
https://hub.docker.com/r/season/fastdfs/
安装:docker pull season/fastdfs
启动:tracker
docker run -ti -d --name trakcer -v ~/tracker_data:/fastdfs/tracker/data --net=host season/fastdfs tracker //默认启动22122端口(创建会自动退出)
netstat -aon | grep //查看端口占用。
find / -name selinux //关掉新的防火墙 selinux
想要创建不自动退出:
进入。vi /ecct/sysconfig/selinux
将 SELINUX=enforcing 改成disabled
重启 reboot
将之前创建的删除重建 , 就是启动的了.
执行:(启动storage服务器)【用来存数据】数据会存入 store_path里面.
docker run -tid --name storage -v ~/storage_data:/fastdfs/storage/data -v ~/store_path:/fastdfs/store_path --net=host -e TRACKER_SERVER:192.168.126.131:22122 season/fastdfs storage
指定位置 : -e 写TRACKER_SERVER:192.168.126.130(写自己ip地址):22122(端口)
【测试:】(测试有没有上传文件)
docker exec -it 名字。bash
进入容器之后容器会自动生成一些目录,其中在根目录下就有一个目录 fdfs_conf(所有配置文件都在这里)
进入目录 cd fdfs_conf
监控 : fdfs_monitor
显示命令的语法
指定配置文件:fdfs_monitor 文件
会显示一个日志
上传文件:java代码
引依赖:
<dependencies>
<dependency><!--只要引用springboot 就必须要,除非第三方的包里面自带,反正就必须要引-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.luhuiguo</groupId>
<artifactId>fastdfs-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
</dependencies>
application.yml:
server:
port: 5858
fdfs:
#超时时间.
connect-timeout: 5000
#响应的超时时间.
so-timeout: 3000
tracker-list:
- 192.168.126.131:22122
spring:
datasource:
url: jdbc:mysql://localhost/unit02
username: root
password: pa123456
driver-class-name: com.mysql.jdbc.Driver
Main:
@SpringBootApplication
public class UpMain {
public static void main(String[] args){
SpringApplication.run(UpMain.class);
}
}
java
@Controller
public class UpController {
@Autowired
private FastFileStorageClient storageClient;
/**
* @param myFile 是从浏览器提交过来
* @return
*/
@PostMapping("/up")
public String upload(@RequestParam("myFile") MultipartFile myFile) throws IOException {
String extName = FilenameUtils.getExtension(myFile.getOriginalFilename());
StorePath sp = storageClient.uploadFile("group1",myFile.getInputStream(),myFile.getSize(),extName);
return sp.getFullPath();
}
}
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="up">
上传文件<input type="file" name="myFile"/>
<input type="submit" value="上传"/>
</form>
</body>
</html>