FastDFS 目前更新很慢, 最新的版本可以从这里下载 https://sourceforge.net/projects/fastdfs/ ,github源码地址为 https://github.com/happyfish100/fastdfs 我下载的是最新版本 5.08 , FastDFS 是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片、视频、文档等文件。对于互联网应用,和其他分布式文件系统相比,优势非常明显。具体情况大家可以看相关的介绍文档,包括 FastDFS 介绍 PPT 等等。
出于简洁考虑,FastDFS没有对文件做分块存储,因此不太适合分布式计算场景。
下载好后,server端分为两个部分,一个是tracker,一个是storage。顾名思义,前者调度管理,负载均衡,后者则是实际的存储节点。两个都能做成集群,以防止单点故障。以前的4.x版本依赖libevent,现在不需要了,只需要libfastcommon。安装步骤如下:
下载安装libfastcommon
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon/
./make.sh
./make.sh install
- 首先 git clone 作者仓库中的 libfastcommon 库到本地, 如果你还没有安装 git 请先执行以下命令安装 git
-
apt install git
-
- 进入 libfastcommon文件夹
- 编译源代码
- 安装 libfastcommon
确认编译与安装没有错误, 64 位系统默认会复制到 /usr/lib64 路径下. 然后需要设置环境变量与创建软链接.
export LD_LIBRARY_PATH=/usr/lib64/
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
- 创建环境变量
- 创建软链接
下载安装fastdfs
在命令行执行以下命令,下载 FastDFS:
wget https://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz
然后解压 .tar.gz --> 编译 --> 安装:
tar xzf FastDFS.tar.gz
cd FastDFS/
./make.sh
./make.sh install
- 解压
- 进入 FastDFS 文件夹
- 编译源代码
- 执行安装
Ubuntu 系统中, 默认会安装到 /usr/bin , 关于 fastdfs 的命令脚本都在该路径下
并在 /etc/fdfs 下有三个以 .sample 结尾的示例配置文件
修改配置文件
首先拷贝三个 .sample 文件为正式文件, 然后分别修改复制后的三个文件参数, 先让 FastDFS 跑起来, 其余参数调优的时候再考虑.
➜ ~ cd /etc/fdfs
➜ fdfs cp client.conf.sample client.conf
➜ fdfs cp tracker.conf.sample tracker.conf
➜ fdfs cp storage.conf.sample storage.conf
修改配置:
tracker.conf 中修改:
base_path=/opt/fastdfs #用于存放数据与日志的基路径。
storage.conf 中修改:
tracker_server=192.168.1.181:22122 #指定tracker服务器地址。
base_path=/opt/fastdfs #用于存放数据与日志的基路径。
store_path0=/opt/fastdfs/storage #存放数据,若不设置默认为前面那个
Note:
- FastDFS 是 storage 追踪 tracker, 所以在 storage 配置文件中指定 tracker ip 地址.
- tracker_server 配置项 ip 地址不可以为 127.0.0.1 , 否则无法启动.
- 如果需要指定多个 tracker, 添加多行即可, 例如:
tracker_server=192.168.1.181:22122
tracker_server=192.168.1.182:22122
client.conf 中修改:
base_path=/opt/fastdfs #用于存放数据与日志基路径。
tracker_server=192.168.1.181:22122 #指定tracker服务器地址
启动 tracker 和 storage
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
检查进程
ps -ef | grep fdfs
可以看到 tracker 与 storage 都启动 OK 了. 这时我们可以看到 FastDFS 日志与数据路径结构如下:
如果启动失败, 可以到 logs 路径下查看相应日志.
上传/删除测试
使用自带的 fdfs_test 测试, 使用方式如下:
fdfs_test /etc/fdfs/client.conf upload /home/huoshan/图片/webwxgetmsgimg.jpg
使用 fdfs_delete_file 来测试删除文件, 使用方式如下:
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/01/wKgfmFmuHkSALvZdAAEhg1sJVzs863.jpg
OK, 我们上传与删除测试都 OK 了。 我们的图片上传到了 /opt/fastdfs/storage/data 路径下的子目录里, 默认 FastDFS 会在该路径下生成 256 * 256 个子目录. 默认 FastDFS 会在各目录里依次存放 . 所以在子目录 00/00 应该可以看到我们刚才上传的文件。
在我们上边上传成功后, 会为我们返回一个 example file url , 这个 url 现在是无法在 浏览器中打开的, 需要配置 nginx 使用.
在 nginx 中添加 fastdfs-nginx-module 模块才可以打开. 如果需要可以查看我的另一篇文章 Ubuntu 16.04 安装 fastdfs-nginx-module 模块