小伙伴们,你们好呀!我是老寇!

目录

一.下载fastdfs

二.fastdfs介绍

三.安装过程

四.集成Springboot

一.下载fastdfs

fastdfs安装包:https://pan.baidu.com/s/1swrV9ffJnmz4S0mfkuBbIw 
提取码:1111

二.fastdfs介绍

  • fastdfs是用c语言编写的开源分布式文件系统,fastdf基于负载均衡、线性扩容等机制,注重高可用,高性能等特性,使用fastdfs很容易搭建已一套高性能多节点的文件文件系统,提供文件上传、下载等服务
  • fastdfs架构包括tracker server 和 stroage server 客户端通过tracker server进行文件上传、下载。最终由storage server完成文件上传和下载

三.安装过程

1.安装 gcc <用于编译>

# fastdfs由c语言编写,安装fastdfs之前需要安装gcc来编译
yum install -y gcc gcc-c++

2.安装libevent <用于运行>

# 安装 libevent,fastdfs依赖libevent库
yum install libevent

3.使用finalshell将安装包放在/opt

4.安装libfastcommon

# libcommon包含fastdfs运行的一些基础库
# 解压文件
# 移动文件到/usr/local
tar -zxvf libfastcommon.tar.gz

mv  libfastcommon-1.0.7 /usr/local

# 编译并安装

cd /usr/local/libfastcommon-1.0.7

./make.sh && ./make.sh install

#libcommon安装好会在/usr/lib64目录下生成 libfastcommon.so文件
# 切换到/usr/lib64
cd /usr/lib64

# 查看 > 看到libfastcommon.so 即可
ls | grep libfastcommon.so

# 拷贝至/usr/lib
cp libfastcommon.so /usr/lib

5.安装tracker

cd /opt
tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local

cd /usr/local/FastDFS

# 编译安装
./make.sh && ./make.sh install

# 拷贝
cp /usr/local/FastDFS/conf/** /etc/fdfs/

6.配置tracker

cd /etc/fdfs

# 拷贝
cp tracker.conf.sample track.conf

vi tracker.conf

修改base_path路径

base_path=/home/yuqing/fastdfs => base_path=/home/fastdfs
http.server_port=8080 => http.server_port=80

# 创建目录
mkdir -p /home/fastdfs

# 启动 tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

7.配置storage

cd /etc/fdfs

# 拷贝
cp storage.conf.sample storage.conf

vi storage.conf

# 修改
base_path=/home/yuqing/fastdfs => base_path=/home/fastdfs
store_path0=/home/yuqing/fastdfs => store_path0=/home/fdfs_storage
http.server_port=8888 => http.server_port=88
                     //配置tracker服务器:IP
                     => tracker_server=XXX.XXX.XXX.XX:22122

mkdir -p /home/fdfs_storage

# 启动 storage => 如果是云服务器需要开端口22122
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

8.整个nginx

# 每个tracker安装nginx,主要目的就是负载均衡及高可用,一个tracker对应多个storage,通过nginx对storage负载均衡
cd /opt
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local

# 进入/usr/local/fastdfs-nginx-module/src
# 修改config 将所有 /usr/local/路径都改为/usr

# 拷贝
cp mod_fastdfs.conf /etc/fdfs/

//修改 /etc/fdfs/mod_fastdfs.conf
vi /etc/fdfs/mod_fastdfs.conf

base_path=/tmp => base_path=/home/fastdfs
// 修改tracker_server为云服务器IP
tracker_server=XX.XX.XX.XX:22122
url_have_group_name = false => url_have_group_name = true
store_path0=/home/yuqing/fastdfs => store_path0=/home/fdfs_storage

# 拷贝
cp /usr/lib64/libfdfsclient.so /usr/lib/

# 创建nginx/client目录
mkdir -p /var/temp/nginx/client

9.安装nginx

cd /opt

tar -zxvf nginx-1.12.0.tar.gz -C /usr/local

# 安装nginx依赖库
yum install pcre && yum install pcre-devel && yum install zlib && yum install zlib-devel && yum install openssl && yum install openssl-devel

cd /usr/local/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=/usr/local/fastdfs-nginx-module/src

# 编译安装
make && make install

 报错解决方式 =>  objs/Makefile 将gcc参数中的-Werror去掉 再重新make

cd /usr/local/FastDFS/conf
cp http.conf mime.types /etc/fdfs/

# 创建logs目录
mkdir /usr/local/nginx/logs

cd /usr/local/nginx/conf/

vi nginx.conf

// 修改pid
pid        /usr/local/nginx/logs/nginx.pid;

修改server配置
location /group1/M00/ {
     root   /home/fdfs_storage/data;
     ngx_fastdfs_module;
}

# 启动nignx

cd /usr/local/nginx/sbin/

./nginx

# 查看nginx进程
ps -ef|grep nginx

注意:云服务器需要开相应的端口

# 关闭防火墙

systemctl stop firewalld.service

# 开机禁止启动防火墙
systemctl enabled firewalld.service

# 查看防火墙状态
firewall-cmd --status

# 临时关闭防火墙
service iptables stop

# 永久关闭防火墙
chkconfig iptables off

四.集成Springboot

1.pom.xml

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

2.核心代码

/**
 * FastDFS
 * @author  Kou Shenhai
 */
@Slf4j
public class FastDFSCloudStorageService {

    private static DefaultGenerateStorageClient defaultGenerateStorageClient;

    static {
        defaultGenerateStorageClient = (DefaultGenerateStorageClient) SpringContextUtil.getBean("defaultGenerateStorageClient");
    }
    
    public String upload(InputStream inputStream, String fileName,Long size) throws Exception {
        StorePath storePath;
        try {
            storePath = defaultGenerateStorageClient.uploadFile("group1", inputStream, inputStream.available(), FilenameUtils.getExtension(fileName));
        } catch (Exception ex) {
            log.error("错误信息:{}", ex.getMessage());
            throw new CustomException(ex.getMessage());
        }
        return "http://x.x.x.x" + "/" + "group1" + "/" + storePath.getPath();
    }

}

3.yml配置

fdfs:
  connect-timeout: 6000
  so-timeout: 600000
  tracker-list: x.x.x.x:22122

4.地址 => 上传图片 => http://x.x.x.x/group1/data/mm/xx.jpg

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐