Centos7环境下安装fastdfs(详细)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。

一、安装FashDFS

第一步就是下载FashDFS.

1、解压压缩包

tar zxf fastdfs-5.05.tar.gz
cd fastdfs-5.05
./make.sh

然后还是上面的命令,解压往下。

不过这里会碰到一个问题。解压完之后./make.sh,出错
在这里插入图片描述

解决办法:安装libfastcommon类库

二、安装libfastcommon类库

解压安装包

tar zxf libfastcommon-1.0.7.tar.gz
cd libfastcommon-master
./make.sh
./make.sh install

libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要重新设置软链接(类似于Windows的快捷方式):

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

安装这个类库之后到fastdfs-5.05文件目录下执行上次的命令
不报错了,完成。
在这里插入图片描述

继续下一步:在log中我们可以发现安装路径:

在这里插入图片描述

没错,正是安装到了/etc/fdfs中,安装成功后就会生成如上的3个.sample文件(示例配置文件),我们再分别拷贝出3个后面用的正式的配置文件:

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

至此FastDFS已经安装完毕,接下来的工作就是依次配置Tracker和Storage了。

三、配置Tracker

在配置Tracker之前,首先需要创建Tracker服务器的文件路径,即用于存储Tracker的数据文件和日志文件等,我这里选择在/opt目录下创建一个fastdfs_tracker目录用于存放Tracker服务器的相关文件:

mkdir /opt/fastdfs_tracker

接下来就要重新编辑上一步准备好的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次做以下修改:

disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,通常采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=6666 #设置http端口号,默认为8080

配置完成后就可以启动Tracker服务器了,但首先依然要为启动脚本创建软引用,因为fdfs_trackerd等命令在/usr/local/bin中并没有,而是在/usr/bin路径下:

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin

最后通过命令启动Tracker服务器:

service fdfs_trackerd start

这个命令执行成功了,但是没有生成相应的文件,也没有端口监听。
在这里插入图片描述

最后使用下面的命令成功:

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

如果启动命令执行成功,那么同时在刚才创建的tracker文件目录/opt/fastdfs_tracker中就可以看到启动后新生成的data和logs目录,tracker服务的端口也应当被正常监听,最后再通过netstat命令查看一下端口监听情况:

netstat -unltp|grep fdfs

可以看到tracker服务运行的22122端口正常被监听。
确认tracker正常启动后可以将tracker设置为开机启动,打开/etc/rc.d/rc.local并在其中加入以下配置:
在这里插入图片描述

Tracker至此就配置好了,接下来就可以配置FastDFS的另一核心——Storage。

四、配置Storage

步骤基本与配置Tracker一致,首先是创建Storage服务器的文件目录,需要注意的是同Tracker相比我多建了一个目录,因为Storage还需要一个文件存储路径,用于存放接收的文件:

mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data

接下来修改/etc/fdfs目录下的storage.conf配置文件,打开文件后依次做以下修改:

disabled=false #启用配置文件(默认启用)
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=10.211.55.5:22122 #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功(此处的ip是我的CentOS虚拟机ip)
http.server_port=8888 #设置 http 端口号

配置完成后同样要为Storage服务器的启动脚本设置软引用:

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

接下来就可以启动Storage服务了:

service fdfs_storaged start

如果启动成功,/opt/fastdfs_storage中就可以看到启动后新生成的data和logs目录 。
但是这个执行完之后发现只有log文件。
在这里插入图片描述
同理,如果启动成功,/opt/fastdfs_storage中就可以看到启动后新生成的data和logs目录,端口23000也应被正常监听,还有一点就是文件存储路径下会生成多级存储目录,那么接下来看看是否启动成功了:
在这里插入图片描述

如上图,貌似没成功啊,因为启动storage后文件都没生成,为了确认我们看一下storage的端口情况:
在这里插入图片描述

果然是没启动成功!端口目前还是只监听了一个,storage的23000端口并未被监听,那么我们只能去日志文件中找原因了,进入/opt/fastdfs_storage/logs目录下并打开storaged.log文件:
如上图,可以看到确实有一个error,关键信息是:

ip地址写的是公网的地址,所以报错

修改ip为内网的地址后再次重启storage服务,然后再看看data目录和实际存储文件/opt/fastdfs_storage_data:

如上图,可以看到/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下实际文件存储路径下是否有创建好的多级目录呢:
在这里插入图片描述
如上图,没有任何问题,data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。那么最后我们再看一下storage服务的端口监听情况:
在这里插入图片描述如上图,可以看到此时已经正常监听tracker的22122端口和storage的23000端口,至此storage服务器就已经配置完成,确定了storage服务器启动成功后,还有一项工作就是看看storage服务器是否已经登记到 tracker服务器(也可以理解为tracker与storage是否整合成功),运行以下命令:

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

效果如下

[root@localhost /]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf 
[2016-09-23 12:59:26] DEBUG - base_path=/opt/fastdfs_storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
 
server_count=1, server_index=0
 
tracker server is 192.168.111.11:22122
 
group count: 1
 
Group 1: 
group name = group1 
disk total space = 6818 MB 
disk free space = 2169 MB 
trunk free space = 0 MB 
storage server count = 1 
active server count = 1 
storage server port = 23000 
storage HTTP port = 8888 
store path count = 1 
subdir count per path = 256 
current write server index = 0 
current trunk file id = 0
 
Storage 1: 
id = 192.168.111.11 
ip_addr = 192.168.111.11 ACTIVE 
http domain = 
version = 5.05 
join time = 2016-09-23 11:15:54 
up time = 2016-09-23 12:33:26 
total storage = 6818 MB 
free storage = 2169 MB 
upload priority = 10 
store_path_count = 1 
subdir_count_per_path = 256 
storage_port = 23000 
storage_http_port = 8888 
current_write_path = 0 
source storage id = 
if_trunk_server = 0 
connection.alloc_count = 256 
connection.current_count = 0 
connection.max_count = 0 
total_upload_count = 0 
success_upload_count = 0 
total_append_count = 0 
success_append_count = 0 
total_modify_count = 0 
success_modify_count = 0 
total_truncate_count = 0 
success_truncate_count = 0 
total_set_meta_count = 0 
success_set_meta_count = 0 
total_delete_count = 0 
success_delete_count = 0 
total_download_count = 0 
success_download_count = 0 
total_get_meta_count = 0 
success_get_meta_count = 0 
total_create_link_count = 0 
success_create_link_count = 0 
total_delete_link_count = 0 
success_delete_link_count = 0 
total_upload_bytes = 0 
success_upload_bytes = 0 
total_append_bytes = 0 
success_append_bytes = 0 
total_modify_bytes = 0 
success_modify_bytes = 0 
stotal_download_bytes = 0 
success_download_bytes = 0 
total_sync_in_bytes = 0 
success_sync_in_bytes = 0 
total_sync_out_bytes = 0 
success_sync_out_bytes = 0 
total_file_open_count = 0 
success_file_open_count = 0 
total_file_read_count = 0 
success_file_read_count = 0 
total_file_write_count = 0 
success_file_write_count = 0 
last_heart_beat_time = 2016-09-23 12:58:59 
last_source_update = 1970-01-01 08:00:00 
last_sync_update = 1970-01-01 08:00:00 
last_synced_timestamp = 1970-01-01 08:00:00

如上所示,看到192.168.111.11 ACTIVE 字样即可说明storage服务器已经成功登记到了tracker服务器,同理别忘了添加开机启动,打开/etc/rc.d/rc.local并将如下配置追加到文件中:

service fdfs_storage start

至此我们就已经完成了fastdfs的全部配置,此时也就可以用客户端工具进行文件上传下载的测试了。

五、初步测试

测试时需要设置客户端的配置文件,编辑/etc/fdfs目录下的client.conf 文件,打开文件后依次做以下修改:

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

配置完成后就可以模拟文件上传了,先给/opt目录下放一张图片(暴雪爸爸的LOGO):
在这里插入图片描述

然后通过执行客户端上传命令尝试上传:

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/BLIZZARD.jpg

运行后可以发现给我们返回了一个路径:
在这里插入图片描述

这就表示我们的文件已经上传成功了,当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成,如下图:
在这里插入图片描述

同时在之前配置的storage服务器的实际文件存储路径中也可以根据返回的路径找到实际文件:
在这里插入图片描述
接下来尝试用浏览器发送HTTP请求访问一下文件:
在这里插入图片描述

此时发现并不能访问,因为FastDFS目前已不支持http协议
4.0.5版本开始移除了自带的HTTP支持(因为之前自带的HTTP服务较为简单,无法提供负载均衡等高性能服务),所以余大提供了nginx上使用FastDFS的模块fastdfs-nginx-module,下载地址如下:https://github.com/happyfish100/fastdfs-nginx-module,这样做最大的好处就是提供了HTTP服务并且解决了group中storage服务器的同步延迟问题,接下来就具体记录一下fastdfs-nginx-module的安装配置过程。

六、安装nginx 和 fastDFS-nginx模块

1、解压安装包

tar zxf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/src
vim config

修改配置文件中第四行,把路径中local去掉。参数是用于配置安装nginx中的FastDFS组件的时候,在什么位置查找FastDFS核心代码。
修改结果如下:
在这里插入图片描述

在修改完配置之后需要将对应的配置文件复制一份到目录下
在这里插入图片描述
在这里插入图片描述

2、安装nginx的依赖

yum  install -y  gcc  gcc-c++  make  automake  autoconf  libtool  pcre  pcre-devel  zlib  zlib-devel openssl openssl-devel unzip vim 

3、上传Nginx并解压

上传nginx-1.16.1.tar.gz 到/usr/local/tmp中

cd /usr/local/tmp
tar zxf nginx-1.16.1.tar.gz

4、修改nginx配置

进入nginx文件夹
cd nginx-1.16.1
创建临时目录

修改配置文件中好多位置都使用了/var/temp/nginx目录,但是默认不会自动创建这个目录的,需要手动创建。

 mkdir -p /var/temp/nginx
nginx初始化(重要)

修改配置文件参数

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/tmp/fastdfs-nginx-module/src

–add-module必须定义,此配置信息是用于指定安装Nginx时需要加载的模块,如果未指定,Nginx安装过程不会加载fastdfs-nginx-module模块,后续功能无法实现。
修改完配置参数之后,

编译并安装
make
make install
fastdfs-nginx-module模块配置文件

复制配置文件fastdfs-nginx-module/src/mod_fastdfs.conf到/etc/fdfs目录中

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

修改mod_fastdfs.conf
进入cd /etc/fdfs

cd /etc/fdfs
编辑配置文件
vim mod_fastdfs.conf

需要修改文件中四处内容,这四处内容的含义:
connect_timeout=2 #连接超时时间,单位秒
tracker_server=tracker:22122 #tracker服务结点
url_have_group_name = false #URL中是否包含group名称
store_path0=/home/yuqing/fastdfs # storage服务结点的存储位置,与配置storage结点一致

修改结果为:

connect_timeout=10
tracker_server=192.168.9.136:22122
url_have_group_name = true
store_path0=/usr/local/fastdfs/storage/store
提供FastDFS需要的HTTP配置文件

复制FastDFS安装包中的两个配置文件(http.conf和mime.types)到/etc/fdfs目录中

cp /usr/local/tmp/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/tmp/FastDFS/conf/mime.types /etc/fdfs/
创建网络访问存储服务的软连接

在上传文件到FastDFS后,FastDFS会返回group1/M00/00/00/xxxxxxxxxx.xxx。其中group1是卷名,在mod_fastdfs.conf配置文件中已配置了url_have_group_name,以保证URL解析正确。而其中的M00是FastDFS保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。

ln -s /usr/local/fastdfs/storage/store/data/  /usr/local/fastdfs/storage/store/data/M00
修改nginx配置文件

进入到安装后nginx目录
注意是安装目录,不是解压目录

cd /usr/local/nginx/conf

编辑配置文件

vim nginx.conf

修改两处内容
第一处
Nginx需要访问linux文件系统,必须有文件系统的权限。User root代表nginx访问文件系统的权限是root用户权限。如果不开启权限,可能有404访问错误。

user  root;

第二处

server{
    listen        8888; # storage配置中,有http.server_port=8888的配置信息,必须一致。配置文件是/etc/fdfs/storaged.conf
    server_name  localhost;
    location ~/group([0-9])/M00{
        ngx_fastdfs_module;
    }
}

修改完成后

启动nginx

进入到nginx安装目录的sbin文件夹

启动nginx
# ./nginx

关闭nginx
# ./nginx -s quit

在浏览器地址栏访问图片
使用浏览器查看FastDFS中保存的文件:
http://ip:8888/group1/M00/00/00/xxxxxxx.xxx
如果这里发现之前路径忘了再次执行一次上传

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/BLIZZARD.jpg

总结

以上就是今天要记录的内容了,本文仅仅简单介绍了如何安装fastdfs文件服务器,亲测可用,因为是网上找的资源汇总的,若有问题可留言评论

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值