Fastdfs安装心得

一.综述

都是以linux系统而言:

在安装fastdfs过程中无论是新手还是老手,都会遇到各种奇葩的问题。即便以前你成功安装过,但是给你一个新的环境,特定的版本,难免还会遇到各种问题,问题分类大致如下。

  1. 系统环境,比如缺少c编译器,PCRE等必要软件。这个需要逐一的去安装
  2. 版本匹配问题,这种问题非常常见,很多安装中的错误都是版本问题导致。并且解决起来不好解决。

 二.安装步骤

安装提要:

由于安装fastdfs和nginx都是源码安装,所以系统一定要提前装好c c++编译器。

查询是否安装了:rpm -qa|grep gcc rpm -qa|grep gc++

如果没有安装yum -y install gcc        yum -y install gc++

其他不容易知道还需要什么软件的可以安装过程中报错了再安装。

2.1安装fastdfs

V5.0以前的版本还依赖libevent;V5.0以后,不再依赖libevent。v5.04开始依赖libfastcommon,
v5版本从v5.05开始才是稳定版本,请使用v5版本的同学尽快升级到v5.05或更新的版本,建议升级到v5.07

对libevent的版本要求为1.4.x,建议使用table版本,如1.4.14b。注意,千万不要使用libevent 2.0非stable版本。

102423_egTn_2345835.png

本文中使用的libevent-2.0.21-stable.tar.gz+FastDFS_v4.05.tar.gz(如果使用了libevent就使用FastDFS5.0以下的版本)

如果用libfastcommon包,就使用FastDFS5.0以上的包。亲测libfastcommon+FastDFS_v5.05.tar.gz

安装步骤:

1.安装libevent

tar -zxvf libevent-2.0.21-stable.tar.gz

make && make install

这一步应该没什么问题,如有问题需要解决后方能继续。

注意:所有的libevent库都安装在了/usr/local/lib目录下

2.安装FastDFS

tar -zxvf FastDFS_v4.05.tar.gz

./make.sh

./make.sh install

这一步也没什么问题。

但是需要注意:

配置文件安装在了/etc/fdfs目录下

启动脚本和命令脚本安装在了/usr/local/bin目录下

一些依赖库安装在了/usr/local/lib目录下,比如libfdfscommon   libfdfsclient 这些依赖包也是fastdfs-nginx模块必须的。

 

接下来就是配置,启动,运行。确保fdfs能够顺利启动。

配置在这里不细说,这个不是这里重点。说启动,启动的过程中可能会遇到一个问题

报错: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

查看/usr/local/lib目录,发现确实有这个文件。为什么还是报没找到呢。

经过网上查找,看到了一个方法,那就是

ldd fdfs_storaged   查看这个命令所依赖的库。libevent-2.0的确没找到

[root@DHCC-SLCG bin]# ldd fdfs_storaged 
	linux-vdso.so.1 =>  (0x00007fff91e81000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00000039f7200000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00000039f6a00000)
	libevent-2.0.so.5 => not found
	libc.so.6 => /lib64/libc.so.6 (0x00000039f6e00000)
	/lib64/ld-linux-x86-64.so.2 (0x00000039f6600000)

LD_DEBUG=libs ./fdfs_storaged 查看这个命令查找库的轨迹  发现查找的时候压根就没有去/usr/local/lib目录下查找,解决办法就是在/usr/lib64目录下建一个链接指向过来

ln -s /usr/local/bin/libevent-2.0.so.5  /usr/lib64/libevent-2.0.so.5

[root@DHCC-SLCG bin]# LD_DEBUG=libs ./fdfs_storaged 
       find library=libpthread.so.0 [0]; searching
           search cache=/etc/ld.so.cache
           trying file=/lib64/libpthread.so.0
  
      find library=libdl.so.2 [0]; searching
	      search cache=/etc/ld.so.cache
	      trying file=/lib64/libdl.so.2
      
      find library=libevent-2.0.so.5 [0]; searching
              search cache=/etc/ld.so.cache
              search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64		(system search path)
	      trying file=/lib64/tls/x86_64/libevent-2.0.so.5
	      trying file=/lib64/tls/libevent-2.0.so.5
	      trying file=/lib64/x86_64/libevent-2.0.so.5
	      trying file=/lib64/libevent-2.0.so.5
	      trying file=/usr/lib64/tls/x86_64/libevent-2.0.so.5
	      trying file=/usr/lib64/tls/libevent-2.0.so.5
	      trying file=/usr/lib64/x86_64/libevent-2.0.so.5
	      trying file=/usr/lib64/libevent-2.0.so.5

再次启动,查看启动日志tracker.log 和storage.log如果没有error则证明启动成功了

然后使用命令fdfs_upload_file命令上传一个文件,能在storage/00/00目录下看到这个文件,证明fdfs安装成功,并且能正常工作了。

2.2安装nginx

fdfs推荐使用nginx和apache服务器作为http服务器提供对外http服务。

在安装过程中这一步遇到了很多问题,最后发现是版本问题。

需要的包fast-nginx-module和nginx

在这里,一开始我使用的是fastdfs-nginx-module_v1.11.tar.gz,一开始一直报错

/opt/nginx-lib/fastdfs-nginx-module/src/common.c: In function ‘fdfs_mod_init’:
/opt/nginx-lib/fastdfs-nginx-module/src/common.c:167: error: ‘g_fdfs_path_count’ undeclared (first use in this function)
/opt/nginx-lib/fastdfs-nginx-module/src/common.c:167: error: (Each undeclared identifier is reported only once
/opt/nginx-lib/fastdfs-nginx-module/src/common.c:167: error: for each function it appears in.)

主要意思是:g_fdfs_path_count没有声明,第一次使用

经过多方查找,查看common.c文件,发现里面的确有g_fdfs_path_count这个函数。里面头有引用fdfs相关的依赖库,而这个库是有Fastdfs安装时提供的。

解决方式:要么把Fastdfs重装,换一个版本,而这个版本里有g_fdfs_path_count这个函数的库。

还有一种方式就是换一个fastdfs-nginx-module,找一个common.c里面没有使用这个函数g_fdfs_path_count的包。顺着这个思路,换fastdfs太麻烦,并且现在的fastdfs是正常工作的,于是我尝试换了fastdfs-nginx-module_v1.14.tar.gz打开里面的common.c文件,搜索了一下里面没有用到g_fdfs_path_count这个函数,应该就可以了。

最后实践证明,的确是可以的,安装很顺利.

总结:

fastdfs-nginx-module_v1.14.tar.gz  Fastdfs4.05到5.0版本的是匹配的

而fastdfs-nginx-module_v1.11.tar.gz 应该与4.0一下版本是匹配的(未经验证)

 

 

 

转载于:https://my.oschina.net/yibuliushen/blog/870539

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值