FastDFS环境搭建

说两句

搭建FastDFS踩了些坑,搞了快2天才搞定,记录操作步骤和踩过的坑。
FastDFS是一个开源的分布式文件系统。废话不多说,这是开源git地址:https://github.com/happyfish100
我的安装包全部是在git上下载的。

安装环境准备

  1. 依赖安装
    FastDFS基于C语言开发,安装FastDFS需要先将源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc
    yum install -y gcc gcc-c++
    FastDFS依赖libevent库,需要安装
    yum -y install libevent
  2. 安装包下载
    我喜欢的方式把需要的包一次性下载好,直接从git上下载安装包:
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz  #FastDFS安装包
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz #libfastcommon安装包
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz #

当然也可以装一个下载一个,为了方便一些,我以单个下载安装为例。

开始安装

  • 安装 libfastcommon

安装FastDFS还需要安装libfastcommon作为前提条件,首先准备安装包FastDFS和libfastcommon。

  1. 下载安装 libfastcommon,这里是通过wget下载
    wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
  2. 解压 libfastcommon,命令:
    tar-zxvf V1.0.7.tar.gz
  3. 进入目录编译,进入libfastcommon-1.0.7目录:
    cd libfastcommon-1.0.7
    编译:
    ./make.sh
  4. 安装,命令:
    ./make.sh install
  5. libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下,只需要将libfastcommon.so 拷贝过去即可,不需要全部拷贝,这一步重要
    cp /usr/lib64/libfastcommon.so /usr/lib
  • 安装FastDFS

FastDFS包含tracker、Storage

  1. 下载安装 FastDFS,这里也是通过wget下载。
    wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
  2. 解压
    tar -zxvf V5.11.tar.gz
  3. 编译,进入fastfds-5.05目录,命令:
    cd fastdfs-5.11/
    编译:
    ./make.sh
  4. 安装
    ./make.sh install
    安装任务已经完成了,就是这么简单。下面开始配置tracker、Storage
  • 配置tracker
    上述安装成功后,在/etc/目录下会有一个fdfs的目录,进入它。会看到四个.sample后缀的文件,这是作者给我们的示例文件,我们需要把其中的tracker.conf.sample文件改为tracker.conf配置文件并修改它。看命令:
    拷贝tracker.conf:
    cp tracker.conf.sample tracker.conf
    编辑:
    vim tracker.conf

    base_path=/home/yuqing/fastdfs
    改为:
    base_path=/data/fastdfs

注意:在启动tracker时,如果没有/data/fastdfs这个目录会启动失败,需要手动添加目录
mkdir -p /data/fastdfs

启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
设置开机自动启动,编辑文件
vim /etc/rc.d/rc.local
添加:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
以上操作已经完成了tracker的配置。启动命令我们可以优化一下,通过建立软链接的方式:

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/

重启服务器测试一下:
service fdfs_trackerd restart
查看一下监听端口:
netstat -unltp | grep fdfs

  • 配置Storage
    现在开始配置 Storage 服务,由于我这是单机器测试,你把 Storage 服务放在多台服务器也是可以的,它有Group(组)的概念,同一组内服务器互备同步,这里不再演示。直接开始配置,依然是进入/etc/fdfs的目录操作,首先进入它。会看到三个.sample后缀的文件,我们需要把其中的storage.conf.sample文件改为storage.conf配置文件并修改它。还看命令:
    拷贝storage.conf
    cp storage.conf.sample storage.conf
    编辑:
    vim storage.conf

    base_path=/home/yuqing/fastdfs修改为:base_path=/data/fastdfs/storage
    store_path0=/home/yuqing/fastdfs修改为:store_path0=/data/fastdfs/storage
    tracker_server=192.168.209.121:22122修改为:本机IP:22122

注意:/data/fastdfs目录下没有storage文件夹,此时需要手动创建
cd /data/fastdfs #进入目录
mkdir storage #创建文件

启动Storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
设置开机自动启动,编辑文件
vim /etc/rc.d/rc.local
添加:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
以上操作已经完成了Storage的配置。当然启动命令还是可以优化的,还是通过软链接的方式:
ln -s /usr/bin/fdfs_storaged /usr/local/bin/
重启服务器测试一下:
service fdfs_storaged restart
查看一下监听端口:
netstat -unltp | grep fdfs

  • 测试文件上传需要做的事情
    fastdfs安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作
    拷贝client.conf
    cp client.conf.sample client.conf
    编辑
    vim client.conf

    base_path=/home/yuqing/fastdfs修改和tracker.conf文件中base_path一样的配置路径,如:base_path=/data/fastdfs
    tracker_server=192.168.0.197:22122修改为本机IP:22122

  • 上传文件测试
    使用格式:
    /usr/bin/fdfs_test + 客户端配置文件地址 + upload + 上传文件
    例如将,/img/test.jpg 上传,键入命令:
    /usr/bin/fdfs_test /etc/fdfs/client.conf upload /img/test.jpg
    文件上传成功后,输出http文件访问路径:
    http://192.168.48.132/group1/M00/00/00/wKgwhFvEkZCAD_-1AAIWPJ2Hf5Y850.jpg
    文件保存路径:
    /data/fastdfs/storage/data/00/00/wKgShlu_gyGALPf_AAGttmZnfCs194.jpg
    由于现在还没有和nginx整合无法使用http下载

  • FastDFS和nginx整合

  1. 安装fastdfs-nginx-module
    wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
  2. 解压
    tar -zxvf V1.20.tar.gz
  3. fastdfs-nginx-module移动到/usr/local目录
    mv fastdfs-nginx-module /usr/local/
  4. 进入文件目录
    cd fastdfs-nginx-module/src/
  5. 修改config文件,查找下面这两行代码将
ngx_module_incs="/usr/local/include"
CORE_INCS="$CORE_INCS /usr/local/include"

修改为:

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

简单说就是把/usr/local/include,修改为/usr/include,切记一定要加上/usr/include/fastcommon/这个坑踩了好久,据了解是版本问题导致的!!!!

  1. 将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下
    cp mod_fastdfs.conf /etc/fdfs/
  2. 修改mod_FastDFS.conf的内容vim /etc/fdfs/mod_fastdfs.conf:
base_path=/tmp 修改为 base_path=/data/fastdfs
tracker_server=tracker:22122 修改为 tracker_server= 本机:22122
store_path0=/home/yuqing/fastdfs 修改为 store_path0=/data/fastdfs/storage
url_have_group_name=false 修改为 url_have_group_name=true
  1. 将libfdfsclient.so拷贝至/usr/lib下
    cp /usr/lib64/libfdfsclient.so /usr/lib
  • 安装nginx
    Nginx的安装需要有一些安装环境,nginx依赖包安装:
1、yum install gcc-c++
2、yum install -y pcre pcre-devel
3、yum install -y zlib zlib-devel
4、yum install -y openssl openssl-devel

下载nginx安装包
wget https://nginx.org/download/nginx-1.8.1.tar.gz
解压
tar -zxvf nginx-1.8.1.tar.gz
进入源码目录
cd nginx-1.8.1

创建nginx所需安装目录
mkdir -p /var/temp/nginx/client

执行

./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/fastdfs-nginx-module/src

执行完毕后会生成一个MakeFile文件,然后就就可在该路径下进行编译和安装了
编译:make
安装: make install

重要操作
虽然nginx安装成功了,但是会出现无法访问的问题,一个超级大的坑。
解决方式:进入fastdfs源码目录,源码的存放位置
cd /opt/fastdfs-5.11/conf/
将该子目录中的http.conf、mime.types拷贝到/etc/fdfs
cp http.conf /etc/fdfs
cp mime.types /etc/fdfs

  • Nginx配置
    在/usr/local/nginx/conf下,找到nginx.conf,增加配置信息:
    vim /usr/local/nginx/conf/nginx.conf
location /group1/M00/{
                ngx_fastdfs_module;
        }

如图:

重新加载nginx配置文件
cd /usr/local/nginx/sbin
./nginx -s reload
启动nginx
cd /usr/local/nginx/sbin
./nginx
如果出现下图表示nginx搭建成功了:

访问之前测试时生成的链接就可以看到图片了,这样算是完成FastDFS+nginx的整合了。

一个需要注意的小问题

如何机器重启nginx会出现启动失败的情况,错误信息如下:
nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)
解决方式:
1、在nginx安装目录,创建logs文件夹,我的安装目录是/usr/local/nginx/,直接在这个目录下创建logs文件夹
mkdir logs
2、修改nginx配置文件,vim /usr/local/nginx/conf/nginx.conf:
#pid logs/nginx.pid;的注释删除,路径修改为创建logs的路径,即
pid /usr/local/nginx/logs/nginx.pid;
OK!!!

偶!对了还有防火墙的问题,我想你能自己解决!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容