非常详细的FastDFS整合springBoot教程-带文件下载地址
FastDFS整合springBoot教程编写该教程的目的本教程基于已有的springBoot框架进行整合,springBoot构架部分不做教学为了给自己做笔记,同时为所需童鞋少爬点坑。目录教程分为三部分:Linux部署、springBoot配置、单元测试准备工作;FastDFS在linux安装、配置及测试;springBoot配置;单元测试;环境及所需文件服务器:cen...
FastDFS整合springBoot教程
编写该教程的目的
本教程基于已有的springBoot框架进行整合,springBoot构架部分不做教学
为了给自己做笔记,同时为所需童鞋少爬点坑。
目录
教程分为三部分:Linux部署、springBoot配置、单元测试
- 准备工作;
- FastDFS在linux安装、配置及测试;
- springBoot配置;
- 单元测试;
环境及所需文件
服务器:centos7 64
客户端:springBoot2.0
FastDFS_v5.08.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon-master.zip
nginx-1.8.zip
所以文件均上传至根目录操作且意需要gcc环境
所有包下载链接:https://pan.baidu.com/share/init?surl=N1qt7eCs9owR4yAfa_-mng
提取码:vpuh
FastDFS在linux安装、配置及测试
一、安装libfastcommon
安装 libfastcommon模块。解压缩libfastcommon
命令:unzip libfastcommon-master.zip
然后进入解压完的目录内
命令: cd libfastcommon-master/
命令: ./make.sh 编译完成
命令: ./make.sh install 安装
二、安装FastDFS_v5.08.tar.gz
解压缩FastDFS_v5.08压缩包
命令:tar -zxvf FastDFS_v5.08.tar.gz
然后进入解压缩后的目录内
命令: cd FastDFS-5.08/
命令: ./make.sh && ./make.sh install 编译并且安装
三、复制FastDFS-5.08目录内的所用到的三个配置文件到 /etc/fdfs文件夹内
命令: cp client.conf /etc/fdfs
命令: cp storage.conf /etc/fdfs
命令: cp tracker.conf /etc/fdfs
命令: cp http.conf /etc/fdfs
命令: cp mime.types /etc/fdfs
建立storage、tracker目录
命令:cd /
命令:mkdir -p /export/fastdfs/{storage,tracker}
四、修改 tracker.conf配置
命令:cd /etc/fdfs
命令:vi tracker.conf
打开后找到下面4处然后修改即可
disabled=false #默认开启
connect_timeout=60 #链接超时时间
base_path=/export/fastdfs/tracker #设置tracker数据文件和日志目录
http.server_port=9080 #默认端口是8080
启动tracker
命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
设置开机启动
命令:echo “/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart” >> /etc/rc.local
查看进程
命令:ps aux | grep tracker
五、修改 storage.conf配置
命令:cd /etc/fdfs
命令:vi storage.conf
打开后找到下面根据实际需求修改即可
disabled=false #默认开启
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/export/fastdfs/storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
base_path0=/export/fastdfs/storage #实际文件存储路径,会放在生成的data目录下
tracker_server=100.100.100.100:22122 #我tracker_server服务器ip地址(根据实际情况修改,貌似不可以使用127.0.0.1)
http.server_port=9080 #设置 http 端口号
启动storage
命令:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
设置开机启动
命令:echo “/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart” >> /etc/rc.local
查看进程
命令:ps aux | grep storage
六、安装 fastdfs-nginx-module_v1.16模块
FastDFS通过tracker服务器,将文件放在storage服务器存储,但是同组存储器之间需要进入文件复制,有同步延迟的问题。也就是说,当客户端把文件上传到一个storage后,再从storage集群下载文件时,此时文件没有完成storage组的同步,会导致客户 端无法获取文件而发生错误,而fastdfs-nginx-module模块会把文件连接到用户上传的storage的服务器。
解压 fastdfs-nginx-module
命令: cd /
命令: unzip fastdfs-nginx-module.zip
修改config配置
命令: cd fastdfs-nginx-module/src/
命令: vi config
去掉这CORE_INCS一行路径中的local
字符
在CORE_LIBS一行的lib
后加上64
来指定系统位数,32位则不加
把mod_fastdfs.conf复制到 /etc/fdfs/目录内
命令: cp mod_fastdfs.conf /etc/fdfs
七、配置nginx的模块
首先找到nginx的压缩包,然后解压
命令:cd /
命令:tar -zxvf nginx-1.8.0.tar.gz
然后进入nginx解压后的目录,会看到一个configure的文件,然后通过编译加入fastdfs-nginx的模块。
--prefix
:指定nginx安装到哪个目录, add-module 后面加上 fastdfs-nginx-module的目录
命令: ./configure --prefix
=/usr/local/nginx/
--add-module=../fastdfs-nginx-module/src/
命令: ./make
命令: ./make install
修改 nginx的配置文件
命令: cd /usr/local/nginx/conf
命令: vi nginx.conf
修改后的配置文件如下
修改mod_fastdfs.conf配置文件:
命令:vi /etc/fdfs/mod_fastdfs.conf
修改如下:
tracker_server=100.100.100.100:22122(根据实际情况修改)
url_have_group_name = true
store_path0=/export/fastdfs/storage/data
八、增加系统打开文件数的限制
命令:ulimit -SHn 102400
运维注意:我们在使用FastDFS的时候,需要正常关机,不要使用kill -9强杀FastDFS进程,不然会在文件上传时出现丢数据的 情况。
九、启动停止服务步骤如下:
1、启动命令:
启动tracker命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
查看进程命令:ps aux | grep fdfs
启动storage命令:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
查看进程命令:ps aux | grep fdfs
启动nginx命令:/usr/local/nginx/sbin/nginx
2、停止命令:
停止tracker命令:/etc/init.d/fdfs_trackerd stop
关闭storage命令:/etc/init.d/fdfs_storaged stop
关闭nginx命令:/usr/local/nginx/sbin/nginx -s stop
测试上传文件:
命令: /usr/bin/fdfs_test /etc/fdfs/client.conf upload /opt/xingji001.jpg
上传文件没有问题,且有网络地址返回,把网络地址贴到浏览器,如果能正常访问,则FastDFS服务器搭建完成
SpringBoot的FastDFS配置
新建一个springboot项目,在pom文件加入fastdfs-client-java包,用来调用FastDFS相关的API
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.6</version>
<!-- 因为logback和logf4j日志有冲突,因为要屏蔽掉logback -->
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
</exclusions>
</dependency>
在application.yml中配置FastDFS参数
# ===================================================================
# 分布式文件系统FDFS配置
# ===================================================================
fdfs:
so-timeout: 1501
connect-timeout: 601
thumb-image:
width: 150
height: 150
tracker-list:
- 100.100.100.100:22122 #根据实际情况填写,可以配置多个tracker服务器地址
# - 100.100.100.101:22122
在启动类加上Import注解引入FdfsClientConfig服务
没错,就是这么简单粗暴,不需要再做任何其他配置。
SpringBoot的FastDFS功能测试
编写测试类
/**
* FastDFS测试类
* @author Zhuyd
* @date 2019-08-06 13:39:10
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes=DemoApiApplication.class)
@WebAppConfiguration
public class FdfsTest {
@Autowired
private FastFileStorageClient storageClient;
@Autowired
private ThumbImageConfig thumbImageConfig;
@Test
public void testUpload() throws FileNotFoundException {
//对路径进行处理
String str="E:\\\\test\\\\123.png";
String location=str.replace("\\\\", "/");
File file = new File(location);
// 上传并且生成缩略图
StorePath storePath = storageClient.uploadFile(
new FileInputStream(file), file.length(), "png", null);
// 带分组的路径
System.out.println(storePath.getFullPath());
// 不带分组的路径
System.out.println(storePath.getPath());
}
@Test
public void testUploadAndCreateThumb() throws FileNotFoundException {
String str="E:\\test\\123.png";
String location=str.replace("\\", "/");
File file = new File(location);
// 上传并且生成缩略图
StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage(
new FileInputStream(file), file.length(), "png", null);
// 带分组的路径
System.out.println(storePath.getFullPath());
// 不带分组的路径
System.out.println(storePath.getPath());
// 获取缩略图路径
String path = thumbImageConfig.getThumbImagePath(storePath.getPath());
System.out.println(path);
}
}
console输出
#带分组的路径
group1/M00/00/00/CgoLJV1JElmAM-0zAAC2qXxd6_M753.png
#不带分组的路径
M00/00/00/CgoLJV1JElmAM-0zAAC2qXxd6_M753.png
#带分组的路径
M00/00/00/CgoLJV1JElmAM-0zAAC2qXxd6_M753_150x150.png
#不带分组的路径
group1/M00/00/00/CgoLJV1JElqAFTuxAAC2qXxd6_M512.png
#获取缩略图路径
M00/00/00/CgoLJV1JElqAFTuxAAC2qXxd6_M512.png
得到图片真实服务器地址:
http:100.100.100.100:9080/group1/M00/00/00/CgoLJV1JElmAM-0zAAC2qXxd6_M753.png
http:100.100.100.100:9080/group1/M00/00/00/CgoLJV1JElqAFTuxAAC2qXxd6_M512.png
浏览器访问:
感谢各位的阅读,本教程结束,此教程为博主整理网络资料和实践后出的原创教程,转载请著名原著地址,感谢!
有什么不明白的和补充的欢迎留言。
更多推荐
所有评论(0)