当前位置: 代码迷 >> 综合 >> FastDFS+Nginx 单机环境搭建案例
  详细解决方案

FastDFS+Nginx 单机环境搭建案例

热度:65   发布时间:2023-10-17 06:07:04.0

简介

FastDFS 是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client):
1.Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
2.Storage Server: 存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
3.Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

准备

1.下载安装包
FastDFS+Nginx 单机环境搭建案例
下载地址:https://github.com/downgoon/hello-world/wiki/FastDFS-Install-&-Upload-&-Download
FastDFS+Nginx 单机环境搭建案例
备注:此案例是将所有下载好的包放在centos的 /tmp/fdfs/目录下
2.安装依赖组件
系统依赖组件 gcc openssl-devel pcre-devel zlib-devel

yum install gcc openssl-devel pcre-devel zlib-devel

安装libfastcommon

说明:必须先安装libfastcommon后安装FastDFS,因为libfastcommon是FastDFS的依赖环境
1.解压文件到一个位置

unzip libfastcommon-master.zip 

如果未安装unzip,就执行下面命令:

yum -y install unzip 

2.进入解压后的目录,进行编译、安装

cd libfastcommon-master
./make.sh 
./make.sh install

会在默认安装位置:/usr/lib64、/usr/include/fastcommon
3.创建软连接
因为 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/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

第2个可能出现如下情况,可忽略
FastDFS+Nginx 单机环境搭建案例

FastDFS主程序安装

1.解压文件到一个位置

tar -zxf FastDFS.tar.gz

2.进入解压后的目录,进行编译、安装

cd FastDFS/
./make.sh 
./make.sh install

编译期间如果遇到此问题,是因为缺少Perl编程环境,
FastDFS+Nginx 单机环境搭建案例
需要安装Perl编译环境:

yum install perl*

安装后,FastDFS主程序所在位置:
/usr/bin - 可执行文件所在位置。
/etc/fdfs - 配置文件所在位置。
/usr/lib64 - 主程序代码所在位置
/usr/include/fastdfs - 包含的一些插件组所在位置

3.进入配置文件目录

cd /etc/fdfs/

FastDFS+Nginx 单机环境搭建案例
tracker.conf.sample - 跟踪器服务配置文件模板
storage.conf.sample - 存储服务器配置文件模板
client.conf.sample - FastDFS提供的命令行客户端配置文件模板。可以通过命令行测试FastDFS有效性。
4.修改tracker配置文件(/etc/fdfs/tracker.conf)
(1)修改配置文件名,建议使用cp,保留备份

cp tracker.conf.sample tracker.conf

(2)创建存储tracker相关数据的相关文件

mkdir -p /var/data/fdfs/fdfs-tracker

(3) vim打开tracker.conf,修改配置信息
base_path=/home/yuqing/fastdfs -> base_path=/var/data/fdfs/fdfs-tracker(自定义目录)
(4)启动Tracker

/etc/init.d/fdfs_trackerd start

启动成功后,配置文件中base_path指向的目录中出现FastDFS服务相关数据目录(data、logs目录)
FastDFS+Nginx 单机环境搭建案例
5.修改storage配置文件(/etc/fdfs/storage.conf)
(1)修改配置文件名,建议使用cp,保留备份

cp storage.conf.sample storage.conf

(2)创建存储storage相关数据的相关文件

mkdir -p /var/data/fdfs/fdfs-storage/base
mkdir -p /var/data/fdfs/fdfs-storage/store

(3) vim打开storage.conf,修改配置信息
base_path=/home/yuqing/fastdfs -> base_path=/var/data/fdfs/fdfs-storage/base(自定义目录)
store_path0=/home/yuqing/fastdfs -> store_path0=/var/data/fdfs/fdfs-storage/store(自定义目录)
tracker_server=192.168.31.128:22122 【 tracker_server=tracker服务IP:22122】
说明:
base_path - 基础路径,用于保存storage server基础数据内容和日志内容的目录。
store_path0 - 存储路径,是用于保存FastDFS中存储文件的目录,就是要创建256*256个子目录的位置。base_path和store_path0可以配置成同一个目录。
tracker_server - 跟踪服务器位置。就是跟踪服务器的ip和端口。
(4)启动storage
/etc/init.d/fdfs_storaged start
启动成功后,会自动在配置路径下创建文件系统,可进行检查
FastDFS+Nginx 单机环境搭建案例
6.修改client配置文件(/etc/fdfs/client.conf)
(1)修改配置文件名,建议使用cp,保留备份

 cp client.conf.sample client.conf

(2)创建存储client客户端命令行执行过程时临时数据存储位置

mkdir -p /fastdfs/client

(3)vim打开client.conf,修改配置信息
base_path=/home/yuqing/fastdfs -> base_path=/fastdfs/client (自定义目录)
tracker_server=192.168.31.128:22122 【 tracker_server=tracker服务IP:22122】
(4)测试上传文件

/usr/local/bin/fdfs_upload_file  /etc/fdfs/client.conf   /要上传的文件

FastDFS+Nginx 单机环境搭建案例

在nginx中添加Fastdfs模块

1.解压 fastdfs-nginx-module包和tenginx包

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf  tengine.tar.gz

2.ngixn安装(tengine)
(1)修改/tmp/fdfs/fastdfs-nginx-module/src下的config文件
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改为
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

(2)进入tengine目录下
(3)配置tengine安装参数(根据自己文件路径修改)

./configure --prefix=/usr/local/tengine \
--add-module=/tmp/fdfs/fastdfs-nginx-module/src/

(4)编译安装

make && make install

3.配置fastdfs-nginx-module
(1)拷贝fastdfs-nginx-module配置文件

cp /tmp/fdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

(2)修改配置文件 mod_fastdfs.conf
tracker_server=tracker:22122 -> tracker_server=192.168.31.128:22122
url_have_group_name = false -> url_have_group_name = true
store_path0=/home/yuqing/fastdfs -> store_path0=/var/data/fdfs/fdfs-storage/store
(3)拷贝http服务需要的配置(FastDFS安装包中)

cp /tmp/fdfs/FastDFS/conf/http.conf /etc/fdfs/
cp /tmp/fdfs/FastDFS/conf/mime.types /etc/fdfs/

(4)创建网络访问存储服务的软连接
在上传文件到FastDFS后,FastDFS会返回group1/M00/00/00/xxxxxxxxxx.xxx。其中group1是卷名,在mod_fastdfs.conf配置文件中已配置了url_have_group_name,以保证URL解析正确。
而其中的M00是FastDFS保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。

ln -s /var/data/fdfs/fdfs-storage/store/data/  /var/data/fdfs/fdfs-storage/store/data/M00

(5)修改nginx配置文件

 vim /usr/local/tengine/conf/nginx.conf

在80 server下加一个location

location ~ /group([0-9])/M00 {
    ngx_fastdfs_module;
}

(6)启动nginx

/usr/local/tengine/sbin/nginx -c /usr/local/tengine/conf/nginx.conf

(7)测试在浏览器查看文件上面上传的文件 wKgfgF4HVemAf-2jAAAAFkbE1k862.html
http://192.168.31.128/group1/M00/00/00/wKgfgF4HVemAf-2jAAAAFkbE1k862.html
FastDFS+Nginx 单机环境搭建案例