FastFDS简介以及配置
FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。
Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务 器。
Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器。
Tracker: 可以实现集群,每个tracker的节点和地位平等。主要是收集Storage集群的状态。
Storage:保存文件。 Storage可以分为多个组,每个组之间保存的文件是不一样的。组内部可以存在多个成员,组成员内部保存的内容是一样的。组成员的地位一致,没有从属之分。
上存过程:
首先 Tracker会定时的检查StorageServer的状态。
当Client发起上传请求的时候,Tracker会查询StorageServer可用的存储。然后给客户端返回StorageServer的ip和端口号。
Client收到Tracker返回的信息之后,可以直接访问StorageServer,把文件上传到对应的storage。
StorageServer收到Client的上传文件,会生成一个文件的唯一标识 file_id,并且把内容写入到磁盘,最后把 file_id 返回给Client。
下载:
Client向 TrackerServer 发起下载的请求,然后Tracker根据请求查询storageServer可用的storage,并且给Client返回相应的 ip和端口号。
Client收到端口号之后,再次带着file_id 直接向StorageServer请求资源。
storageServer根据file_id 找到对应的资源,并且返回给客户端。
接下来说一下我的部署过程。
首先准备好两个安装包,网上基本可以搜索到,如果找不到的话,可以给我留言。
libfastcommon-master.zip (依赖包)
fastdfs-master.zip
1 安装FastDFS的依赖包。
1.1 解压libfastcommon-master.zip,并且进入libfastcommon-master根目录
1.2 执行 ./make.sh
1.3 执行 sudo ./make.sh install
2 安装FastDFS
2.1 解压fastdfs-master.zip并且进入目录
2.2 执行 ./make.sh
2.3 执行 sudo ./make.sh install
3 配置Tracker
3.1 复制配置文件,并且改名字
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
3.2 在/home/python/目录中创建目录 fastdfs/tracker
mkdir –p /home/python/fastdfs/tracker
3.3 编辑/etc/fdfs/tracker.conf配置文件
sudo vim /etc/fdfs/tracker.conf
修改 base_path=/home/python/fastdfs/tracker
4 配置存储服务器Storage
4.1 复制配置文件,并且重新命名
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
4.2 在/home/python/fastdfs/ 目录中创建目录 storage
mkdir –p /home/python/fastdfs/storage
4.3 编辑/etc/fdfs/storage.conf配置文件 sudo vim /etc/fdfs/storage.conf
修改内容:
base_path=/home/python/fastdfs/storage
store_path0=/home/python/fastdfs/storage
tracker_server=自己ubuntu虚拟机的ip地址:22122
5 启动Tracker 和 Storage
sudo service fdfs_trackerd start
sudo service fdfs_storaged start
6 修改 客户端配置文件client.conf
6.1 sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
6.2 编辑/etc/fdfs/client.conf配置文件 sudo vim /etc/fdfs/client.conf
修改内容:
base_path=/home/python/fastdfs/tracker
tracker_server=自己ubuntu虚拟机的ip地址:22122
7 上传文件测试
fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件
如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功
至此,FastDFS的安装与配置基本完成。
但是通常我们会把FastDFS 和 Nginx 搭配起来一起使用。所以我们还需要安装并且部署Nginx。
需要下载的文件:
nginx-1.8.1.tar.gz
fastdfs-nginx-module-master.zip
把以上两个文件解压,然后进入到nginx-1.8.1 目录中。
执行:
sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master解压后的目录的绝对路径/src
继续执行下面命令:
sudo ./make
sudo ./make install
复制配置文件到 etc/fdfs 目录
sudo cp fastdfs-nginx-module-master解压后的目录中src下的mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
修改配置信息:
sudo vim /etc/fdfs/mod_fastdfs.conf
修改如下:
connect_timeout=10
tracker_server=自己ubuntu虚拟机的ip地址:22122
url_have_group_name=true
store_path0=/home/python/fastdfs/storage
继续执行命令:
sudo cp 解压缩的fastdfs-master目录下的conf目录中的http.conf /etc/fdfs/http.conf
sudo cp 解压缩的fastdfs-master目录下的conf目录中的mime.types /etc/fdfs/mime.types
修改nginx配置文件
sudo vim /usr/local/nginx/conf/nginx.conf
在http部分中添加配置信息如下:
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ { # 相当于django中的url
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
(这里有个坑: 在后面启动nginx进行访问FastDFS上的内容的时候,如果出现能够访问Nginx的欢迎页面,但是不能够访问FastDFS上存储的文件,那么,需要在 nginx.conf 的开头添加一个 user root ;)
保存配置文件,然后启动nginx
sudo /usr/local/nginx/sbin/nginx
到这一步,Nginx的配置也完成了。
这时候可以测试一下FastDFS + Nginx是否能够配合使用。
先上传一张图片到Storage,然后通过Nginx访问。
返回的group1就是图片在Storage上的地址信息,通过如下地址访问,如果能够显示图片,那么配置就成功了。
以上是我对于FastDFS + Nginx 配置的理解以及部署,如果有什么说的不对的地方,欢迎大家指正。