zoukankan      html  css  js  c++  java
  • FastDFS环境搭建

    安装环境准备

    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!!!

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



    转自:扑棱扑棱的小菜鸟

  • 相关阅读:
    C++ 安全字符串拼接
    C code 字符串与整数的相互转化
    深入解析:分布式系统的事务处理经典问题及模型
    .NET分布式事务处理总结【下】
    用csc命令行手动编译cs文件
    委托和事件
    C#中的lock关键字
    SQL索引详解
    Quartz.NET 入门
    使用Topshelf创建Windows服务
  • 原文地址:https://www.cnblogs.com/qq128/p/13489600.html
Copyright © 2011-2022 走看看