FastDFS简介
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
安装前的说明
FastDFS是C语言开发,需要gcc依赖环境(yum install gcc-c++
),建议在Linux系统上运行,本教程使用CentOS 7作为安装环境,FastDFS_v5.05版本,如果按照此教程安装更高的版本可能会出现问题,敬请谅解!
安装工具包与依赖库
- 安装libevent工具包
yum -y install libevent
- 上传并解压libfastcommon依赖库(此处使用的是V1.0.7版本)
tar -xvf libfastcommonV1.0.7.tar.gz
- 进入解压之后含有make.sh的目录里
cd libfastcommom-1.0.7
- 编译并安装
此时系统会在/usr目录下创建lib64目录./make.sh ./make.sh install
- 进入/usr/lib64目录下,把/usr/lib64/libfastcommon.so文件向/usr/lib/下复制一份
cd /usr/lib64 cp libfastcommon.so ../lib
安装tracker(跟踪器)服务
- 上传并解压缩FastDFS_v5.05.tar.gz
tar -xvf FastDFS_v5.05.tar.gz
- 进入到解压后的目录里,编译并安装
安装后在/usr/bin/目录下有以fdfs开头的文件都是编译出来的,这些文件是可执行文件。cd FastDFS ./make.sh ./make.sh install
- 配置文件都放到/etc/fdfs文件夹,现在把FastDFS/conf目录下的所有的配置文件都复制到/etc/fdfs下,先进入这个目录(我将其解压到了/tmp下,所以命令如下)再复制
cd /tmp/FastDFS/conf cp * /etc/fdfs
- 配置tracker服务,先创建文件夹
mkdir -p /home/fastdfs/tracker
- 修改/etc/fdfs/tracker.conf文件:找到basepath,修改后内容如下
basepath=/home/fastdfs/tracker
- 启动tracker服务:
重启使用命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
以下命令检查tracker服务是否启动:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
ps aux|grep tracker
安装storage(存储节点)服务
- 在同一服务器下安装,直接配置storage服务即可。先创建文件夹:
mkdir -p /home/fastdfs/storage
- 修改/etc/fdfs/storage.conf文件,找到以下各属性,修改后内容如下(注意本机IP地址为内网IP):
base_path=/home/fastdfs/storage store_path0=/home/fastdfs/storage tracker_server=本机IP地址:22122
- 启动storage服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
重启使用命令:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
以下命令检查storage服务是否启动:
ps aux|grep storage
测试服务
- 创建目录
mkdir -p /home/fastdfs/client
- 修改配置文件/etc/fdfs/client.conf,对应属性修改后如下
basepath=/home/fastdfs/client tracker_server=本机IP:22122
- 测试命令:
这时在终端会打印出一个地址,根据该地址可在/home/fastdfs/storage/data/00/00目录下找到上传的图片,在浏览器访问给出的地址会发现图片并不能显示,这时需要搭建nginx提供http服务。/usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg
搭建nginx提供http服务
- 上传并解压fastdfs-nginx-module插件
tar -xvf fastdfs-nginx-module.tar.gz
- 修改/tmp/fastdfs-nginx-module/src/config文件,把其中的/local去掉(共三处)。
- 进入到nginx解压后的目录(之前以安装过nginx,可参考我的另一篇文章),对nginx重新config
./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 --with-http_stub_status_module --with-http_ssl_module --add-module=/tmp/fastdfs-nginx-module/src
- 验证是否成功,依次执行:
会看到client,fastcgi,proxy,scgi,uwsgi五个文件夹cd /var/temp/nginx ls
- 执行如下命令
看该文件夹下是否有libfastcommon.so和libfdfsclient.so,有的话执行:cd /usr/lib64 ls
cp libfdfsclient.so ../lib
- 进入nginx解压目录里执行:
make make install
- 把/tmp/fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下
修改/etc/fdfs/ mod_fastdfs.conf,相应属性修改后如下:cp /tmp/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
tracker_server=本机IP:22122 url_have_group_name=true store_path0=/home/fastdfs/storage
- 在/usr/local/nginx/conf/nginx.conf的配置文件中添加一个server:
server { listen 80; server_name 本机IP; location /group1/M00/{ ngx_fastdfs_module; } }
- 进入nginx安装目录中的sbin目录,重新启动nginx:
然后访问地址,显示图片证明搭建成功。./nginx -s reload