FastDFS安装

FastDFS是开源的高性能分布式文件系统(DFS)。主要功能包括:文件存储、文件同步和文件访问,以及高容量和负载均衡设计。

FastDFS_v5.05.tar.gz

fastdfs-nginx-module_v1.16.tar.gz

libfastcommon-1.0.7.tar.gz

1
yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ automake autoconf libtool make
1
tar zxf libfastcommon-1.0.7.tar.gz

进入目录

1
cd libfastcommon-1.0.7/
1
./make.sh
1
./make.sh install
1
2
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
1
tar zxf FastDFS_v5.05.tar.gz

进入解压后目录

1
cd FastDFS/
1
./make.sh
1
./make.sh install
1
2
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

安装结果:

  • /usr/bin 存放有编译出来的文件

  • /etc/fdfs 存放有配置文件

复制一份配置文件

1
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

创建tracker文件夹

1
mkdir -p /data/fastdfs/tracker

修改配置文件

1
vi /etc/fdfs/tracker.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 配置tracker.conf这个配置文件是否生效,因为在启动fastdfs服务端进程时需要指定配置文件,所以需要使次配置文件生效。false是生效,true是屏蔽。
disabled=false

# tracker监听的端口
port=22122

# base_path 目录地址(根目录必须存在,子目录会自动创建)
base_path=/data/fastdfs/tracker

# 系统预留空间,当一个group中的任何storage的剩余空间小于定义的值,整个group就不能上传文件了
reserved_storage_space = 10%

# 以下是关于http的设置了默认编译是不生效的要求更改 #WITH_HTTPD=1 将 注释#去掉 再编译
http.server_port=8080

不同版本配置可能不同

1
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

重启 tracker 服务

1
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

查看是否有 tracker 进程

1
ps aux | grep tracker

一般 storage 服务我们会单独装一台机子,但是这里为了方便我们安装在同一台。

如果 storage 单独安装的话,那上面安装的步骤都要在走一遍,只是到了编辑配置文件的时候,编辑的是storage.conf而已

复制一份配置文件

1
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

创建storage存储目录

1
mkdir -p /data/fastdfs/storage
1
vi /etc/fdfs/storage.conf 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
disabled=false	#启用配置文件
# 指定此storage server所在组(卷)
group_name=group1

# storage 默认端口
port=23000

# 数据存储目录地址
base_path=/data/fastdfs/storage

# storage在存储文件时支持多路径,默认只设置一个
# 需要和store_path个数匹配
store_path_count=1

# 配置多个store_path路径,从0开始,如果store_path0不存在,则base_path必须存在
store_path0=/data/fastdfs/storage
store_path1=/data/fastdfs/storage1

# 设置tracker_server
tracker_server=192.168.1.114:22122

# http 端口,默认编译不生效
http.server_port=8888
1
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

首次启动会很慢,因为它在创建预设存储文件的目录

重启 storage 服务

1
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

查看是否有 storage 进程

1
ps aux | grep storage

利用自带的 client 进行测试

复制一份配置文件

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

创建client数据目录

1
mkdir -p /data/fastdfs/client

编辑配置文件

1
vi /etc/fdfs/client.conf
1
2
3
4
5
# 存储日志文件的基本路径
base_path=/data/fastdfs/client

# tracker server的列表
tracker_server=192.168.1.114:22122

在终端中通过 shell 上传 opt 目录下的一张图片:

1
/usr/bin/fdfs_test /etc/fdfs/client.conf upload test.jpg

如下图箭头所示,生成的图片地址为:http://192.168.1.114/group1/M00/00/00/wKgBclb0aqWAbVNrAAAjn7_h9gM813_big.jpg

https://img.bwcxtech.com/img/20200928154928.png

即使我们现在知道图片的访问地址我们也访问不了,因为我们还没装 FastDFS的Nginx 模块

上传成功后,在 目标文件夹会生成4个文件夹,有 _big 的是备份文件,后缀名 -m 是文件的元数据

安装 fastdfs-nginx-module_v1.16.tar.gz,安装 Nginx 第三方模块相当于这个 Nginx 都是要重新安装一遍的

解压Nginx模块

1
tar zxf fastdfs-nginx-module_v1.16.tar.gz

得到目录地址:fastdfs-nginx-module

编辑Nginx模块配置文件:

1
vi fastdfs-nginx-module/src/config

找到下面一行包含有local字眼去掉,因为这三个路径根本不是在 local 目录下的。

1
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"

改为如下:

1
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

复制文件

1
cp FastDFS/conf/http.conf /etc/fdfs

复制文件

1
cp FastDFS/conf/mime.types /etc/fdfs

安装 Nginx和Nginx第三方模块

安装Nginx依赖包

1
yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

解压 Nginx

1
tar zxf nginx-1.14.2.tar.gz

进入解压后目录

1
cd nginx-1.14.2

编译配置:(注意最后一行)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
./configure \
--prefix=/usr/local/nginx \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_v2_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module \
--add-module=/root/fastdfs-nginx-module/src

编译安装

1
make && make install

复制Nginx模块的配置文件:

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

创建nginx-module存储目录

1
mkdir -p /data/fastdfs/fastdfs-nginx-module

编辑Nginx模块的配置文件

1
vi /etc/fdfs/mod_fastdfs.conf

如果在已经启动Nginx的情况下修改下面内容记得要重启Nginx。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
connect_timeout=2
network_timeout=30
base_path=/data/fastdfs/fastdfs-nginx-module	#nginx模块数据存储目录
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=192.168.1.114:22122	#指定tracker服务器的IP和端口
storage_server_port=23000
group_name=group1
url_have_group_name = true	#因为我们访问的地址前面是带有 /group1/M00,所以我们这里要使用true,不然访问不到(原值是 false)
store_path_count=1
# 图片实际存放路径,如果有多个,这里可以有多行:
# store_path0=/data/fastdfs/storage/images-data0
# store_path1=/data/fastdfs/storage/images-data1
# store_path2=/data/fastdfs/storage/images-data2
store_path0=/data/fastdfs/storage	#文件存储目录
log_level=info
log_filename=response_mode=proxy
if_alias_prefix=flv_support = true
flv_extension = flvgroup_count = 0

编辑Nginx配置文件

1
2
3
4
5
6
7
8
user  root;	# 注意这一行,如果有权限问题,使用 root 用户去运行nginx
server {
	listen	80;
	server_name  localtion;
	client_max_body_size    30m;
        location ~/group[0-9]/M0[0-9] {
            ngx_fastdfs_module;
            add_header Access-Control-Allow-Origin *;
1
2
3
4
5
6
7
8
9
/usr/bin/fdfs_monitor /etc/fdfs/client.conf

FDFS_STORAGE_STATUS:INIT      :初始化,尚未得到同步已有数据的源服务器
FDFS_STORAGE_STATUS:WAIT_SYNC :等待同步,已得到同步已有数据的源服务器
FDFS_STORAGE_STATUS:SYNCING   :同步中
FDFS_STORAGE_STATUS:DELETED   :已删除,该服务器从本组中摘除
FDFS_STORAGE_STATUS:OFFLINE   :离线
FDFS_STORAGE_STATUS:ONLINE    :在线,尚不能提供服务
FDFS_STORAGE_STATUS:ACTIVE    :在线,可以提供服务

FastDFS 配置文件详解(修订版1)

FastDFS 配置文件详解