Centos7搭建FastDFS(一)

。_饼干妹妹 提交于 2020-01-23 03:57:58

配置搭建FastDFS文件管理服务器

注意事项:

fastdfs 5.11版本对照:Version 5.11对应的fastdfs-nginx-module的Version 1.20

fastdfs 5.10版本对照:Version 5.10对应的fastdfs-nginx-module的Version 1.19

1.1 准备工作

需要的文件以及下载地址

fastdfs 5.11下载。
https://github.com/happyfish100/fastdfs/releases

fastdfs-client-java-master下载
https://github.com/happyfish100/fastdfs-client-java

fastdfs-nginx-module-master下载
https://github.com/happyfish100/fastdfs-nginx-module

libfastcommon-master下载
https://github.com/happyfish100/libfastcommon

nginx-1.12.0下载
http://nginx.org/download/

1.2 首先下载 所需全部工具运行命令

yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget

1.3 等待下载完成 然后安装rz 命令

yum install lrzsz -y

1.4 通过rz命令 或者sftp上传到/home目录下自己新建一个目录(根据个人习惯)

cd /home
mkdir xinchilde
ls
cd xinchilde
rz

在这里插入图片描述
上图是我全部上传完成的截图

2.1 安装libfastcommon

安装的路径:libfastcommon默认安装到了/usr/lib64/这个位置。

解压刚才上传的文件,然后进入解压完成的文件目录

unzip libfastcommon-master.zip 
cd libfastcommon-master
ll

我们会看到
在这里插入图片描述

./make.sh #编译软件
./make.sh install #安装软件

看看有没有报错,如果没有错误就可以执行软链接了。

FastDFS主程序设置的目录为/usr/local/lib/,而我们的安装目录为/usr/lib64,所以我们需要创建/usr/lib64/下的一些核心执行程序的软连接文件。

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.2 安装FastDfs

然后回到/xinchilde(或者你创建的文件下)

2.2.1 解压fastdfs

unzip fastdfs-5.11.zip
cd fastdfs-5.11 #解压完成进入fastdfs5.11
./make.sh #编译软件
./make.sh install #安装软件

成功之后查看目录

[root@localhost muyou]# cd /etc/fdfs/
[root@localhost fdfs]# ll
-rw-r--r-- 1 root root  1461 Jun  8 21:56 client.conf.sample
-rw-r--r-- 1 root root  7927 Jun  8 21:56 storage.conf.sample
-rw-r--r-- 1 root root  7389 Jun  8 21:56 tracker.conf.sample

我们需要把这三个实例文件服务一份,去掉sample

cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

关于storage_ids.conf:如果storage使用ids来标识,而不是用ip,这个配置文件需要配置

3.1 安装tracker

创建tarcker工作目录,这个目录可以自定义,用来保存tracker的data和log

根据个人习惯创建下面的目录:

[root@localhost ~]# cd /usr/
[root@localhost usr]# mkdir xinchilde
[root@localhost usr]# cd xinchilde
[root@localhost xinchilde]# mkdir dev
[root@localhost xinchilde]# cd dev/
[root@localhost dev]# mkdir fastdfs
[root@localhost dev]# cd fastdfs/
[root@localhost fastdfs]# mkdir fastdfs_tracker
[root@localhost fastdfs]# cd fastdfs_tracker/
[root@localhost fastdfs_tracker]# pwd
/usr/xinchilde/dev/fastdfs/fastdfs_tracker        #这个是我最终创建的目录
[root@localhost fastdfs_tracker]#

3.1.1 配置tracker

cd /etc/fdfs
vi tracker.conf

打开后找到下面4处然后修改即可

#默认开启 
disabled=false
#默认端口号
port=22122
#刚刚创建的目录 
base_path=/usr/xinchilde/dev/fastdfs/fastdfs_tracker
#默认端口是8080
http.server_port=6666

保存修改文件,启动 tracker 命令如下。

service fdfs_trackerd start

如果不能成功启动,可以通systemctl命令

systemctl start fdfs_trackerd

成功之后可以看见

[root@localhost fdfs]# service fdfs_trackerd start
Starting fdfs_trackerd (via systemctl):                    [  OK  ]

在这里插入图片描述
进入创建的tracker目录。发现目录多了data和log两个目录

[root@localhost fdfs]# cd /usr/xinchilde/dev/fastdfs/fastdfs_tracker/
[root@localhost fastdfs_tracker]# ll
total 0
drwxr-xr-x 2 root root 178 Jun 16 21:19 data
drwxr-xr-x 2 root root  26 Jun 13 22:01 logs

然后 我们不能每次都这么启动tracker,我们需要给tracker加入开机启动

首先需要给执行权限,

chmod +x /etc/rc.d/rc.local

然后开始修改rc.local

vi /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
service fdfs_trackerd start

保存,然后 查看tracker端口监听情况

[root@localhost fastdfs_tracker]# netstat -unltp|grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      2233/fdfs_trackerd

在这里插入图片描述

到此22122端口监听成功。

3.2 安装storage

为storage配置工作目录,由于storage还需要一个目录用来存储数据,所以我另外多建了一个fasdfs_storage_data (共3个目录)

[root@localhost fastdfs]# ls
fastdfs_storage  fastdfs_storage_data  fastdfs_tracker

修改storage.conf

vi /etc/fdfs/storage.conf

找到如下几处地方修改即可

disabled=false
#组名,根据实际情况修改 
group_name=group1
#设置storage的端口号,默认是23000,同一个组的storage端口号必须一致 
port=23000
#设置storage数据文件和日志目录 
base_path=/usr/xinchilde/dev/fastdfs/fastdfs_storage
#存储路径个数,需要和store_path个数匹配 
store_path_count=1
#实际文件存储路径
store_path0=/usr/xinchilde/dev/fastdfs/fastdfs_storage_data
#我CentOS7的ip地址 
tracker_server=192.168.88.130:22122
#设置 http 端口号
http.server_port=8888

保存之后 创建软引用

ln -s /usr/bin/fdfs_storaged /usr/local/bin

启动storage

service fdfs_storaged start

同理 如果不能启动可以用下述命令

systemctl start fdfs_storaged

成功应该是如下

[root@localhost fdfs]# service fdfs_stroaged start
Starting fdfs_storaged (via systemctl):                    [  OK  ]

同样设置开机启动,修改rc.local

vim /etc/rc.d/rc.local
#!/bin/bash
..省略无用信息..
touch /var/lock/subsys/local
service fdfs_trackerd start
service fdfs_storaged start

同样查看服务是否启动

在这里插入图片描述

查看trackerd与storaged是否都启动

[root@localhost fastdfs]# netstat -unltp | grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      2233/fdfs_trackerd
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      2323/fdfs_storaged


服务启动,到此fastdfs已经配置完成了。最后我们再确认一下,storage是否注册到了tracker中去。

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

成功后可以看到:

ip_addr = 192.168.88.130 (localhost.localdomain) ACTIVE 的字样

在这里插入图片描述
ok,修改客户端配置文件

vi /etc/fdfs/client.conf

找到如下几处地方修改即可

#tracker服务器文件路径
base_path=/usr/xinchilde/dev/fastdfs/fastdfs_tracker
#tracker服务器IP地址和端口号
tracker_server=192.168.88.130:22122
# tracker 服务器的 http端口号,必须和tracker的设置对应起来
http.tracker_server_port=6666

接下来上传图片到centos7做测试

rz 命令选择一张照片 上传到随便一个目录

在这里插入图片描述

开始测试,成功之后会返回图片的路径(此处:group1/M00/00/00/wKhYgl4IHh2ASjPJAAT6HJitQn4263.png)

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /home/test.png #你上传的图片路径(linux上的)

在这里插入图片描述
我们去刚才上传的路径查看是否上传成功~~~

[root@localhost home]# cd /usr/muyoudev/fastdfs/fastdfs_storage_data/data
[root@localhost data]# ls
[root@localhost data]# cd 00
[root@localhost 00]# ls
[root@localhost 00]# cd 00
[root@localhost 00]# ls
wKiWhFrdeCeAC_vCAABqgowGIFg399.png 

在这里插入图片描述
在这里插入图片描述

果然我们找到了图片了。

data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

我们发现,http不能直接访问到图片。这是为什么呢。

原来早在4.05的时候,就remove embed HTTP support

Version 4.05  2012-12-30
 * client/fdfs_upload_file.c can specify storage ip port and store path index
 * add connection pool
 * client load storage ids config
 * common/ini_file_reader.c does NOT call chdir
 * keep the mtime of file same
 * use g_current_time instead of call time function
 * remove embed HTTP support

HTTP请求不能访问文件的原因

我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS模块(也可以叫FastDFS的Nginx模块)。
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了192.168.128.131,文件ID已经返回客户端,这时,后台会将这个文件复制到192.168.128.131,如果复制没有完成,客户端就用这个ID在192.168.128.131取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。
、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS模块(也可以叫FastDFS的Nginx模块)。
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了192.168.128.131,文件ID已经返回客户端,这时,后台会将这个文件复制到192.168.128.131,如果复制没有完成,客户端就用这个ID在192.168.128.131取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。
正是这样,FastDFS需要结合nginx,所以取消原来对HTTP的直接支持。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!