参考文档:

https://www.jianshu.com/p/a842358b451b

https://zhuanlan.zhihu.com/p/80256918

建议先设置hosts,这样后面可以用host name 代替 IP

echo ‘\n192.168.0.201 fastdfs-tracker-server’ » /etc/hosts

所有跟踪服务器和存储服务器均执行如下操作

编译和安装所需的依赖包:

yum install make cmake gcc gcc-c++

安装 libfastcommon:

下载 libfastcommon 到/usr/local/src 目录

下载地址:https://github.com/happyfish100/libfastcommon/archive/refs/tags/V1.0.53.tar.gz

解压

1cd /usr/local/src/ 
2tar -zxf libfastcommon-1.0.53.tar.gz
3cd libfastcommon-1.0.53

编译、安装

1./make.sh 
2./make.sh install 

安装 FastDFS

下载 FastDFS 源码包到 /usr/local/src 目录

下载地址:https://github.com/happyfish100/fastdfs/archive/refs/tags/V6.07.tar.gz

解压

1cd /usr/local/src/ 
2tar -zxf fastdfs-6.07.tar.gz
3cd fastdfs-6.07

编译、安装(编译前要确保已经成功安装了 libfastcommon)

1./make.sh 
2./make.sh install

fastdfs可执行文件目录:/usr/bin/

fastdfs配置文件目录: /etc/fdfs/

配置 Tracker

进入配置文件目录

cd /etc/fdfs

拷贝出一个tracker.conf

cp tracker.conf.sample tracker.conf

修改tracker.conf 的配置

vi /etc/fdfs/tracker.conf

修改的内容如下:

1disabled=false
2port=22122
3base_path=/ghzy/fastdfs/tracker

创建基础数据目录(参考基础目录 base_path 配置):

1mkdir -p /ghzy/fastdfs/tracker

启动 Tracker:

/etc/init.d/fdfs_trackerd start

初次成功启动,会在 /ghzy/fastdfs/tracker 目录下创建 data、logs 两个目录

设置 Tracker 开机启动

chkconfig –add fdfs_trackerd

启动 Tracker 服务

service fdfs_trackerd start

停止 Tracker 服务

service fdfs_trackerd stop

配置 Storage Server

进入配置文件目录

cd /etc/fdfs

拷贝出一个 storage.conf

cp storage.conf.sample storage.conf

修改 storage.conf 配置

vim /etc/fdfs/storage.conf

修改的内容如下:

1disabled=false
2port=23000
3base_path=/ghzy/fastdfs/storage
4store_path0=/ghzy/fastdfs/storage
5tracker_server = 10.9.250.244:22122
6tracker_server = 10.9.250.245:22122

其他默认配置即可

创建基础数据目录(参考基础目录 base_path 配置):

mkdir -p /ghzy/fastdfs/storage

启动 Storage 服务

/etc/init.d/fdfs_storaged start

初次成功启动,会在 /ghzy/fastdfs/storage 目录下创建 data、logs 两个目录

添加 Storage 开机启动

chkconfig –add fdfs_storaged

启动 Storage 服务

service fdfs_storaged start

停止 Storage服务

service fdfs_storaged stop

所有 Storage 节点都启动之后,可以在任一 Storage 节点上使用如下命令查看集群信息:

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

可以看到存储节点状态为 ACTIVE 则可

文件上传测试

修改 Tracker 服务器中的客户端配置文件:

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

vi /etc/fdfs/client.conf

修改内容如下:

base_path=/ghzy/fastdfs/client

tracker_server = 10.9.250.244:22122

tracker_server = 10.9.250.245:22122

创建文件操作目录:

mkdir -p /ghzy/fastdfs/client

执行如下文件上传命令:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/fastdfs-6.07.tar.gz

能返回如下文件 ID,说明文件上传成功:

group1/M00/00/00/Cgn69GHOpjeAe8L3AAxZpW9u5YM.tar.gz

group1/M00/00/00/wKgAZmHUJ3WAMD0GABA07JYrqZA.tar.gz

在Storage 上安装 Nginx

fastdfs-nginx-module 作用说明

FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入

文件复制,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 192.168.1.135,上传成功后文件 ID

已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.1.136,在文件还

没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.1.136 上取文件,就会出现文件无法访问的

错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的

文件无法访问错误。(解压后的 fastdfs-nginx-module在 nginx 安装时使用)

先安装 pcre和pcre-devel

yum install -y pcre pcre-devel zlib-devel

如果是ubuntu,则执行如下命令:

sudo apt-get install openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev

上传fastdfs-nginx-module-1.22.tar.gz 到/usr/local/src,解压

cd /usr/local/src/

tar -zxf fastdfs-nginx-module-1.22.tar.gz

编译安装 Nginx(添加fastdfs-nginx-module 模块)

1cd /usr/local/src/ 
2tar -zxf nginx-1.20.2.tar.gz 
3cd nginx-1.20.2
4./configure  --with-http_ssl_module --add-module=/usr/local/src/fastdfs-nginx-module-1.22/src 
5make
6make install 

cp /usr/local/src/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs

编辑mod_fastdfs.conf

cd /etc/fdfs

vim /etc/fdfs/mod_fastdfs.conf

修改内容如下:

1connect_timeout=10 
2base_path=/tmp 
3tracker_server=10.9.250.244:22122
4tracker_server=10.9.250.245:22122
5storage_server_port=23000 
6group_name=group1 
7url_have_group_name = true 
8store_path0=/ghzy/fastdfs/storage

其他配置默认。

fastdfs-nginx-module 依赖了两个配置文件 http.conf, mine.types文件,

这两个文件在 fastdfs源码目录的conf目录下,需要拷贝到/etc/fdfs目录

cp /usr/local/src/fastdfs-6.07/conf/http.conf /etc/fdfs

cp /usr/local/src/fastdfs-6.07/conf/mime.types /etc/fdfs

修改 nginx.conf 配置

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

核心内容如下:

 1    server {
 2        listen       80;
 3        server_name  localhost;
 4
 5        #charset koi8-r;
 6
 7        #access_log  logs/host.access.log  main;
 8
 9        location / {
10            root   html;
11            index  index.html index.htm;
12        }
13
14        # fastdfs 配置,请求中保护 /group([0-9])/M00 的请求转给 fastdfs
15        location ~ /group([0-9])/M00 {
16            ngx_fastdfs_module;
17        }
18
19        # fastdfs 配置
20        # location ~ ^/file_server/group([0-9])/M00/ {
21        #     rewrite ^/file_server/(.*)$ /$1 break;
22        #     ngx_fastdfs_module;
23        # }
24
25        # 其他设置
26        # location ~ ^/file_server/local/ {
27        #     rewrite ^/file_server/local/(.*)$ /$1 break;
28        #     proxy_pass http://10.9.250.247;
29        # }
30    }

至此nginx 和fastdfs-nginx-module 配置完毕,所有storage节点都需要安装,执行以上步骤。

在两台机器上 启动nginx

前面直接通过 Nginx 访问 Storage 中的 文件

http://10.9.250.244/group1/M00/00/00/Cgn69GHOpjeAe8L3AAxZpW9u5YM.tar.gz

http://10.9.250.245/group1/M00/00/00/Cgn69GHOpjeAe8L3AAxZpW9u5YM.tar.gz