http://blog.csdn.net/xingjiarong/article/details/50559761

在前面的一篇中,我们分析了FastDFS的架构,知道了FastDFS是由客户端,跟踪服务器和存储服务器三部分组成,下面我们就来看一下如何动手搭建一个FastDFS的环境出来。这是FastDFS的主页:https://code.google.com/p/fastdfs/,上边有FastDFS的简单介绍和一些常用的下载。但是本人觉得,官网上的搭建过程过于简单,并且没有对一个异常提出解决方案,对于一个新手来说是很难搭建出一个满意的环境的,毕竟对FastDFS有较高的造诣的人也不会纠结怎么搭建环境,所以这里我总结了一下我的搭建过程和其中遇到的一些问题,希望对大家有所帮助,如果有什么问题还请大家积极指出。

一、环境声明

我觉得对于搭建环境的博客来说首先要做的就是声明博文中使用的环境是什么,好让看博客的人形成对照,好多的博主不说明自己的环境,一上来就开始执行命令,很多人跟着博主进行搭建,搭建了一大半了才发现自己和博主的环境根本就不一样,即浪费了时间又影响了心情。在这里我说明一下我的环境。我使用的是Ubuntu14.04 LTS 64位 作为搭建的主机,搭建单节点的FastDFS环境,注意是单节点的。我们先从最简单的入手,后边我会再写一篇如何搭建多节点的环境。为了方便恢复系统,我使用了VirtualBox虚拟了Ubuntu14.04 LTS,当然如果您想在物理机上搭建当然也可以。以下博客中出现的所有命令都在root权限下执行。

二、环境准备-安装libevent

FastDFS内部绑定了libevent作为http服务器,在V2.X版本以上必须安装libevent,本文安装的是V4.06版本,因此必须安装libevent。

如果已经安装了libevent,请确认安装路径是/usr , 因为FastDFS在编译源程序时,需要到此目录下查找一些依赖文件,否则编译FastDFS会出错。如果不是,建议首先卸载libevent,然后安装到 /usr 下。本文安装的是libevent-2.0.19-stable.tar.gz,下载地址:https://acelnmp.googlecode.com/files/libevent-2.0.19-stable.tar.gz,按照如下的步骤进行安装。

wget https://acelnmp.googlecode.com/files/libevent-2.0.19-stable.tar.gz
tar zxvf libevent-2.0.19-stable.tar.gz
./configure --prefix=/usr
make clean
make
make install

这样libevent就安装按成了。

三、安装FastDFS

1、首先下载FastDFS

wget https://fastdfs.googlecode.com/files/FastDFS_v4.06.tar.gz

2、解压缩

tar vxzf FastDFS_v4.06.tar.gz %FastDFS% 

注:这里的%FastDFS% 是解压目录,每个人根据自己的实际情况进行替换即可。

3、修改make.sh文件

首先执行如下命令查看一下自己的libpthread.a位于什么地方

find / -name 'libpthread.a'

结果为:/usr/lib/x86_64-linux-gnu/libpthread.a

同样的方法查看自己的libpthread.so文件为什么什么地方

find / -name 'libpthread.so'

结果为:/usr/lib/x86_64-linux-gnu/libpthread.so

找到make.sh中关于libpthread.a和libpthread.so的地方,在其中加入自己刚刚找到的文件位置。

原文件

if [ -f /usr/lib/libpthread.so ] || [ -f /usr/local/lib/libpthread.so ] ||
[ -f /lib64/libpthread.so ] || [ -f /usr/lib64/libpthread.so ] ||
[ -f /usr/lib/libpthread.a ] || [ -f /usr/local/lib/libpthread.a ] ||
[ -f /lib64/libpthread.a ] || [ -f /usr/lib64/libpthread.a ]; then
LIBS="$LIBS -lpthread"

修改后的文件

if [ -f /usr/lib/libpthread.so ] || [ -f /usr/local/lib/libpthread.so ] ||
[ -f /lib64/libpthread.so ] || [ -f /usr/lib64/libpthread.so ] ||
[ -f /usr/lib/x86_64-linux-gnu/libpthread.so ]|| [ -f /usr/lib/libpthread.a ] ||
[ -f /usr/lib/x86_64-linux-gnu/libpthread.a ] || [ -f /usr/local/lib/libpthread.a ] ||
[ -f /lib64/libpthread.a ] || [ -f /usr/lib64/libpthread.a ]; then
LIBS="$LIBS -lpthread"

这一步的目的是因为不同的机器pthread的类库的位置是不同的,如果不进行设置的话,在编译的时候就会出现找不到pthread等错误。

注意:有人的博客中写到为了支持http,要设置WITH_HTTPD=1等等,在我安装的v4.06中,FastDFS不再集成http的功能,如果想要通过http下载文件的话,需要配置单独的fastdfs-apache-module,后边的博客中我会单独说明如何配置。

4、修改client/fdfs_link_library.sh.in

找到以下的位置

将lib64改为lib,否则会出现文件不存在的错误。修改为如下所示:

5、开始安装

在FastDFS根目录下执行如下的命令进行安装,如果没有报错就说明安装成功了

./make.sh
./make.sh install

(转)分布式文件存储FastDFS(二)FastDFS安装的更多相关文章

  1. 分布式文件存储:FastDFS简单使用与原理分析

    引言 FastDFS 属于分布式存储范畴,分布式文件系统 FastDFS 非常适合中小型项目,在我接手维护公司图片服务的时候开始接触到它,本篇文章目的是总结一下 FastDFS 的知识点. 用了 2 ...

  2. .Net平台下,分布式文件存储的实现

    遇到的问题 对于Web程序,使用一台服务器的时候,客户端上传的文件一般也都是存储在这台服务器上.但在集群环境中就行不通了,如果每个服务器都存储自己接受到的文件,就乱套了,数据库中明明有这个附件的记录, ...

  3. 【网络爬虫入门05】分布式文件存储数据库MongoDB的基本操作与爬虫应用

    [网络爬虫入门05]分布式文件存储数据库MongoDB的基本操作与爬虫应用 广东职业技术学院  欧浩源 1.引言 网络爬虫往往需要将大量的数据存储到数据库中,常用的有MySQL.MongoDB和Red ...

  4. 分布式文件存储数据库 MongoDB

    MongoDB 简介 Mongo 并非芒果(Mango)的意思,而是源于 Humongous(巨大的:庞大的)一词. MongoDB 是一个基于分布式文件存储的 NoSQL 数据库.由 C++ 语言编 ...

  5. 修改Jupyter Notebook默认文件存储路径(已安装Anaconda)

    https://blog.csdn.net/weixin_44799144/article/details/91823079 修改Jupyter Notebook默认文件存储路径首先,安装好Anaco ...

  6. 分布式文件存储FastDFS(七)FastDFS配置文件具体解释

    配置FastDFS时.改动配置文件是非常重要的一个步骤,理解配置文件里每一项的意义更加重要,所以我參考了大神的帖子,整理了配置文件的解释.原帖例如以下:http://bbs.chinaunix.net ...

  7. (转) 分布式文件存储FastDFS(七)FastDFS配置文件详解

    http://blog.csdn.net/xingjiarong/article/details/50752586 配置FastDFS时,修改配置文件是很重要的一个步骤,理解配置文件中每一项的意义更加 ...

  8. (转) 分布式文件存储FastDFS(一)初识FastDFS

    http://blog.csdn.net/xingjiarong/article/details/50559849 一.FastDFS简介 FastDFS是一款开源的.分布式文件系统(Distribu ...

  9. 分布式文件存储FastDFS(一)初识FastDFS

    一.FastDFS简单介绍 FastDFS是一款开源的.分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发.作为一个分布式文件系统,它对文件进行管理. ...

随机推荐

  1. SecureCRT 8.0公布

    百度搜索到的7.3 注冊码生成器还是能够用于8.0的破解. 破解时,选择手动输入(Enter Licence Manually)产生的代码. 添加了一些特性,我最看重的是: 1.  能够在以下命令窗体 ...

  2. python列表可以加可以乘

    python列表可以加可以乘 list=['abcd',786,2.23,'runoob',70.2] tinylist = [123,'runoob'] print(list) print(list ...

  3. [Vue +TS] Use Two-Way Binding in Vue Using @Model Decorator with TypeScript

    Vue models, v-model, allow us to use two-way data binding, which is useful in some cases such as for ...

  4. C++对象内存分布(3) - 菱形继承(virtual)

    1.前言 本篇文章的全部代码样例.假设是windows上编译执行.则使用的是visual studio 2013.假设是RHEL6.5平台(linux kernal: 2.6.32-431.el6.i ...

  5. ORA-01925:maximum of 80 enabled roles exceeded

    ORA-01925:maximum of 80 enabled roles exceeded max_enabled_roles 9i的參数,10g及以后都不用了. 指定用户session的最大ena ...

  6. 处理new分配内存失败情况

    转自:http://www.51testing.com/html/70/n-827070.html 在C++语言中,我们经常会使用new给一个对象分配内存空间,而当内存不够会出现内存不足的情况.C++ ...

  7. Java 下的函数对象

    1. 举例 如我们要创建一个对大小写敏感的,按照字母序排序的 Set,我们需要向 Set 的构造器传入 String.CASE_INSENTIVE_ORDER 的比较器: Set<String& ...

  8. DVB-subtitle解析流程浅

    DTV包含SUBTITLE和TTX. PMT中分别有不同的描述符对应,如下图的TTX descripter=0x56.语言ISO-639="fin" subtitle descri ...

  9. /lib/dracut/hooks/shutdown/30-dm-shutdown.sh

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABVQAAAMACAIAAABEqXuoAAAgAElEQVR4nOydPWjryOK3VaZM8RYpU2 ...

  10. 手动安装jar包到Maven本地仓库

    接手别人的一个项目,Maven工程,导入后,某些jar包找不到,然后从同事那复制Maven本地仓库的文件夹到我的电脑,发现依旧找不到.问题大致总结为:本地maven仓库存在jar,但是依然报Missi ...