FastDFS+nginx+php的完整应用[转储]
2020-12-13 03:53
标签:style blog class code c tar FastDFS功能简介:
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 主页地址:http://code.google.com/p/fastdfs/
#目前据说这上面已停止更新 FastDFS特点:
FastDFS主要解决了大容量的文件(主要是图片、视频、音频等小文件)存储和高并发访问的问题,并在文件存取时实现了负载均衡。与其它类GFS系统相比,FastDFS最大的特点在于它是一个轻量级的系统,体现在以下几个方面。 首先,FastDFS的结构比较简单,主要由Client、Tracker
server和Storage server三部分组成。Client通过Tracker server得到Storage
server的信息,然后直接与Storage server通信访问文件,避免了Tracker server成为瓶颈。
第二,FastDFS不对文件进行分块存储,与支持文件分块存储的DFS相比,更加简洁高效。
第三,FastDFS中的文件ID是由Storage
server生成后返回给客户端的。文件ID中包含了组号、文件相对路径和文件名等(文件ID中还包含文件大小、时间戳、源Storage server
IP地址、文件内容校验码、随机数等),client可以根据文件ID直接定位到文件所在的组(但具体通过哪个Storage server下载需要询问Tracker
server根据负载均衡原则指定)。因此FastDFS不需要存储文件索引信息。而其他文件系统则通常需要由NameServer存储文件索引信息,如mogileFS采用MySQL数据库来存储文件索引以及系统相关的信息,而MySQL很容易成为系统瓶颈。 FastDFS特性: 文件不分块存储,上传的文件和OS文件系统中的文件一一对应 支持相同内容的文件只保存一份,节约磁盘空间 下载文件支持HTTP协议,可以使用内置Web
Server,也可以和其他Web Server配合使用 支持在线扩容 支持主从文件 存储服务器上可以保存文件属性(meta-data)V2.0网络通信采用libevent,支持大并发访问,整体性能更好 FastDFS架构示意图:
文件上传流程:
1. Client询问Tracker
server应上传到哪个Storage server; 2. Tracker
server返回一台可用的Storage server,返回的数据为该Storage server的IP地址和端口; 3. Client直接和该Storage
server建立连接,进行文件上传。 4. Storage
server返回新生成的文件ID,文件上传结束。 5. 连接关闭。
1.
client询问tracker可以下载指定文件的storage,参数为文件ID(组名和文件名); 2.
tracker返回一台可用的storage; 3.
client直接和storage通信完成文件下载。 4. 连接关闭。 FastDFS论坛:http://bbs.chinaunix.net/forum-240-1.html FastDFS google
code:http://code.google.com/p/fastdfs/ 关于tracker server 和 storage
server之间是如何交互的,请看我在附件中的PPT、以及PDF格式的电子书,还有一个是关于配置文件的参数以及fastdfs各项参数是如何调优的,都有详细的说明,下面就让我们开始配置过程吧! 配置环境: CentOS 5.8 x 64 tracker server:
192.168.25.204 storage server:
192.168.25.207 php 客户端
:192.168.25.205 一、安装部署 1、配置tracker server 解决依赖关系 安装fastdfs 注意:我们这里使用的是最新版本的fastdfs,由于最新版的fastdfs取消了自带的http功能,所以这里我们就不对make.sh做修改。 配置文件解释: tracker.conf //负责均衡调度服务器配置文件 client.conf
//客户端上传配置文件 http.conf
//http服务器配置文件 storage.conf//文件存储服务器配置文件 mime.types //文件类型配置文件 修改tracker
server的配置文件 创建/data/fastdfs,用于存放tracker日志、storage
server等信息 2、配置storage server 上述安装过程是一样的这里就不在进行演示,请大家见谅! 创建数据目录,并启动storage
server(有刷屏的感觉) 查看tracker和storage的链接情况: 3、测试上传文件 我们这里在tracker
server上配置客户端上传文件 上传个文件,如果上传成功,会返回一个url,我们记住这个url,等下要用到 http://192.168.25.207/group1/M00/00/00/wKgZz1IEYnSASqs2AAAGgpr6pLY3507236_big 二、在storage
server上安装nginx 1、安装nginx关于fastdfs集合的扩展模块,注意这个模块nginx默认的编译模块中没有,需手动下载安装
文件下载流程:
1.
[root@varnish ~]
# tar xf libevent-2.0.21-stable.tar.gz
2.
[root@varnish ~]
# cd libevent-2.0.21-stable
3.
[root@varnish libevent-2.0.21-stable]
# ./configure --prefix=/usr/local/libevent
4.
[root@varnish libevent-2.0.21-stable]
# make
5.
[root@varnish libevent-2.0.21-stable]
# make install
6.
[root@varnish libevent-2.0.21-stable]
# echo ‘/usr/local/libevent/include/‘ >> /etc/ld.so.conf
7.
[root@varnish libevent-2.0.21-stable]
# echo ‘/usr/local/libevent/lib/‘ >> /etc/ld.so.conf
8.
[root@varnish libevent-2.0.21-stable]
# ldconfig
1.
[root@varnish ~]
# tar xf FastDFS_v4.07.tar.gz
2.
[root@varnish ~]
# cd FastDFS
3.
[root@varnish FastDFS]
# ./make.sh C_INCLUDE_PATH=/usr/local/libevent/include/ LIBRARY_PATH=/usr/local/libevent/lib/
4.
[root@varnish FastDFS]
# ./make.sh install
5.
[root@varnish FastDFS]
# ls /etc/fdfs/
6.
client.conf http.conf mime.types storage.conf tracker.conf
1.
[root@varnish ~]
# vim /etc/fdfs/tracker.conf
2.
bind_addr= 改为 bind_addr=192.168.25.204
3.
base_path=/home/yuqing/fastdfs 改为 base_path=/data/fastdfs
4.
http.server_port=8080 改为 http.server_port=80
1.
[root@varnish ~]
# mkdir -p /data/fastdfs
2.
启动tracker server
3.
[root@varnish ~]
# /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
1.
修改storage server的配置文件:
2.
[root@web2 ~]
# vim /etc/fdfs/storage.conf
3.
bind_addr= 改为 bind_addr=192.168.25.207
4.
base_path=/home/yuqing/fastdfs 改为 base_path=/data/fastdfs
5.
store_path0=/home/yuqing/fastdfs 改为 store_path0=/data/fastdfs
6.
tracker_server=192.168.209.121:22122 改为 tracker_server=192.168.25.204:22122
7.
http.server_port=8888 改为 http.server_port=80
1.
[root@varnish ~]
# vim /etc/fdfs/client.conf
2.
base_path=/home/yuqing/fastdfs 改为 base_path=/data/fastdfs
3.
tracker_server=192.168.0.197:22122
4.
改为
5.
tracker_server=192.168.25.204:22122