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;
        }

如图:
FastDFS环境搭建_第1张图片

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

FastDFS环境搭建_第2张图片

访问之前测试时生成的链接就可以看到图片了,这样算是完成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!!!

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

你可能感兴趣的:(FastDFS环境搭建)