安装
准备两个 Linux 服务器。两个服务器分别作为 tracker 服务器(跟踪服务器)和 storage服务器(存储服务器)。
Tracker 服务器 : 192.168.2.109
Storage 服务器 : 192.168.2.110
课上环境中,所有的安装包都存放在/root/upload 目录中。解压后的安装包根据具体命令查看。(/usr/local/fastdfs)
1 核心安装
Tracker Server 和 Storage Server 完全一致的安装。
安装 FastDFS 5.08 版本
1.1 安装 FastDFS 依赖
FastDFS 是 C 语言开发的应用。安装必须使用 make、cmake 和 gcc 编译器。
yum install -y make cmake gcc gcc-c++
1.2 解压 FastDFS 核心库
libfastcommon 是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库
cd /root/upload
unzip libfastcommon-master.zip -d /usr/local/fastdfs
1.3 进入解压后的目录
cd /usr/local/fastdfs/libfastcommon-master
1.4 编译安装
libfastcommon 没有提供 make 命令安装文件。使用的是 shell 脚本执行编译和安装。shell脚本为 make.sh
编译
./make.sh
安装
./make.sh install
有固定的默认安装位置。在/usr/lib64 和/usr/include/fastcommon 两个目录中。
1.5 创建软连接
因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib,所以需要创建软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
1.6 解压 FastDFS 主程序
本案例使用 5.08 版本 FastDFS。
cd /root/upload
tar -zxf FastDFS_v5.08.tar.gz -C /usr/local/fastdfs
1.7 进入 FastDFS 主程序源码目录
cd /usr/local/fastdfs/FastDFS
1.8 修改安装路径
此操作可选。在集群环境中使用默认安装路径安装。两种安装方式都尝试一下。
vi /usr/local/fastdfs/FastDFS/make.sh
TARGET_PREFIX=$DESTDIR/usr -> TARGET_PREFIX=$DESTDIR/usr/local
1.9 编译安装
./make.sh
./make.sh install
安装后,FastDFS 主程序所在位置是:
/usr/local/bin - 可执行文件所在位置。默认安装在/usr/bin 中。
/etc/fdfs - 配置文件所在位置。就是默认位置。
/usr/local/lib64 - 主程序代码所在位置。默认在/usr/bin 中。
/usr/local/include/fastdfs - 包含的一些插件组所在位置。默认在/usr/include/fastdfs 中。
1.10 FastDFS 安装后资源简介
1.10.1 服务脚本
/etc/init.d/目录中,脚本文件是 - fdfs-storaged 和 fdfs-trackerd
ls /etc/init.d/ | grep fdfs
1.10.2 配置文件模板
/etc/fdfs/ 目 录 中 , 配 置 文 件 是 - client.conf.sample 、 storage.conf.sample 和tracker.conf.sample
ls /etc/fdfs/
tracker.conf.sample - 跟踪器服务配置文件模板
storage.conf.sample - 存储服务器配置文件模板
client.conf.sample - FastDFS 提供的命令行客户端配置文件模板。可以通过命令行测试FastDFS 有效性。
1.10.3 内置命令
/usr/local/bin/目录中。命令有若干。可通过命令在控制台访问 FastDFS。
ls /usr/local/bin/ | grep fdfs
以上为通用安装, FastDFS 的跟踪服务和存储服务是通过配置实现的。后续内容为跟踪服务和存储服务的具体配置。
2 tracker 基础配置
只在 tracker server 节点中配置。192.168.2.109
2.1 创建跟踪服务配置文件
FastDFS 提供了配置文件模板,可以根据模板创建需要使用的配置文件。
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
2.2 修改配置文件
tracker.conf 配置文件用于描述跟踪服务的行为,需要进行下述修改:
vi /etc/fdfs/tracker.conf
port=22122 # 默认服务端口
base_path=/home/yuqing/fastdfs -> base_path=/fastdfs/tracker (自定义目录)
base_path 是 FastDFSTracker 启动后使用的根目录。也就是 data 和 logs 所在位置。
2.3 创建自定义目录
为配置文件中定义的 base_path 变量创建对应的目录。
mkdir -p /fastdfs/tracker
2.4 修改启动服务脚本
vi /etc/init.d/fdfs_trackerd
将 PRG=/usr/bin/fdfs_trackerd 修改为 PRG=/usr/local/bin/fdfs_trackerd
2.5 启动服务
/etc/init.d/fdfs_trackerd start
启动成功后, 配置文件 中 base_path 指向的目录中出 现 FastDFS 录 服务相关数据目录 ( data目录、 logs 目录)
2.6 查看服务状态
/etc/init.d/fdfs_trackerd status
ps aux | grep fdfs
2.7 停止服务
/etc/init.d/fdfs_trackerd stop
2.8 重启服务
/etc/init.d/fdfs_trackerd restart
2.9 设置开启自启
vi /etc/rc.d/rc.local
新增内容 - /etc/init.d/fdfs_trackerd start
3 storage 基础配置
只在 storage server 中配置。192.168.2.100
3.1 创建存储服务配置文件
FastDFS 提供了配置文件模板,可以根据模板创建需要使用的配置文件。
cd /etc/fdfs
cp storage.conf.sample storage.conf
3.2 修改配置文件
storage.conf 配置文件用于描述存储服务的行为,需要进行下述修改:
vi /etc/fdfs/storage.conf
base_path=/home/yuqing/fastdfs -> base_path=/fastdfs/storage/base (自定义目录)
store_path0=/home/yuqing/fastdfs -> store_path0=/fastdfs/storage/store (自定义目录)
tracker_server=192.168.2.109:22122 -> tracker_server=tracker 服务 IP:22122
base_path - 基础路径。用于保存 storage server 基础数据内容和日志内容的目录。
store_path0 - 存储路径。是用于保存 FastDFS 中存储文件的目录,就是要创建 256*256个子目录的位置。
base_path 和 store_path0 可以使用同一个目录。
tracker_server - 跟踪服务器位置。就是跟踪服务器的 ip 和端口。
3.3 创建自定义目录
mkdir -p /fastdfs/storage/base
mkdir -p /fastdfs/storage/store
3.4 修改服务脚本
vi /etc/init.d/fdfs_storaged
将 PRG=/usr/bin/fdfs_storaged 修改为 PRG=/usr/local/bin/fdfs_storaged
3.5 启动服务( 要求 tracker 服务必须已启动 )
/etc/init.d/fdfs_storaged start
启动成功后,配置文件中 base_path 指向的目录中出现 FastDFS 服务相关数据目录(data目录、logs 目录),配置文件中的 store_path0 指向的目录中同样出现 FastDFS 存储相关数据录(data 目录)。其中$store_path0/data/目录中默认创建若干子孙目录(两级目录层级总计 256*256 个目录),是用于存储具体文件数据的。
Storage 服务器启动比较慢,因为第一次启动的时候,需要创建 256*256 个目录。
3.6 查看服务状态
/etc/init.d/fdfs_storaged status
ps aux | grep fdfs
3.7 停止服务
/etc/init.d/fdfs_storaged stop
3.8 重启服务
/etc/init.d/fdfs_storaged restart
3.9 设置开机自启
vi /etc/rc.d/rc.local
新增内容 - /etc/init.d/fdfs_storaged start
因启动前提为 tracker 服务必须已启动,不推荐开启自启。
4 客户端基础配置
不是必须的。就是用于使用命令行测试 FastDFS 才需要配置的。
4.1 创建客户端配置文件
在 tracker 服务结点所在服务器中配置客户端。同样通过配置文件模板创建对应配置文件。
cd /etc/fdfs
cp client.conf.sample client.conf
4.2 修改配置文件
client.conf 配置文件中主要描述客户端的行为,需要进行下述修改:
vi /etc/fdfs/client.conf
base_path=/home/yuqing/fastdfs -> base_path=/fastdfs/client (自定义目录)
tracker_server=192.168.2.109:22122 -> tracker_server=tracker 服务 IP:22122
base_path - 就是客户端命令行执行过程时临时数据存储位置。
4.3 创建自定义目录
mkdir -p /fastdfs/client
5 控制台测试 FastDFS
命令所在: /usr/local/bin 目录。 (如果在安装 FastDFS 过程中,没有修改 make.sh 文件中的 TARGET_PREFIX 属性值,命令所在为/usr/bin 目录)
5.1 上传文件
/usr/local/bin/fdfs_upload_file /etc/fdfs/client.conf /要上传的文件
上传结束后,返回 group1/M00/00/00/xxxxxxxxxx.xxx,检查 storage 服务结点中的
$store_path0/data/00/00/目录中是否有上传的文件( 一般情况上传的文件按顺序保存在
$store_path0/data/00/00/ 目录中,不能完全保证 )。
课 上 测 试 的 上 传 文 件 结 果 :
group1/M00/00/00/wKgCbltTYaeACDWgAAVCLEPUQWI.tar.gz
卷名 : group1
文件名 : M00/00/00/wKgCbltTYaeACDWgAAVCLEPUQWI.tar.gz
其中 M00 是一个虚拟目录,相当于 windows 中的快捷方式,引用的是$store_path0/data目录。
5.2 删除文件
/usr/local/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/xxxxxxx.xxx
删除结束后,检查$store_path0/data/00/00/目录中是否还有文件。
6 安装 Nginx 组件
如果 FastDFS 中保存的是图片信息。希望在 WEB 应用中可以直接访问 FastDFS 中的图片进行显示。如果操作?
安装 Nginx 是为了 WEB 应用中可以使用 HTTP 协议直接访问 Storage 服务中存储的文件。在 storage 结点所在服务器安装 Nginx 组件。
需要安装两部分内容。
Nginx 应用,在安装 nginx 应用的时候,同时要在 nginx 中增加一个 FastDFS 的组件。
Module。
6.1 解压 fastdfs-nginx-module_v1.16.tar.gz
tar -zxf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fastdfs
6.2 修改 fastdfs-nginx-module_v1.16.tar.gz 源文件中的配置
此操作必须修改,否则 Nginx 编译会报错。
cd /usr/local/fastdfs/fastdfs-nginx-module/src
vi /usr/local/fastdfs/fastdfs-nginx-module/src/config
参数是用于配置安装 nginx 中的 FastDFS 组件的时候,在什么位置查找 FastDFS 核心代码。
源数据:
ngx_addon_name=ngx_http_fastdfs_module HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c" CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient" CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'" |
修 改 后 内 容 : ( 如 果 安 装 FastDFS 时 , 没 有 修 改 make.sh 文 件 , 则 改 为 :CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/")
ngx_addon_name=ngx_http_fastdfs_module HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c" CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/include/fastcommon/" CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient" CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'" |
6.3 安装 Nginx
6.3.1 安装 Nginx 需要的依赖
yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel
zlib zlib-devel openssl openssl-devel
6.3.2 使用 SFTP 上传文件到 Linux
进入到本地的应用所在目录。
cd /xxxx 目录
sftp 192.168.2.110
输入用户名和密码。使用哪一个用户登录,上传的文件就在该用户对应的主目录下。如:root 用户,上传的文件在/root 目录中。
上传的命令:
put 文件名
下载的命令:
get 文件名
6.3.3 解压 Nginx
tar -zxf nginx-1.8.0.tar.gz -C /usr/local/fastdfs/
6.3.4 进入 Nginx 源码目录
cd /usr/local/fastdfs/nginx-1.8.0/
6.3.5 配置 Nginx 安装信息
./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/fastdfs/fastdfs-nginx-module/src |
--add-module 必须定义 , 此配置信息是用于指定安装 Nginx 时需要加载的模块 , 如果未指定, Nginx 安装过程不会加载 fastdfs-nginx-module 模块,后续功能无法实现。
6.3.6 创建目录
Nginx 运行时需要创建若干临时文件,如果默认安装不需创建此目录。
mkdir -p /var/temp/nginx
6.3.7 编译安装
make
make install
6.3.8 配置 fastdfs-nginx-module 模块配置文件
复制配置文件/usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf 到/etc/fdfs 目录中
cp /usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
修改配置文件 mod_fastdfs.conf
vi mod_fastdfs.conf
源配置:
connect_timeout=2 #连接超时时间,单位秒 tracker_server=tracker:22122 #tracker 服务结点 url_have_group_name = false #URL 中是否包含 group 名称 store_path0=/home/yuqing/fastdfs # storage 服务结点的存储位置,与配置storage 结点一致 |
参考修改值:
connect_timeout=10 tracker_server=192.168.2.109:22122 url_have_group_name = true store_path0=/fastdfs/storage/store |
6.3.9 提供 FastDFS 需要的 HTTP 配置文件
复制 FastDFS 安装包中的两个配置文件(http.conf 和 mime.types)到/etc/fdfs 目录中
cp /usr/local/fastdfs/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/fastdfs/FastDFS/conf/mime.types /etc/fdfs/
6.3.10 创建 nginx 启动需要的软连接
创建软连接
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib64/libfdfsclient.so
nginx 启动后,会在默认的 /usr/lib64 目录中查找需要的 so 文件。如果在安装 FastDFS时,修改了 make.sh 文件中的 TARGET_PREFIX 参数,则必须创建此软连接
6.3.11 创建网络访问存储服务的软连接
ln -s /fastdfs/storage/store/data/ /fastdfs/storage/store/data/M00
在上传文件到 FastDFS 后,FastDFS 会返回 group1/M00/00/00/xxxxxxxxxx.xxx。其中group1 是卷名,在 mod_fastdfs.conf 配置文件中已配置了 url_have_group_name,以保证 URL解析正确。而其中的 M00 是 FastDFS 保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。
6.3.12 修改 nginx 配置文件
cd /usr/local/nginx/conf
vi nginx.conf
参考修改配置:( 部分配置信息,不要完整复制 )
user root; # Nginx 需要访问 linux 文件系统,必须有文件系统的权限。User root 代表nginx 访问文件系统的权限是 root 用户权限。如果不开启权限,可能有 404 访问错误。 server{ listen 8888; # storage 配置中,有 http.server_port=8888 的配置信息,必须一致。配置文件是/etc/fdfs/storaged.conf server_name localhost; location ~/group([0-9])/M00{ ngx_fastdfs_module; } } |
6.3.13 测试 WEB 访问存储服务中的文件
使用浏览器查看 FastDFS 中保存的文件:
http://ip:8888/group1/M00/00/00/x xxxxxx.xxx
测试上传的文件: group1/M00/00/00/wKgCbltTmv-ASTG2AAAmTx4ns0s172.jpg
测试 WEB 访问地址:
http://192.168.2.110:8888/group1/M00/00/00/wKgCbltTmv-ASTG2AAAmTx4ns0s172.jpg