Centos安装FastDFS并在Springboot项目中集成其客户端

04121416@cumt.edu.cn

Centos安装FastDFS并在Springboot项目中集成其客户端

这是我的第一篇技术博客,内容来自于慕课网授课讲师风间影月的收费课程《Netty/Spring Boot仿微信聊天全栈实战 从0开发到上线部署》,这里仅作笔记及技术分享,不作任何商业用途

我的需求

最近一个springboot的项目,需要存储及查看大量的小图片,因而想到要搭建一个文件服务。百度查了下,目前免费的文件服务器软件有NFDS、GFS、FastDFS等,大概搜索了下性能,基本结论是FastDFS最适合存储大量高并发的小文件,足够满足要求,且慕课网上有手把手的视频教程,就选它了。接下来就是如何一步步实现该需求,主要包括两个部分:
1、在服务器上搭建FastDFS服务
2、在springboot项目中集成FastDFS客户端

一、centos服务器上搭建FastDFS服务

1、背景知识了解

在这里插入图片描述

2、必要文件准备

  • nginx-1.12.0.tar.gz

  • libfastcommon-1.0.7.tar.gz

  • fastdfs-nginx-module_v1.16.tar.gz

  • fastdfs-5.05.tar.gz

    下载链接见:https://download.csdn.net/download/tuguai7887/11442072 (声明:我不想要积分,是CSDN默认5个积分,还不让我修改,真真是。。。)
    下载后,将这些安装包上传到服务器,这里,我将nginx-1.12.0.tar.gz放到/home/tar目录下,将其它3个放在了/home/tar/fastdfs目录下。

3、安装tracker服务

1、首先安装必要的依赖–libevent,输入命令yum -y install libevent安装,如下图: 在这里插入图片描述
2、然后安装fastDFS基本运行库–libfastcommon,解压libfastcommon-1.0.7.tar.gz,命令如下:

cd /home/tar/fastdfs
tar -zxvf libfastcommon-1.0.7.tar.gz

解压完毕后,进入libfastcommon-1.0.7文件夹,cd libfastcommon-1.0.7,输入ll命令可以看到有如下几个文件:
在这里插入图片描述
其中,make.sh就是编译安装脚本,先./make.sh编译,等待编译完成后,再./make.sh install安装,如下图所示:
在这里插入图片描述
在这里插入图片描述
安装完成后,相应的文件会自动放在/usr/lib64目录下面,cd /usr/lib64,再ll libfast*即可看到刚才安装好的libfastcommon的一个文件–libfastcommon.so
在这里插入图片描述
将该文件拷贝到相应的32位文件目录下,cp libfastcommon.so /usr/lib

3、接下来安装fastdfs软件包,cd /home/tar/fastdfs,然后tar -zxvf fastdfs-5.05.tar.gz解压,解压后生成fastdfs-5.05目录,cd fastdfs-5.05进入该目录下,ll可以看到有如下文件:
在这里插入图片描述
同样的,make.sh是编译安装脚本,./make.sh 编译,编译完成后./make.sh install 安装即可
在这里插入图片描述
安装完成后,相关的命令脚本会放到/usr/bin目录下,cd /usr/binll fdfs*可查看到文件如下:
在这里插入图片描述
此外,相关的配置文件放在了/etc/fdfs目录下,cd /etc/fdfsll看到文件如下:
在这里插入图片描述
见名知义,上面三个文件分别为client、storage服务、tracker服务的配置样例。这里,需要将原来fastdfs-5.05.tar.gz解压后目录下的配置文件全部拷贝到/etc/fdfs目录下,命令如下:

cp /home/tar/fastdfs/fastdfs-5.05/conf/* /etc/fdfs/

然后ll可以看到多了下面几个文件:
在这里插入图片描述
4、接下来是配置tracker服务,vim tracker.conf打开该配置文件
在这里插入图片描述
这里port指tracker服务的端口,可以根据自己需要修改,这里我不做改动。要改动的是tracker日志对应的base_path配置,改为自定义的/fastdfs/tracker目录,然后:wq保存退出。创建该目录mkdir /fastdfs/tracker -p,为后面方便,将storage及client目录一并创建,mkdir /fastdfs/storagemkdir /fastdfs/client
5、最后是启动tracker服务,cd /usr/bin,然后ll fdfs*
在这里插入图片描述
其中fdfs_trackerd文件即为启动命令,fdfs_trackerd /etc/fdfs/tracker.conf即可启动,直接换行没有报异常就是启动成功,若配置变化,需要重新启动,在该目录下输入命令fdfs_trackerd /etc/fdfs/tracker.conf restart即可
在这里插入图片描述

4、安装storage服务

上面已经将fastdfs软件包安装好,并配置启动了tracker服务,接下来就是配置并启动storage服务
1、修改storage配置,cd /etc/fdfsvim storage.conf打开配置文件,这里要配置4个地方:

  • 修改base_path配置值为/fastdfs/storage,该配置用于存放storage日志
  • 修改group_name配置值为/imooc,这里group_name表示组织名,是服务正常运行后,文件访问的url前缀,这里使用imooc,作为对内容原版权的尊重,读者可根据自己情况更改
  • 修改store_path0配置值为/fastdfs/storage,该配置用于存放上传的文件
  • 修改tracker_server配置值为192.168.1.70:22122,该配置用于storage服务和tracker服务通信,原因见上面第1章–背景知识了解,192.168.1.70:22122即为上面tracker服务的地址及端口,读者需根据自己的情况更改

修改完成后:wq保存退出

2、启动storage服务,cd /usr/binll fdfs*看到如下文件
在这里插入图片描述
其中fdfs_storaged便是storage服务启动命令,fdfs_storaged /etc/fdfs/storage.conf启动即可,修改配置需要重启该服务,重启命令:fdfs_storaged /etc/fdfs/storage.conf restart。若不放心,可通过ps aux|grep storage查看是否有该进程运行。
在这里插入图片描述
至此,tracker和storage服务都已经正确启动

5、配置client并且上传测试图片

首先申明,这里client只是作为客户端,可以不必配置运行,第5章内容只是用来验证上面的tracker和storage服务是否能正常使用。
1、修改client配置,cd /etc/fdfsvim client.conf打开配置文件,修改2处配置:

  • 修改base_path配置值为/fastdfs/client,该配置用于存放client日志
  • 修改tracker_server配置值为192.168.1.70:22122,该配置用于client和tracker之间通信,读者需根据自己需要修改配置值

配置完成后,:wq保存退出

2、上传测试图片。先准备一张图片cat.png放到/home目录下,执行命令/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/cat.png,执行返回结果如下
在这里插入图片描述
其中,最下面的example file url即为图片的访问路径,此时,因为还没有启动web服务,该路径暂时还不能外部访问。我们cd /fastdfs/storage,ll可以看到下面的两个目录
在这里插入图片描述
data目录存储图片,logs目录存储日志。cd data/00/00ll即可看到刚刚上传的文件,说明tracker和storage都已经可用
在这里插入图片描述

6、nginx安装与FastDFS配置

上文已经通过client成功在服务器本地上传了一张图片,但实际使用中,我们是通过http上传及查看图片,因而还需要安装nginx以及fastdfs-nginx-module(nginx与fastdfs的关联模块)
1、首先安装fastdfs-nginx-module。cd /home/tar/fastdfstar -zxvf fastdfs-nginx-module_v1.16.tar.gz解压该文件,cd fastdfs-nginx-module进入该文件夹,ll看到目录如下
在这里插入图片描述
vim src/config打开配置文件
在这里插入图片描述
可以看到里面有三个“local”,将它们删除,删除后的文件如下:
在这里插入图片描述
然后:wq保存退出,这样,关联模块的配置就完成了第一步。

2、安装nginx。nginx安装之前需要一些必要的依赖库,yum -y install gcc-c++安装gcc,完成后yum -y install pcre pcre-devel安装pcre(pcre为nginx提供解析正则的功能支持),完成后yum -y install zlib zlib-devel安装zlib,完成后yum -y install openssl openssl-devel安装openssl,至此,依赖安装完毕。
然后,cd /home/tartar -zxvf nginx-1.12.0.tar.gz解压该文件,cd nginx-1.12.0进入该文件夹,复制粘贴并运行如下命令,

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/home/tar/fastdfs/fastdfs-nginx-module/src

其中,最后一行即为关联模块fastdfs-nginx-module的目录。配置完成后,./configure 配置及依赖检查,make编译,结束后make install安装。安装完成后,可以在/usr/local目录下看到nginx文件夹,至此安装完成

3、修改nginx及关联模块fastdfs-nginx-module的配置。
先改关联模块的配置。将关联模块的配置文件复制到/etc/fdfs目录下:cp /home/tar/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/,然后vim /etc/fdfs/mod_fastdfs.conf打开该配置文件,修改5处配置:

  • 修改base_path配置值为/fastdfs/tmp,该配置用来存储日志
  • 修改tracker_server配置值为192.168.1.70:22122,读者需根据自己情况修改
  • 修改group_name配置值为imooc,该配置要与storage服务配置中的相同
  • 修改url_hava_group_name配置值为true,该配置用于启用上面的group_name配置
  • 修改store_path0配置值为/fastdfs/storage,该配置用于指定文件存放路径

修改完成,:wq保存退出,mkdir /fastdfs/tmp创建上面base_path对应的目录。

接下来改nginx的配置。cd /usr/local/nginx/confll看到文件如下:
在这里插入图片描述
其中,nginx.conf便是要找的配置文件,vim nginx.conf打开配置,增加配置如下:

   server{
         listen 88;
         server_name 192.168.1.70;
         location /imooc/M00 {
        	  ngx_fastdfs_module;
         }
    }

配置增加完成后,:wq保存退出。
cd /usr/local/nginx/sbin./nginx -t测试下配置是否正确。我这里报了错误,如下图:
在这里插入图片描述
根据错误内容,可以看出,原因是/var/temp/nginx/client目录不存在,那么mkdir /var/temp/nginx/client -p创建该目录,再次./nginx -t,测试结果显示ok,如下图:
在这里插入图片描述
然后./nginx 启动即可。
启动后浏览器输入地址http://192.168.1.70,却报无法访问此网站,那么很明显是网络上有问题。/etc/init.d/iptables status看到防火墙是开的,如下图:
在这里插入图片描述
/etc/init.d/iptables stop关闭防火墙,然后重新在浏览器输入http://192.168.1.70,可以访问到nginx的欢迎页。找到上面测试图片的路径http://192.168.1.70:88/imooc/M00/00/00/wKgBRltFNp-AdqPJAAQEWfwWqaQ002.png,尝试访问该测试图片,发现也是可以正常访问,至此,FastDFS服务已经部署完工。道阻且长,善哉善哉。
在这里插入图片描述

二、springboot项目中集成FastDFS客户端

1、要引入的客户端的源码及使用官方教程见:https://github.com/tobato/FastDFS_Client
在这里插入图片描述
2、考虑到人都是懒的,我就将里面的内容重新搬出来讲一下。

  • 引入pom依赖

     <dependency>
         <groupId>com.github.tobato</groupId>
         <artifactId>fastdfs-client</artifactId>
         <version>1.26.2</version>
     </dependency>
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-test</artifactId>
     </dependency>
    
  • 添加application配置

     fdfs.soTimeout=1501
     fdfs.connectTimeout=601
     #缩略图宽度和高度
     fdfs.thumbImage.width=80
     fdfs.thumbImage.height=80
     #tracker服务器地址
     fdfs.trackerList[0]=192.168.1.70:22122
    
  • 代码中使配置生效
    在SpringBoot项目/src/[com.xxx.主目录]/conf当中创建FastdfsImporter.java配置文件

     @Configuration
     @Import(FdfsClientConfig.class)
     // 解决jmx重复注册bean的问题
     @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
     public class FastdfsImporter {
       // 导入依赖组件
     }
    
  • 上传样例代码UploadController.java

     @Configuration
     /**
      * @Description: 上传用户头像
      */
     @PostMapping("/uploadTest")
     public IMoocJSONResult uploadTest() throws Exception {
     
     	// 准备好图片test.png,放在C盘
     	String userFacePath = "C:\\test.png";
     	// 上传文件到fastdfs
     	MultipartFile faceFile = FileUtils.fileToMultipart(userFacePath);
     	String url = fastDFSClient.uploadBase64(faceFile);
     	System.out.println(url);
     	// 获取缩略图的url
     	String thump = "_80x80.";
     	String arr[] = url.split("\\.");
     	String thumpImgUrl = arr[0] + thump + arr[1];
     	System.out.println(thumpImgUrl);
     
     	return IMoocJSONResult.ok(thumpImgUrl);
     }
    
  • 样例代码打包下载
    下载链接:https://download.csdn.net/download/tuguai7887/11442072 (和上面第2章的链接是同一个,不必重复下载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值