安装FastDFS

本文详细介绍了如何在Linux环境下安装FastDFS,包括安装c语言环境、FastDFS、fastdfs-nginx-module插件以及Nginx,并配置动静分离,最后进行测试。FastDFS由Tracker Server和Storage Server组成,负责文件的上传和下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.FastDFS简介

1、FastDFS两个主要的角色:Tracker Server 和 Storage Server 。

​ Tracker:跟踪服务器,管理集群,tracker也可以实现集群。每个tracker节点地位平等。收集Storage集群的状态。

​ Storage:存储服务器,实际保存文件,分为多个组,每个组之间保存的文件是不同的。每个组内部可以有多个成员,组成员内部 保存的内容是一样的,组成员的地位是一致的,没有主从的概念。

2、上传和下载流程

在这里插入图片描述

  1. Client通过Tracker server查找可用的Storage server。

  2. Tracker server向Client返回一台可用的Storage server的IP地址和端口号。

  3. Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。

  4. 上传完成,Storage server返回Client一个文件ID(卷、目录),文件上传结束。

在这里插入图片描述

  1. Client通过Tracker server查找要下载文件所在的的Storage server。
  2. Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号。
  3. Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件。
  4. 下载文件成功。

二、安装FastDFS

在这里插入图片描述
具体资源可以自行寻找,需要以上几个资源文件

1、安装c语言环境

​ yum -y install gcc

2、安装c函数库

​ unzip libfastcommon-master.zip
​ cd libfastcommon-master
​ ./make.sh
​ ./make.sh install

3、安装FastDFS

​ tar -zxvf FastDFS_v5.08.tar.gz
​ cd FastDFS
​ ./make.sh
​ ./make.sh install

4、配置并启动tracker服务

​ 配置:
​ cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
​ vim /etc/fdfs/tracker.conf:
​ base_path=/powershop/tracker
​ mkdir -p /powershop/tracker
​ 启动:
​ service fdfs_trackerd start
​ chkconfig fdfs_trackerd on

5、配置并启动storage服务

​ 配置:
​ cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
​ vim /etc/fdfs/storage.conf:
​ base_path=/powershop/storage
​ store_path0=/powershop/storage
​ tracker_server=192.168.116.133:22122
​ mkdir -p /powershop/storage
​ 启动:
​ service fdfs_storaged start
​ chkconfig fdfs_storaged on

三、安装fastdfs-nginx-module插件

1、解压

​ tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

2、修改config

​ cd fastdfs-nginx-module/src/
​ vim config:
​ :%s+/usr/local/+/usr/+g

3、配置fastdfs-nginx-module与FastDFS关联

​ cp /usr/upload/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
​ vim /etc/fdfs/mod_fastdfs.conf:
​ connect_timeout=10
​ tracker_server=192.168.204.158:22122
​ url_have_group_name=true
​ store_path0=/powershop/storage
​ cd /usr/upload/FastDFS/conf/
​ cp http.conf mime.types /etc/fdfs/

四、安装nginx

1、安装nginx

​ yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
​ tar -zxvf nginx-1.10.0.tar.gz
​ cd nginx-1.10.0
​ ./configure --prefix=/usr/local/nginx --add-module=/usr/upload/fastdfs-nginx-module/src
​ make && make install

2、配置动静分离

​ vim /usr/local/nginx/conf/nginx.conf:
​ server{
​ listen 80;
​ server_name localhost;

​ location ~/group([0-9])/{
​ ngx_fastdfs_module;
​ }
​ }

3、配置nginx开机自启动

​ vim /lib/systemd/system/nginx.service:

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl daemon-reload #重新加载服务配置
systemctl start nginx.service #启动服务

[Install]
WantedBy=multi-user.target

systemctl daemon-reload #重新加载服务配置
systemctl start nginx.service #启动服务
systemctl enable nginx.service #设置为开机启动

五、测试

1.引入依赖

在父工程中,添加管理依赖,版本为:

<fastDFS-client-version>1.26.2</fastDFS-client-version>

<!--fastdfs-->
<dependency>
    <groupId>com.github.tobato</groupId>
    <artifactId>fastdfs-client</artifactId>
    <version>${fastDFS-client-version}</version>
</dependency>

因此,这里我们直接在power_shop_item工程的pom.xml中引入坐标即可:

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

2.引入配置类

纯java配置:

@Configuration
//只需要一行注解 @Import(FdfsClientConfig.class)就可以拥有带有连接池的FastDFS Java客户端了
@Import(FdfsClientConfig.class)
public class FastClientImporter {
    
}

3.编写FastDFS属性

在application.yml配置文件中追加如下内容:

fdfs:
  so-timeout: 1501 # 超时时间
  connect-timeout: 601 # 连接超时时间
  thumb-image: # 缩略图
    width: 60
    height: 60
  tracker-list: # tracker地址:你的虚拟机服务器地址+端口(默认是22122)
    - 192.168.204.130:22122

4.配置hosts

将来通过域名:image.powershop.com这个域名访问fastDFS服务器上的图片资源。所以,需要代理到虚拟机地址:http://image.powershop.com/group1/M00/00/00/wKjMhV7Du3WATIbZAABIvlHWjnY123.png

  • 配置hosts文件,使image.powershop.com可以访问fastDFS服务器
#测试环境
192.168.204.158 image.powershop.com

5.测试

创建测试类:

import com.github.tobato.fastdfs.domain.StorePath;
import com.github.tobato.fastdfs.domain.ThumbImageConfig;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={PowerShopItemApp.class})
public class FastDFSTest {

    @Autowired
    private FastFileStorageClient storageClient;

    @Autowired
    private ThumbImageConfig thumbImageConfig;

    @Test
    public void testUpload() throws FileNotFoundException {
        // 要上传的文件
        File file = new File("D:/images/1.jpg");
        // 上传并保存图片,参数:1-上传的文件流 2-文件的大小 3-文件的后缀 4-可以不管他
        StorePath storePath = this.storageClient.uploadFile(
                new FileInputStream(file), file.length(), "jpg", null);
        // 带分组的路径
        System.out.println(storePath.getFullPath());
        // 不带分组的路径
        System.out.println(storePath.getPath());
    }

    @Test
    public void testUploadAndCreateThumb() throws FileNotFoundException {
        File file = new File("D:/images/1.jpg");
        // 上传并且生成缩略图
        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.getFullPath());
        System.out.println(path);
    }
}

结果:

group1:卷名

/M00:store_path0 目录

00/00:两层256个文件夹

group1/M00/00/00/wKg4ZVsWl5eAdLNZAABAhya2V0c424.jpg
M00/00/00/wKg4ZVsWl5eAdLNZAABAhya2V0c424.jpg
group1/M00/00/00/wKjpgV6XBT2Abi8rAACaMWefTPs531.png
M00/00/00/wKjpgV6XBT2Abi8rAACaMWefTPs531.png
group1/M00/00/00/wKjpgV6XBT2Abi8rAACaMWefTPs531_60x60.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值