(FastDFS安装防坑必看)CentOS7安装分布式文件系统FastDFS教程,并使用SpringBoot项目进行测试

前言

FastDFS是一款轻量级的分布式文件系统,本人在刚接触FastDFS安装的时候,踩了不少的坑。为了给自己以后安装留份记录,也为了帮助大家少走弯路,写下这篇博客供大家参考;

如果在你安装过程中出现的问题,欢迎大家在评论区交流;

安装

一、安装依赖

1、安装c语言编译环境和一些工具

yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget  

2、安装FastDFS需要依赖的libfastcommon包

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz //下载安装包
tar -zxvf V1.0.38.tar.gz //解压
cd libfastcommon-1.0.38 //进入安装目录
./make.sh //编译
./make.sh install //安装

二、安装FastDFS

1、安装FastDFS并查看是否安装成功

wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz //下载安装包
tar -zxvf V5.11.tar.gz //解压
cd fastdfs-5.11 //进入安装目录
./make.sh //编译
./make.sh install //安装
ls -la /usr/bin/fdfs* //查看是否安装成功,安装成功则会显示下图中内容

在这里插入图片描述

三、配置Tracker和Storage

1、进入/etc/fdfs目录,有三个.sample后缀的文件(自动生成的fdfs模板配置文件),通过cp命令拷贝其中两个文件(因为本机不做客户端,所以client配置文件无需服务),并删除.sample后缀作为正式配置文件。

cd /etc/fdfs //进入目录
cp tracker.conf.sample tracker.conf 
cp storage.conf.sample storage.conf

2、创建文件系统存储路径

mkdir -p /usr/local/fastdfs/tracker //tracker存储data和log的目录
mkdir -p /usr/local/fastdfs/storage //storage存储data和log的目录

3、编辑tracker.conf,设置参数

vim /etc/fdfs/tracker.conf
//设置以下参数
base_path=/usr/local/fastdfs/tracker  //指定tracker存储data和log的跟路径,必须提前创建好
port=22122 //tracker默认
http.server_port=80 //http端口,需要和nginx相同

3、启动tracker服务(支持systemctl start|stop|restart 服务名)

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start //启动服务

4、查看端口情况,如下图

netstat -apn|grep fdfs

在这里插入图片描述

四、配置Storage

1、编辑storage.conf,设置参数

vim /etc/fdfs/storage.conf 
//设置以下参数
base_path=/usr/local/fastdfs/storage   //storage存储data和log的跟路径,必须提前创建好
port=23000  //storge默认23000,同一个组的storage端口号必须一致
group_name=group1  //默认组名,根据实际情况修改
store_path_count=1  //存储路径个数,需要和store_path个数匹配
store_path0=/usr/local/fastdfs/storage //如果为空,则使用base_path
tracker_server=你的服务器ip地址:22122 //配置该storage监听的tracker的ip和port

2、启动storage服务(支持systemctl start|stop|restart 服务名)

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

3、查看日志和查看端口

vim /usr/local/fastdfs/tracker/logs/trackerd.log //发现已经开始选举,并且作为唯一的一个tracker,被选举为leader

在这里插入图片描述

netstat -apn|grep fdfs //查看端口

在这里插入图片描述

五、安装fastdfs-nginx-module和nginx

为什么需要用Nginx访问?

FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。

假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。

而fastdfs-nginx-module可以重定向文件连接到文件上传时的源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误

安装fastdfs-nginx-module

1、新建安装目录并下载安装包

mkdir -p /usr/local/myservice //创建下载和安装目录
cd /usr/local/myservice //进入目录
wget http://nginx.org/download/nginx-1.15.2.tar.gz //下载nginx
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz //下载中间模块

2、解压fastdfs-nginx-module并编辑配置文件

tar -xvf V1.20.tar.gz
cd fastdfs-nginx-module-1.20/src/
vim config //编辑配置文件
//修改以下两项:因为默认配置的路径是错误的,所以我们需要更改,不更改的话,安装nginx会报错
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

3、复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改

cp /usr/local/myservice/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs
vim /etc/fdfs/mod_fastdfs.conf //编辑
//修改以下配置
tracker_server=你的服务器ip地址:22122 //tracker的地址
url_have_group_name=true //url是否包含group名称
storage_server_port=23000 //需要和storage配置的相同
store_path_count=1  //存储路径个数,需要和store_path个数匹配
store_path0=/usr/local/fastdfs/storage //文件存储的位置,与storage.conf中配置相同

4、复制 FastDFS 的部分配置文件到/etc/fdfs 目录

cd 你的fastdfs的安装路径/FastDFS/conf/
cp http.conf mime.types /etc/fdfs/

安装nginx

1、安装

yum -y install libpcre3 libpcre3-dev openssl libssl-dev libperl-dev //安装依赖
cd /usr/local/myservice/ //我们之前把nginx的tar包下载在这里
tar -zxvf nginx-1.15.2.tar.gz
cd nginx-1.10.1 //进入nginx安装目录
//增加配置,并加载fastdfs-nginx-module模块:
//prefix路径存放nginx配置文件路径,sbin-path指定nginx安装目录,addmodule指定fastdfs-nginx-module位置
./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/myservice/fastdfs-nginx-module-1.20/src
//编译和安装
make
make install

2、配置

vim  /opt/nginx/conf/nginx.conf //编辑nginx配置文件
//将侦听80端口和域名为localhost的server修改成以下内容
        listen       80;
        server_name  你发请求的域名;

    	//监听域名中带有group的,交给FastDFS模块处理,这个location放在 location /{ **}之前
        location ~/group([0-9])/ {
            ngx_fastdfs_module;
        }

3、启动nginx

cd /usr/local/myservice/nginx-1.10.1
nginx	//启动nginx

nginx -s stop	//停止nginx

nginx -s reload	//重新载入配置文件

4、查看nginx是否启动,启动成功会有一个主进程和一个工作进程

ps -ef | grep nginx

在这里插入图片描述
至此服务器端的部署全部完成

六、SpringBoot项目使用客户端测试

一、引入依赖

        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.26.2</version>
        </dependency>

二、application.yml中添加配置

fdfs:
  thumb-image:
    height: 60
    width: 60
  tracker-list:
    - 你的服务器ip地址:22122 #fastdfs的tracker服务地址,是一个列表可以配置多个
  so-timeout: 1501 #读取时间
  connect-timeout: 1601 #连接超时时间

三、添加配置类

@Configuration
@Import(FdfsClientConfig.class)
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public class FastClientImporter {
}

四、使用,效果如下图

//注入操作fastdfs服务器对象
@Autowired
private FastFileStorageClient storageClient;
//读取文件==自行创建和读取
//获取文件后缀名
String type = StringUtils.substringAfterLast(filename, ".");
//上传文件需要四个参数
//第一个参数:文件的字节流
//第二个参数:文件的大小
//第三个参数:文件的类型
//第四个参数:
StorePath storePath = this.storageClient.uploadFile(file.getInputStream(), file.getSize(), type, null);
//上传后通过getFullPath获取文件路径
//  group1/M00/00/00/rBEABF_Al8uAZi6IAABjnEn4Es0791.jpg是一串这个玩意
storePath.getFullPath();  
//在浏览器中通过下面地址就能访问
"你的服务器ip或备案好的域名访问/" + group1/M00/00/00/rBEABF_Al8uAZi6IAABjnEn4Es0791.jpg
          

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值