私有化部署-安装FastDFS应用

安装依赖包

1
yum install make cmake gcc gcc-c++

安装 libfastcommon (所有服务器上)

上传安装libfastcommon

  • 将包 libfastcommon-master.zip 上传到/usr/local/src 目录,并解压
1
2
3
4
5
cd /usr/local/src/
unzip libfastcommon-master.zip
cd libfastcommon-master
./make.sh
./make.sh install

创建软链接

​ 因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib,所以需要创建软链接。

1
2
3
4
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

​ 注意:此处不要惊讶为什么没有libfdfsclient.so,因为还没有安装,安装FastDFS之后,这个文件就会被创建的。

安装FastDFS

​ FastDFS安装包可以在众签提供的源码包中找到,也可以自行从网上下载,版本是:FastDFS_v5.05.tar.gz

上传安装FastDFS

  • 将FastDFS 源码包上传到服务器的 /usr/local/src 目录,并解 压
1
2
3
4
5
cd /usr/local/src/
tar -zxvf FastDFS_v5.05.tar.gz
cd FastDFS
./make.sh
./make.sh install

FastDFS的文件介绍

  • 以上是采用默认的方式安装的FastDFS,安装后相应的服务脚本、命令和启动文件如下:

    a. 服务脚本文件的路径是:

1
2
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker

​ b. 配置文件的路径是:

1
2
3
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

​ c. 命令文件的路径是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/usr/bin/fdfs_append_file     
/usr/bin/fdfs_appender_test
/usr/bin/fdfs_appender_test1
/usr/bin/fdfs_crc32
/usr/bin/fdfs_delete_file
/usr/bin/fdfs_download_file
/usr/bin/fdfs_file_info
/usr/bin/fdfs_monitor
/usr/bin/fdfs_storaged
/usr/bin/fdfs_test
/usr/bin/fdfs_test1
/usr/bin/fdfs_trackerd
/usr/bin/fdfs_upload_appender
/usr/bin/fdfs_upload_file

修改服务脚本文件

  • 因为FastDFS采用默认方式安装,服务脚本文件中默认配置的FastDFS命令文件路径是/usr/local/bin,但是默认方式安装的命令文件实际路径如上所展示,目录是/usr/bin ,所以需要修改服务脚本中的命令了路径,修改方式如下:
1
2
3
4
#修改tracker服务脚本
sed -i 's/usr\/local\/bin/usr\/bin/g' /etc/init.d/fdfs_trackerd
#修改storage服务脚本
sed -i 's/usr\/local\/bin/usr\/bin/g' /etc/init.d/fdfs_storaged

配置FastDFS追踪器tracker

修改tracker配置文件

1
2
3
4
5
6
7
8
9
10
#
cd /etc/fdfs/
#创建tracker配置文件
cp tracker.conf.sample tracker.conf
#修改配置文件
vi /etc/fdfs/tracker.conf
###将文件中的相应项修改为如下内容
disabled=false
port=22122
base_path=/home/fastdfs/tracker

创建FastDFS存储路径

1
mkdir –p /home/fastdfs/tracker

修改防火墙,放开tracker端口

​ 注:此服务端口,不需要被外网访问,请在防火墙中禁止此端口被外网访问,但是此端口一定要允许内网中可以访问,调整防火墙是为了让此服务被内网服务访问。

​ 以本机iptables为例

1
2
3
4
5
6
7
8
#vi /etc/sysconfig/iptables
#修改内容如下
#下方内容为放开本服务器的22122端口吗,如果此主机有外网,外网也能访问
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
#下方内容为仅对-s后ip或者网段的主机或者主机端,放开本服务器的22122端口
-A INPUT -p tcp -s 192.168.0.0/16 --dport 22122 -j ACCEPT
##重启防火墙,使配置生效。
service iptables restart

启动tracker服务,并检查是否正常启动

​ 使用如下两种命令之一启动tracker服务

1
2
3
service fdfs_trackerd restart
#或者
/etc/init.d/fdfs_trackerd start

​ 方式一:启动服务后,在目录/home/fastdfs/tracker目录下会看到一个data、logs目录,通过一下命令观察tracker是否启动成功

1
tail -20f /home/fastdfs/tracker/logs/trackerd.log
img

当看到以上信息的时候表示tracker已经正常启动

​ 方式二:执行命令

1
2
3
netstat -unltp|grep fdfs

ss -ntlp |grep fdfs
img img

​ 能出现以上信息,也能表示启动FastDFS的tracker服务启动成功。

设置 FastDFS 跟踪器开机启动

1
2
3
4
5
6
vi /etc/rc.d/rc.local

#将以下内容填入文件末尾

## FastDFS Tracker
/etc/init.d/fdfs_trackerd start

配置FastDFS存储器storage

修改storage配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#
cd /etc/fdfs/
#创建storage配置文件
cp storage.conf.sample storage.conf
#修改配置文件
vi /etc/fdfs/storage.conf
###将文件中的相应项修改为如下内容
disabled=false
group_name=group1
port=23000
base_path=/home/fastdfs/storage
store_path0=/home/fastdfs/storage
store_path_count=1
tracker_server=192.168.1.131:22122#(如果有多个tracker的话,可以在这个配置中填写多个tracker,写法如同现在的写法)
tracker_server=192.168.1.132:22122
http.server_port=8888 #(后续安装的nginx端口需要更改为8888,这样就可以通过nginx服务在web浏览器中查看存储的文件了)

创建FastDFS存储路径

1
mkdir –p /home/fastdfs/storage

修改防火墙,放开storage端口

​ 注:此服务端口,不需要被外网访问,请在防火墙中禁止此端口被外网访问,但是此端口一定要允许内网中可以访问,调整防火墙是为了让此服务被内网服务访问。

​ 以本机iptables为例

1
2
3
4
5
6
7
8
#vi /etc/sysconfig/iptables
#修改内容如下
#下方内容为放开本服务器的23000端口吗,如果此主机有外网,外网也能访问
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
#下方内容为仅对-s后ip或者网段的主机或者主机端,放开本服务器的23000端口
-A INPUT -p tcp -s 192.168.0.0/16 --dport 23000 -j ACCEPT
##重启防火墙,使配置生效。
service iptables restart

启动tracker服务,并检查是否正常启动

​ 使用如下两种命令之一启动tracker服务

1
2
3
service fdfs_storaged restart
#
/etc/init.d/fdfs_storaged start

​ 方式一:启动服务后,在目录/home/fastdfs/storaged目录下会看到一个data、logs目录,通过一下命令观察tracker是否启动成功

1
tail -20f /home/fastdfs/storage/logs/storaged.log

img

  • 当看到以上信息的时候表示storage已经正常启动

  • 当然也可以查看下tracker的日志,已经发生了变化,变化如下

img

​ 方式二:执行命令

1
2
3
netstat -unltp|grep fdfs
#
ss -ntlp |grep fdfs
img
  • 能出现以上信息,也能表示启动FastDFS的stroage服务启动成功。

设置 FastDFS 存储器开机启动

1
2
3
4
vi /etc/rc.d/rc.local
#将以下内容填入文件末尾
# FastDFS Tracker
/etc/init.d/fdfs_storaged start

检查集群信息

1
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
  • 使用以上命令,可以看到整个FastDFS集群的storage的分组以及组中storge的个数。如下图
img

利用文件上传测试服务安装是否成功

修改tracker服务器中的客户端配置文件client.conf

1
2
3
4
5
6
7
#从模板创建配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
#修改配置文件
vi /etc/fdfs/client.conf base_path=/fastdfs/tracker
base_path=/fastdfs/tracker
tracker_server=192.168.1.131:22122
tracker_server=192.168.1.132:22122

执行命令上传一个文件

1
/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /usr/local/src/FastDFS_v5.05.tar.gz
  • 如果上传成功会返回一个ID号如下:
1
group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz
  • 可以去/home/fastdfs/storage/data/00/00/目录中找到此名称为wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz的文件。

在存储节点安装nginx服务。

fastdfs-nginx-module 作用说明

  • FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 存储器中的一台如sg1,上传成功后文件 ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储sg2,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 sg2 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。(解压后的 fastdfs-nginx-module 在 nginx 编译安装时使用)

上传fastdfs-nginx模块

1
2
# cd /usr/local/src/
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

修改 fastdfs-nginx模块的配置文件

1
2
3
4
5
# vi /usr/local/src/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/"
#(注意:这个路径修改是很重要的,不然在 nginx 编译的时候会报错的)

上传Nginx源码包

  • 将当前的稳定版本 Nginx上传到到/usr/local/src 目录

​ 可以从官方网站下载最新版本(文档书写时最新稳定版是https://nginx.org/download/nginx-1.14.0.tar.gz)。文档是使用的版本是nginx-1.14.0.tar.gz

安装编译 Nginx 所需的依赖包

1
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

编译安装 Nginx

  • 添加 fastdfs-nginx-module 模块
1
2
3
4
5
cd /usr/local/src/
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
# make && make install

复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录

  • 上传配置文件并修改
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
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf

#(1)第一组 Storage 的 mod_fastdfs.conf 配置如下:
connect_timeout=10
base_path=/tmp
tracker_server=192.168.1.131:22122
tracker_server=192.168.1.132:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path0=/fastdfs/storage
group_count = 2
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
#(2)第一组 Storage 的 mod_fastdfs.conf 配置与第一组配置只有 group_name 不同:
group_name=group2

以上是按照两个group组来,实际操作过程中,如果只有一个组可以做如下修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vi /etc/fdfs/mod_fastdfs.conf
#(1)第一组 Storage 的 mod_fastdfs.conf 配置如下:
connect_timeout=10
base_path=/tmp
tracker_server=192.168.1.131:22122
tracker_server=192.168.1.132:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path0=/fastdfs/storage
group_count = 1
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage

复制 FastDFS 的部分配置文件到/etc/fdfs 目录

1
2
cd /usr/local/src/FastDFS/conf
cp http.conf mime.types /etc/fdfs/

在/fastdfs/storage 文件存储目录下创建软连接,将其链接到实际存放数据的目录

1
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

修改 Nginx配置文件,简洁版 nginx 配置样例

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
#vi /usr/local/nginx/conf/nginx.conf

user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
#alias /fastdfs/storage/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

​ 注意:

​ 8888端口要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应

​ nginx.conf第一行的user 一定要写成root

修改防火墙,放开NGINX端口

​ 注:此服务端口,不需要被外网访问,请在防火墙中禁止此端口被外网访问,但是此端口一定要允许内网中可以访问,调整防火墙是为了让此服务被内网服务访问。

​ 以本机iptables为例

1
2
3
4
5
6
#vi /etc/sysconfig/iptables
#修改内容如下
#下方内容为放开本服务器的8888端口吗,如果此主机有外网,外网也能访问
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
#下方内容为对-s后ip或者网段的主机或者主机端,放开本服务器的8888端口
-A INPUT -p tcp -s 192.168.0.0/16 --dport 8888 -j ACCEPT

​ 重启防火墙,使配置生效。

1
service iptables restart

启动NGINX

1
/usr/local/nginx/sbin/nginx

在控制台会出现以下内容

1
ngx_http_fastdfs_set pid=xxx

(重启 Nginx 的命令为:/usr/local/nginx/sbin/nginx -s reload)

NGINX加入开机启动

1
2
3
vi /etc/rc.local
#在末尾加入以下内容
/usr/local/nginx/sbin/nginx

通过浏览器测试访问6.2步骤中上传的文件

wget http://127.0.0.1:8888/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz 如果能获取到此文件,表示配置成功

至此,配置FastDFS已经完成。

自动化部署方法

软件下载地址放在本文的下方的评论区
-------------本文结束感谢您的阅读-------------
0%