环境: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
#添加如下配置
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"
解决如下:
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))'
图片访问测试
图片地址类似这种,每次上传完毕,会返回fileid,自己保存
http://172.28.72.81:8888/group1/M00/00/00/rBxIUVwSVT-ABrjpAACJf1xkvK0026.jpg
FASTDFS连接池 pool
fastdfspool连接池的实现,大家可以参照我的github
https://github.com/cwtree/fastdfspool.git
亲测可用