0%

FastDFS安装

软件准备

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

安装 libfastcommon

解压

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

安装tracker(跟踪器)服务

解压

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 存放有配置文件

配置 tracker 服务

复制一份配置文件

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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
disabled=false	#启用配置文件
bind_addr=
port=22122 #设置tracker的端口号
connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/tracker #tracker数据存储目录
max_connections=256
accept_threads=1
work_threads=4
store_lookup=2
store_group=group2
store_server=0
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=8080 #设置http端口号 注意,这个配置在fastdfs5.05这个版本中已经不用配置,不用管这个!
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html

启动 tracker 服务

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 单独安装的话,那上面安装的步骤都要在走一遍,只是到了编辑配置文件的时候,编辑的是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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
disabled=false	#启用配置文件
group_name=group1 #组名,根据实际情况修改
bind_addr=
client_bind=true
port=23000 #设置storage的端口号
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
base_path=/data/fastdfs/storage #storage数据存储目录
max_connections=256
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1 #存储路径个数,需要和store_path个数匹配
# 图片实际存放路径,如果有多个,这里可以有多行:
# store_path0=/opt/fastdfs/storage/images-data0
# store_path1=/opt/fastdfs/storage/images-data1
# store_path2=/opt/fastdfs/storage/images-data2
store_path0=/data/fastdfs/storage #文件存储目录
subdir_count_per_path=256
tracker_server=192.168.1.114:22122 #指定tracker服务器的IP和端口
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=8888 #设置http端口号,注意,这个配置在fastdfs5.05这个版本中已经不用配置,不用管这个!

启动 storage 服务

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
6
7
8
9
10
11
connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/client #client数据存储目录
tracker_server=192.168.1.114:22122 # 指定 tracker 服务器的 IP 和端口
log_level=info
use_connection_pool = false
connection_pool_max_idle_time = 3600
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=80

在终端中通过 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

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

安装 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
user  root;	#注意这一行,特别使用 root 用户去执行,不然有些日志目录没有权限访问
server {
listen 80;
server_name localtion;
location ~/group[0-9]/M01 {
ngx_fastdfs_module;
}

如果需要再单台服务器实例多个 storage 的解决办法

一、复制一份storage.conf并修改文件名storage1.conf

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

二、修改storage1.conf相关配置

1、修改组名

1
group_name=group2

2、修改端口

1
port=23001

3、修改日志文件目录

1
base_path=/data/fastdfs/storage2

4、修改资源保存路径

1
store_path0=/data/fastdfs/storage2

三、修改mod_fastdfs.conf配置文件

1
vi /etc/fdfs/mod_fastdfs.conf

1、修改组名,多个用/区分开

1
group_name=group1/group2

2、设置组个数

1
group_count = 2

3、设置每一组信息:

1
2
3
4
5
6
7
8
9
10
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23001
store_path_count=1
store_path0=/data/fastdfs/storage2

等以此类推

启动 storage

1
/usr/bin/fdfs_storaged /etc/fdfs/storage1.conf

nginx日志报错ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename

解决办法:

1
vi /etc/fdfs/mod_fastdfs.conf

url_have_group_name=false改为url_have_group_name=true

四、重启相关服务,可以访问到相关图片、语音等信息

fastdfsstorage server的状态查询

命令

1
/usr/bin/fdfs_monitor /etc/fdfs/client.conf
1
2
3
4
5
6
7
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 :在线,可以提供服务
-------------    本文结束  感谢您的阅读    -------------
请作者一杯咖啡。