如何在服务器上手动部署FastDFS


FastDFS架构包括 TrackerServer和StorageServer。客户端请求Tracker Server进行文件上传、下载,通过TrackerServer调度最终由StorageServer完成文件上传和下载。

下载地址

官方网站:https://github.com/happyfish100

配置文档:https://github.com/happyfish100/fastdfs/wiki

参考资料:https://www.oschina.net/question/tag/fastdfs

Java客户端:https://github.com/happyfish100/fastdfs-client-java

通信原理

文件上传

环境上的存储资源一般都会有多个分组(分卷),分卷上有多个节点,确保部分节点失效的情况下仍然能够提供服务。

文件下载

安装准备

操作系统: centos 8.0
安装包:

libfastcommon-1.0.42.tar.gz	
fastdfs-6.04.tar.gz	
nginx-1.16.1.tar.gz	
fastdfs-nginx-module-1.22.tar.gz

部署FastDFS服务

1.安装libfastcommon

yum install -y gcc gcc-c++;
yum install -y libevent; #安装c++环境

cd /home/software/FastDFS; #进入jar包目录解压文件
tar -zxvf libfastcommon-1.0.42.tar.gz;
cd libfastcommon-1.0.42;
./make.sh && ./make.sh install; #编译安装

2.安装fastdfs

cd /home/software/FastDFS; #进入jar包目录解压文件
tar -zxvf fastdfs-6.04.tar.gz;
cd fastdfs-6.04;
./make.sh && ./make.sh install; #编译安装

cp /home/software/FastDFS/fastdfs-6.04/conf/* /etc/fdfs; #将配置文件全部拷贝至fdfs目录下

3.配置tracker服务

mkdir -p /usr/local/fastdfs/tracker;
vim /etc/fdfs/tracker.conf;

#需修改的内容如下
port=22122  # tracker服务器端口(默认22122,一般不修改)
base_path=/usr/local/fastdfs/tracker  # 存储日志和数据的根目录

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

4.配置storage服务

mkdir -p /usr/local/fastdfs/storage;
vim /etc/fdfs/storage.conf;

#需要修改的内容如下
group_name=huawei #组名
port=23000  # storage服务端口(默认23000,一般不修改)
base_path=/usr/local/fastdfs/storage  # 数据和日志文件存储根目录
store_path0=/usr/local/fastdfs/storage  # 第一个存储目录
tracker_server=172.16.110.4:22122  # tracker服务器IP和端口
http.server_port=8888  # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf; #启动storage服务

注意tracker服务要先于storage服务启动

5.在storage服务存在的节点上配置client服务

mkdir -p /usr/local/fastdfs/client;
vim /etc/fdfs/client.conf;

#需要修改的内容如下
base_path=/usr/local/fastdfs/client
tracker_server=172.116.1.4:22122    #tracker服务器IP和端口
#保存后测试上传文件功能,返回ID表示成功 如:M00/00/00/***.png
fdfs_upload_file /etc/fdfs/client.conf /home/cat.png

6.在storage服务存在的节点上配置fastdfs-nginx-module

cd /home/software;
tar -zxvf  fastdfs-nginx-module-1.22.tar.gz;
cd fastdfs-nginx-module-1.22/src;

vim /home/software/fastdfs-nginx-module-1.22/src/config; 
#需要修改的内容如下
ngx_module_incs="/usr/include"
CORE_INCS="$CORE_INCS /usr/include"

cp mod_fastdfs.conf /etc/fdfs/; #解压并拷贝配置文件至统一目录下
mkdir -p /usr/local/fastdfs/temp
vim /etc/fdfs/mod_fastdfs.conf;

#需要修改的内容如下
tracker_server=172.116.1.4:22122  #tracker服务器
group_name=huawei
url_have_group_name=true
store_path0=/usr/local/fastdfs/storage
base_path=/usr/local/fastdfs/temp

7.配置nginx服务

yum -y install pcre pcre-devel;
yum -y install zlib zlib-devel;
yum -y install openssl openssl-devel; #配置环境依赖

tar -zxvf /home/software/nginx-1.16.1.tar.gz;
cd /home/software/nginx-1.16.1;
mkdir -p /var/temp/nginx;
  
./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/software/FastDFS/fastdfs-nginx-module-1.22/src; #安装nginx服务

make && make install; #编译nginx


#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置
server {
    listen       8888;    ## 该端口为storage.conf中的http.server_port相同
    server_name  localhost;
    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
    }
}

/usr/local/nginx/sbin/nginx; #启动nginx
/usr/local/nginx/sbin/nginx -s reload #重启nginx
/usr/local/nginx/sbin/nginx -s stop #停止nginx

FastDFS整合到项目中

添加依赖



  com.github.tobato
  fastdfs-client

Application.yml中添加FastDFS配置信息以及文件大小限制

spring:
  servlet:
    multipart:
      max-file-size: 51200  # 限制文件以及请求大小为500kb
      max-request-size: 51200

############################################################
#
# fastdfs配置信息
#
############################################################
fdfs:
  connect-timeout: 30
  so-timeout: 30
  tracker-list: 172.116.1.4:22122

相关