FastDFS和Nginx实现分布式文件服务器
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
1.下载
FastDFS下载地址:https://sourceforge.net/projects/fastdfs/
FastDFS的github下载地址:https://github.com/happyfish100/fastdfs
libfastcommon的下载地址:https://sourceforge.net/projects/libfastcommon/
libfastcommon的github下载地址:https://github.com/happyfish100/libfastcommon
FastDFS-nginx-module的下载地址:https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/
FastDFS-nginx-module的github下载地址:https://github.com/happyfish100/fastdfs-nginx-module
Nginx下载地址:http://nginx.org/en/download.html
Nginx的github下载地址:https://github.com/nginx/nginx
2.架构图
3.FastDFS-tracker安装
3.1 FastDFS安装环境
FastDFS是C语言开发,建议在linux上运行。
安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境
yum install gcc-c++
3.2 安装libevent
FastDFS依赖libevent库
yum -y install libevent
3.3 安装libfastcommon
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。
上传到linux,并解压
解压后的目录
进入解压目录,进行编译,安装
编译命令
[root@root libfastcommon-1.0.7]# ./make.sh
安装命令
[root@root libfastcommon-1.0.7]# ./make.sh install
libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。
[root@root lib64]# cp libfastcommon.so /usr/lib
3.4 tracker编译安装
上传FastDFS.tar.gz文件,并解压
[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz
进入解压的目录,进行编译,安装
编译命令
[root@root FastDFS]# ./make.sh
安装命令
[root@root FastDFS]# ./make.sh install
安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下
[root@root FastDFS]# cd conf/ [root@root conf]# cp * /etc/fdfs/
3.5 配置
安装成功后进入/etc/fdfs目录,修改tracker.conf
修改 base_path=/home/yuqing/fastdfs 为 base_path=/home/fastdfs
3.6 启动
启动命令
[root@root fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
设置开机自动启动
[root@root fdfs]# vi /etc/rc.d/rc.local
将运行命令添加进文件
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
如图
4.FastDFS-storage的安装
4.1 安装libevent
同tracker安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)
FastDFS依赖libevent库
yum -y install libevent
4.2 安装libfastcommon
同tracker安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。
上传到linux,并解压
解压后的目录
进入解压目录,进行编译,安装
编译命令
[root@root libfastcommon-1.0.7]# ./make.sh
安装命令
[root@root libfastcommon-1.0.7]# ./make.sh install
libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。
[root@root lib64]# cp libfastcommon.so /usr/lib
4.3 storage编译安装
同tracker编译安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)
上传FastDFS.tar.gz文件,并解压
[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz
进入解压的目录,进行编译,安装
编译命令
[root@root FastDFS]# ./make.sh
安装命令
[root@root FastDFS]# ./make.sh install
安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下
[root@root FastDFS]# cd conf/ [root@root conf]# cp * /etc/fdfs/
4.4 配置
安装成功后进入/etc/fdfs目录
修改storage.conf文件
将 base_path=/home/yuqing/fastdfs 改为:base_path=/home/fastdfs 将 store_path0=/home/yuqing/fastdfs 改为:store_path0=/home/fastdfs/fdfs_storage
#如果有多个挂载磁盘则定义多个store_path,如下
#store_path1=... #store_path2=...
配置tracker服务器ip
4.5 启动
启动命令
[root@root fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
设置开机自动启动
5.上传图片测试
5.1 通过fdfs_test程序
FastDFS安装成功可通过/usr/bin/fdfs_test测试上传和下载等操作
修改/etc/fdfs/client.conf文件
[root@root fdfs]# vi /etc/fdfs/client.conf
上传文件使用格式
/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件
比如将/usr/local/application目录下的1.png图片上传到FastDFS中
上传文件的目录下:
由于现在还没有和nginx整合无法使用http下载。
6.FastDFS 和 Nginx整合
6.1 在tracker上安装Nginx
在每个tracker上安装Nginx,目的是做负载均衡及实现高可用
…
6.2 在storage上安装Nginx
6.2.1 FastDFS-nginx-module
上传,并解压
[root@root fastdfs-nginx-module]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
进入fastdfs-nginx-module/src/目录下,编辑config配置文件
将fastdfs-nginx-module/src/下的mod_fastdfs.conf文件拷贝至/etc/fdfs/下
[root@root src]# cp mod_fastdfs.conf /etc/fdfs/
修改/etc/fdfs/mod_fastdfs.conf的内容
将 base_path=/tmp 修改为 base_path=/home/fastdfs
将 /usr/lib64/libfdfsclient.so拷贝至/usr/lib下
[root@root lib64]# cp /usr/lib64/libfdfsclient.so /usr/lib
创建nginx/client目录
[root@root lib64]# mkdir -p /var/temp/nginx/client
6.2.2 nginx安装
安装环境
安装pcre库
[root@root lib64]# yum -y install pcre-devel
安装zlib库
[root@root lib64]# yum install -y zlib-devel
上传Nginx,并解压
[root@root nginx]# tar -zxvf nginx-1.7.7.tar.gz
添加fastDFS-nginx-module模块,进入解压目录,执行命令
[root@root nginx-1.7.7]# ./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/application/fastdfs/fastdfs-nginx-module/fastdfs-nginx-module/src
–prefix=/usr/local/nginx \ :是安装目录
配置成功如下图
进入nginx的解压目录,编译并安装
[root@root nginx-1.7.7]# make [root@root nginx-1.7.7]# make install
6.2.3 nginx配置文件
修改nginx安装目录下的配置文件conf/nginx.conf
6.3 启动
启动Nginx
[root@root conf]# /usr/local/nginx/sbin/nginx
设置开机自动开启
[root@root conf]# vi /etc/rc.d/rc.local
将运行命令添加进文件,如下图
6.4 测试
访问上传的图片
[root@root 00]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/application/love.jpg
返回访问路径
访问