环境:centos 7.X

预编译安装组件

yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev libevent-devel  git -y

以上安装完,后续的各个组件都可以成功编译安装了

libfastcommon安装

 

git clone https://github.com/cwtree/libfastcommon.git --depth 1

cd libfastcommon/

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

 

这里我是把源码都fork到我的github仓库里了,以后都直接clone我自己的仓库,为了屏蔽源地址更新带来的风险。

fastdfs安装

git clone https://github.com/cwtree/fastdfs.git --depth=1

 

在fastdfs目录下./make.sh && ./make.sh install

安装完成之后,注意以下两个目录:

fastDFS命令目录:/usr/bin

fastDFS配置文件目录:/etc/fdfs

将官网的配置文件夹下的所有配置拷贝到/etc/fdfs目录下

 

https://github.com/cwtree/fastdfs/tree/master/conf

 

tracker配置启动

 

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

启停

/etc/init.d/fdfs_trackerd start #启动tracker服务
/etc/init.d/fdfs_trackerd restart #重启动tracker服务
/etc/init.d/fdfs_trackerd stop #停止tracker服务
chkconfig fdfs_trackerd on #自启动tracker服务

 

storage配置启动

 

vim /etc/fdfs/storage.conf #需要修改的内容如下
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/home/dfs # 数据和日志文件存储根目录
store_path0=/home/dfs # 第一个存储目录
tracker_server=192.168.52.2:22122 # 服务器1
tracker_server=192.168.52.3:22122 # 服务器2
tracker_server=192.168.52.4:22122 # 服务器3
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)

 

检测集群信息

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf # 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息

 

启停

/etc/init.d/fdfs_storaged start #启动storage服务
/etc/init.d/fdfs_storaged restart #重动storage服务
/etc/init.d/fdfs_storaged stop #停止动storage服务
chkconfig fdfs_storaged on #自启动storage服务

 

安装fastdfs-nginx-module

 

git clone https://github.com/cwtree/fastdfs-nginx-module.git --depth 1

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs

cp /xxx/mod_fastdfs.conf /etc/fdfs/

 

编译安装nginx

官网下载安装包

http://nginx.org/en/download.html

将上面的fastdfs-nginx-module模块编译到nginx里

./configure --add-module=/home/fastdfs/fastdfs-nginx-module/src/ --prefix=/home/nginx/install && make && make install

修改fastdfs-nginx-module的配置文件

vim /etc/fdfs/mod_fastdfs.conf #需要修改的内容如下
tracker_server=192.168.52.2:22122 # 服务器1
tracker_server=192.168.52.3:22122 # 服务器2
tracker_server=192.168.52.4:22122 # 服务器3
url_have_group_name=true
store_path0=/home/dfs

nginx配置

#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置

FAST API 连接MYSQL_fastdfs

 

nginx启停

启动命令,指定自定义配置文件启动

/usr/local/nginx/sbin/nginx -c xxx.conf
/usr/local/nginx/sbin/nginx -t -c xxx.conf检查配置文件语法正确性
 
/usr/local/nginx/sbin/nginx #启动
nginx /usr/local/nginx/sbin/nginx -s reload #重启
nginx /usr/local/nginx/sbin/nginx -s stop #停止nginx

将fastdfs-nginx模块编译安装nginx里可能会遇到问题

/root/fastdfs-nginx-module-master/src/common.c:1245: error: 'FDFSHTTPParams' has no member named 'support_multi_range'
 root/fastdfs-nginx-module/src//common.c:21:25: fatal error: fdfs_define.h: No such file or directory
/usr/src/fastdfs-nginx-module/src/common.c:21:25:致命错误:fdfs_define.h:没有那个文件或目录
              #include "fdfs_define.h"

解决如下:

FAST API 连接MYSQL_FAST API 连接MYSQL_02

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
 
sed -i 's#(pContext->range_count > 1 && !g_http_params.support_multi_range))#(pContext->range_count > 1))#g' /home/fastdfs/fastdfs-nginx-module/src/common.c | grep '(pContext->range_count > 1))'

 

图片访问测试

FAST API 连接MYSQL_nginx_03

图片地址类似这种,每次上传完毕,会返回fileid,自己保存
http://172.28.72.81:8888/group1/M00/00/00/rBxIUVwSVT-ABrjpAACJf1xkvK0026.jpg

FAST API 连接MYSQL_FAST API 连接MYSQL_04

 

FASTDFS连接池 pool

fastdfspool连接池的实现,大家可以参照我的github

https://github.com/cwtree/fastdfspool.git

亲测可用