Centos7 FastDFS 搭建

安装libfastcommon

首先第一步是安装libfastcommon,我这里将libfastcommon上传到的/opt目录下,直接解压:

yum -y install gcc-c++

yum -y install unzip zip

unzip libfastcommon-master.zip

 

进入目录

./make.sh

./make.sh install

 

至此libfastcommon就已经安装成功了,但注意一下上图中红色框标注的内容,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

安装FastDFS

tar -zxvf fastdfs-5.05.tar.gz

 

进入目录

./make.sh

./make.sh install

 

没错,正是安装到了/etc/fdfs中,我们看一下该目录下的文件:

 

安装成功后就会生成如上的3.sample文件,我们再分别拷贝出3个后面用的正式的配置文件

cp client.conf.sample client.conf

cp storage.conf.sample storage.conf

cp tracker.conf.sample tracker.conf

之后再查看一下/etc/fdfs的文件目录

 

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

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

 

如果启动命令执行成功,那么同时在刚才创建的tracker文件目录/opt/fastdfs_tracker中就可以看到启动后新生成的datalogs目录,tracker服务的端口也应当被正常监听,最后再通过netstat命令查看一下端口监听情况没有 ifconfig netstat -an 的话安装 net-tools package

yum install net-tools

netstat -unltp|grep fdfs

 

确认tracker正常启动后可以将tracker设置为开机启动,打开/etc/rc.d/rc.local并在其中加入以下配置:

vim /etc/rc.d/rc.local

service fdfs_trackerd start

 

如果重启后发现未能自动启动则通过命令ll /etc/rc.d/rc.local检查一下rc.local是否具备可执行权限,若是无可执行权限则通过chmod +x /etc/rc.d/rc.local进行授权

chmod +x /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=192.168.111.11: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中就可以看到启动后新生成的datalogs目录,端口23000也应被正常监听,还有一点就是文件存储路径下会生成多级存储目录,那么接下来看看是否启动成功了

netstat -unltp|grep fdfs

 

可以看到/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下实际文件存储路径下是否有创建好的多级目录呢:

 

 

如上图,可以看到/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下实际文件存储路径下是否有创建好的多级目录呢:

如上图,没有任何问题,data下有2561级目录,每级目录下又有2562级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。那么最后我们再看一下storage服务的端口监听情况:

 

如上图,可以看到此时已经正常监听tracker22122端口和storage23000端口,至此storage服务器就已经配置完成,确定了storage服务器启动成功后,还有一项工作就是看看storage服务器是否已经登记到 tracker服务器(也可以理解为trackerstorage是否整合成功),运行以下命令:

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

 

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

vim /etc/rc.d/rc.local

service fdfs_storaged 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目录下放一张图片

 

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

 

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

 

同时在之前配置的storage服务器的实际文件存储路径中也可以根据返回的路径找到实际文件:

 

---------------------------------------------------------------------------------------

安装Nginx

上面将文件上传成功了,但我们无法下载。因此安装Nginx作为服务器以支持Http方式访问文件。同时,后面安装FastDFSNginx模块也需要Nginx环境。

Nginx只需要安装到StorageServer所在的服务器即可,用于访问文件。我这里由于是单机,TrackerServerStorageServer在一台服务器上。

1、安装nginx所需环境 

gcc 安装

# yum install gcc-c++

PCRE pcre-devel 安装

# yum install -y pcre pcre-devel

zlib 安装

# yum install -y zlib zlib-devel

OpenSSL 安装

# yum install -y openssl openssl-devel

2、安装Nginx

① 下载nginx

# wget -c https://nginx.org/download/nginx-1.12.1.tar.gz

② 解压

# tar -zxvf nginx-1.12.1.tar.gz

# cd nginx-1.12.1

 

③ 使用默认配置

# ./configure

 

④ 编译、安装

# make

# make install

⑤ 启动nginx

# cd /usr/local/nginx/sbin/

# ./nginx

 

其它命令

# ./nginx -s stop

# ./nginx -s quit

# ./nginx -s reload

⑥ 设置开机启动

# vim /etc/rc.d/rc.local

添加一行:

/usr/local/nginx/sbin/nginx

 

# 设置执行权限

# chmod 755 rc.local

⑦ 查看nginx的版本及模块

/usr/local/nginx/sbin/nginx -V

 

⑧ 防火墙中打开Nginx端口(默认的 80

添加后就能在本机使用80端口访问了。

# vim /etc/sysconfig/iptables

添加如下端口行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

重启防火墙:

# service iptables restart

3、访问文件

简单的测试访问文件

① 修改nginx.conf

# vim /usr/local/nginx/conf/nginx.conf

添加如下行,将 /group1/M00 映射到 /ljzsg/fastdfs/file/data

location /group1/M00 {

    alias /ljzsg/fastdfs/file/data;

}

# 重启nginx

# /usr/local/nginx/sbin/nginx -s reload

 

② 在浏览器访问之前上传的图片、成功。

http://172.30.60.19/group1/M00/00/00/rB48E1rf8LGAXL2lAAB0KGv2sTo474.jpg

 

四、FastDFS 配置 Nginx 模块

1、安装配置Nginx模块

fastdfs-nginx-module 模块说明

  FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。

  假设 Tracker 服务器将文件上传到了 192.168.51.128,上传成功后文件 ID已经返回给客户端。

  此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.51.129,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 192.168.51.129 上取文件,就会出现文件无法访问的错误。

  而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

② 下载 fastdfs-nginx-module、解压

 

③ 配置Nginx

nginx中添加模块

# 先停掉nginx服务

# /usr/local/nginx/sbin/nginx -s stop

进入解压包目录

# cd nginx-1.10.0/

# 添加模块

# ./configure --add-module=/opt/fastdfs-nginx-module-master/src

重新编译、安装

# make && make install

④ 查看Nginx的模块

# /usr/local/nginx/sbin/nginx -V

 

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

# cd /softpackages/fastdfs-nginx-module-master/src

# cp mod_fastdfs.conf /etc/fdfs/

修改如下配置,其它默认

# 连接超时时间

connect_timeout=10

# Tracker Server

tracker_server=file.ljzsg.com:22122

# StorageServer 默认端口

storage_server_port=23000

# 如果文件IDuri中包含/group**,则要设置为true

url_have_group_name = true

# Storage 配置的store_path0路径,必须和storage.conf中的一致

store_path0=/ljzsg/fastdfs/file

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

# cd /softpackages/fastdfs-5.05/conf/

# cp anti-steal.jpg http.conf mime.types /etc/fdfs/

⑦ 配置nginx,修改nginx.conf

# vim /usr/local/nginx/conf/nginx.conf

修改配置,其它的默认

80端口下添加fastdfs-nginx模块

location ~/group([0-9])/M00 {

    ngx_fastdfs_module;

}

 

注意:

  listen 80 端口值是要与 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成80)相对应。如果改成其它端口,则需要统一,同时在防火墙中打开该端口。

  location 的配置,如果有多个group则配置location ~/group([0-9])/M00 ,没有则不用配group

⑧ 在/ljzsg/fastdfs/file 文件存储目录下创建软连接,将其链接到实际存放数据的目录,这一步可以省略。

# ln -s /ljzsg/fastdfs/file/data/ /ljzsg/fastdfs/file/data/M00

⑨ 启动nginx

 

# /usr/local/nginx/sbin/nginx

打印处如下就算配置成功

⑩ 在地址栏访问。

能下载文件就算安装成功。注意和第三点中直接使用nginx路由访问不同的是,这里配置 fastdfs-nginx-module 模块,可以重定向文件链接到源服务器取文件。

http://172.30.60.19/group1/M00/00/00/rB48E1rf9BGAG6W9AACCVif2Dzc224.jpg

每一个你不满意的当下,都有一个你不曾努力的曾经!
原文地址:https://www.cnblogs.com/shiqiangqiang/p/8942738.html