`

CentOS 6.3下FastDFS_v4.06的安装及其配置

阅读更多

  项目环境的整个搭建过程中FastDFS(分布式文件系统)是坑我最深最久的一个软件,主要里面夹着着nginx转发模块,所以现在要详细的写一篇博客来记录在搭建过程中遇到的问题,同时也是对自己花这么长时间和精力在上面的一个成果的浓缩。

 

  FastDFS本身的架构其实也是奔着集群去的,也就是说最正宗的做法应该是某几台机器只做Tracker(即Tracker群),某几台机器只做Storage(即Storage群),但是目前所搭建的开发环境根本没有那样的条件让我去搞,就只有两台云主机,然后其中一台上已经有了nginx作转发,因此在实际搭建过程中我的部署思路是这样的,其中一台主机上只跑Tracker服务(因为要跑Storage服务就需要装fastdfs-nginx-module作转发,会与已经存在的nginx发生冲突),而另外一台主机上既跑Tracker服务,又跑Storage服务,如此相当于两个Tracker服务,一个Storage服务。

 


 下面是我的详细安装及配置步骤

 

1.创建fdfs用户组和用户

 

groupadd fdfs
useradd fdfs -g fdfs

   

2.创建运行日志及数据存储目录

  

mkdir -p /home/fdfs/data/tracker # tracker运行日志及记录storage汇报心跳等dat文件
mkdir -p /home/fdfs/data/storage # storage运行日志及数据存储目录
mkdir -p /home/fdfs/data/nginx_fdfs # 为storage作转发的nginx运行日志存储目录)
mkdir -p /home/fdfs/data/client # 客户端访问运行日志存储目录

   

3.FastDFS编译需依赖libevent,要求版本1.4.x+,通过命令查看是否已经安装

  

rpm -qa | grep libevent

   

4.如果没有安装需要先准备好libevent-2.0.21-stable.tar.gz安装包,并通过如下命令安装;如果检测到已经安装且版本高于1.4,则跳过该步骤

  

#编译安装libevent
tar -zxvf libevent-2.0.21-stable.tar.gz 
cd libevent-2.0.21-stable
./configure --prefix=/usr/local/libevent
make clean
make && make install
 
ln -s /usr/local/libevent/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 # 创建软连接

   

5.准备好并上传所需要的软件

 

FastDFS_v4.06.tar.gz

fastdfs-nginx-module_v1.15.tar.gz

nginx-1.6.0.tar.gz

 

6.tracker和storage都需要安装的部分

  

tar -zxvf FastDFS_v4.06.tar.gz
cd FastDFS
 
#因为使用了单独的fdfs用户来运行fastdfs,所以需要修改make.sh
vi make.sh
 
修改 TARGET_PREFIX=/usr/local   --> TARGET_PREFIX=/home/fdfs/app
修改 TARGET_CONF_PATH=/etc/fdfs --> TARGET_CONF_PATH=/home/fdfs/app/conf
 
#编译安装
./make.sh C_INCLUDE_PATH=/usr/local/libevent/include LIBRARY_PATH=/usr/local/libevent/lib
./make.sh install

  

 7.storage需要安装的部分

  

yum -y install pcre pcre-devel gcc gcc-c++ zlib-devel openssl-devel # 需要监测并安装的类库(因为要安装nginx-module)
 
#安装nginx-module 
tar -zxvf fastdfs-nginx-module_v1.15.tar.gz
cd fastdfs-nginx-module
 
#因为使用了单独的fdfs用户来运行fastdfs,所以需要修改config
vi src/config
 
修改所有 /usr/local          -->/home/fdfs/app
修改所有 /etc/fdfs           -->/home/fdfs/app/conf
 
#复制mod_fastdfs.conf到/home/fdfs/app/conf/目录下
cp /home/fdfs/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /home/fdfs/app/conf/
 
#安装nginx
tar -zxvf nginx-1.6.0.tar.gz
cd nginx-1.6.0/
 
#编译安装
./configure --prefix=/home/fdfs/nginx_fdfs --add-module=/home/fdfs/soft/fastdfs-nginx-module/src
make && make install

   

8.配置tracker server

  

cd /home/fdfs/app/conf
vi tracker.conf
 
#存储的目录地址
base_path=/home/yuqing/fastdfs   ->  base_path=/home/fdfs/data/tracker
 
#运行fastdfs的用户和组,默认为空,即为当前用户
run_by_group=          -> run_by_group=fdfs
run_by_user=           -> run_by_user=fdfs
 
#日志级别,默认为info,相比各种java项目产生的log,debug级别产生的log简直就是可以忽略,大胆的置为debug吧
log_level=info        -> log_level=debug
 
#使用ip或者sid模式,这三个选项是fastdfs的无索引特性决定的。v4之前文件名是由storage server生成,里头包含了源storage server ip,可以通过反解文件名出ip,从而定位到文件。但是一旦机房搬迁或者ip发生变化,反解出的ip就定位不到了,因此v4针对此问题做了优化,加入sid的概念,增加了配置文件配置sid跟ip的关系,将sid加入到文件名的生成中,反解后根据对应关系即可定位到ip,只要保证整个集群内sid是唯一的即可,可选值:ip、id
use_storage_id=false   -> use_storage_id=true
storage_ids_filename=storage_ids.conf -> storage_ids_filename=/home/fdfs/app/conf/storage_ids.conf
id_type_in_filename=ip -> id_type_in_filename=id
 
#设置是否使用连接池
use_connection_pool=false     -> use_connection_pool=true
 
#将源安装包中的storage_ids.conf,移动到安装后的配置文件夹,编辑storage server id和ip地址的对应关系
cp -r /usr/src/soft/FastDFS/conf/storage_ids.conf /home/fdfs/app/conf
 
cd /home/fdfs/app/conf
vi storage_ids.conf
#<id>    <group_name>     <ip_or_hostname>
1000001  group1           117.79.146.5

  

 9.启动tracker server

  

chown -R fdfs:fdfs /home/fdfs # 改变目录所有者
cd /home/fdfs/app/bin
 
#启动tracker
./fdfs_trackerd /home/fdfs/app/conf/tracker.conf
 
#查看tracker log,检查是否安装成功
tail -100f /home/fdfs/data/tracker/logs/trackerd.log

   

10.配置storage server

  

vi /home/fdfs/app/conf/storage.conf
 
#存储数据和log基目录
base_path=/home/yuqing/fastdfs -> /home/fdfs/data/storage
 
#设置上传数据的挂载点,count的个数和storage_path的个数一致,从0开始,一个一行
storage_path_count=1
storage_path0=/home/yuqing/fastdfs -> /home/fdfs/data/storage
 
#设置tracker地址(需分2行写2个tracker的地址)
tracker_server=117.79.146.5:22122
 
#设置运行FastDFS的用户组
run_by_group= -> run_by_group=fdfs
run_by_user=  -> run_by_user=fdfs
 
#日志级别设置,依旧大胆的设置成debug吧
log_level=info ->log_level=debug
 
#是否使用连接池
use_connection_pool=false -> use_connection_pool=true

  

11.启动storage server

  

cd /home/fdfs/app/bin
 
#启动storage
./fdfs_storaged /home/fdfs/app/conf/storage.conf
 
#如果屏幕上打印了一堆如下,那就ok了
data path:/home/fdfs/storage/data,mkdir sub dir...
mkdir data path: 00 ...
mkdir data path: 01 ...
mkdir data path: 02 ...
mkdir data path: 03 ...
.......................
data path: /home/fastdfs/storage/data, mkdir sub dir done.

   

12.配置客户端client

  

vi /home/fdfs/app/conf/client.conf
 
#配置client客户端存储log的地址
base_path=/home/yuqing/fastdfs -> base_path=/home/fdfs/data/client
 
#设置tracker地址
tracker_server=192.168.209.121:22122 -> tracker_server=117.79.146.5:22122
 
#日志级别设置
log_level=info -> log_level=debug
 
#是否使用连接池
use_connection_pool=false -> use_connection_pool=true
 
#从tracker.conf 复制相同的配置项
load_fdfs_paramters_from_tracker=false -> load_fdfs_paramters_from_tracker=true

   

13.测试上传文件

  

cd /home/fdfs/app/bin 
./fdfs_test /home/fdfs/app/conf/client.conf upload test.txt 

   

14.配置nginx_module

  

cd /home/fdfs/app/conf
vi mod_fastdfs.conf 
 
#配置存放module产生log的位置 
base_path=/home/fdfs/data/nginx_fdfs
 
#从tracker.conf 复制相同的配置项
load_fdfs_parameters_from_tracker=false -> load_fdfs_parameters_from_tracker=true
 
#tracker地址,一行一个地址
tracker_server=192.168.25.11:22122 -> tracker_server=117.79.146.5:22122
 
#url中是否包含组名,该项与nginx配置的location相关
url_have_group_name = false -> url_have_group_name = true
 
#同storage.conf中的配置(至关重要,我就是被这个坑掺了,曾因此一度怀疑自己的能力)
store_path_count=1
store_path0=/home/fdfs/data/storage
 
#log文件名
log_filename=/home/fdfs/data/nginx_fdfs/mod_fastdfs.log
 
#日志级别设置
log_level=info -> log_level=debug
 
#扩展content_type
http.need_find_content_type=false -> http.need_find_content_type=true

 

15.配置nginx

  

cd /home/fdfs/nginx_fdfs/conf
vi nginx.conf

  

user  root; # 这里一定要设置,否则会出现权限不足
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
   
    server {
        listen       7070;
        server_name  localhost;

        charset koi8-r;

        access_log  logs/7070server.log  main;
      
        location ~* /group1/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ {
            root /home/fdfs/data/storage/data/;
            set $h $2;
            set $w $3;
            if ($h = "0") {
                rewrite /group1/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/$1.$4 last;
            }
            if ($w = "0") {
                rewrite /group1/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/$1.$4 last;
            }

            if ($h != "0"){
                  rewrite /group1/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/$1.$4 break;
            }
            if ($w != "0"){
                  rewrite /group1/(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ /group1/$1.$4 break;
            }
        #image_filter resize $h $w;
        #image_filter_buffer 2M;

        try_files /group1/$1.$4  /group1/notfound.jpg;

        }

        location ~* /group1 {
            root /home/fdfs/data/storage/data/;
            ngx_fastdfs_module;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

  

 16.启动nginx

 

/home/fdfs/nginx_fdfs/sbin/nginx

 

17.如果报错如下:

./nginx: error while loading shared libraries: libfastcommon.so: cannot open shared object file: No such file or directory

 

解决方案:

ln -s /home/fdfs/app/lib/libfastcommon.so /usr/lib/libfastcommon.so

ln -s /home/fdfs/app/lib/libfastcommon.so /usr/lib64/libfastcommon.so

 

如果报错如下:

./nginx: error while loading shared libraries: libfdfsclient.so: cannot open shared object file: No such file or directory

 

解决方案:

ln -s /home/fdfs/app/lib/libfdfsclient.so /usr/lib/libfdfsclient.so

ln -s /home/fdfs/app/lib/libfdfsclient.so /usr/lib64/libfdfsclient.so

 

18.至此,FastDFS的相关安装及配置结束,相关的安装软件我会上传至附件。真心希望能够帮助到大家!

  • 大小: 84.9 KB
分享到:
评论

相关推荐

    centos7安装FastDFS_v5.08及配置

    本教程将详细介绍如何在CentOS 7操作系统上安装FastDFS v5.08版本,并进行基本配置。 首先,确保你的CentOS 7系统已经更新到最新版本,并安装了基础开发工具,包括GCC编译器和其他必要的库,通过运行以下命令: ``...

    CentOS 6.3(x86_64)下安装Oracle 11g R2

    CentOS 6.3(x86_64)下安装Oracle 11g R2

    Centos_6.3__DNS配置

    Centos_6.3__DNS 配置讲解

    CentOS 6.3(x86_64)下安装Oracle 10g R2 实战

    总结来说,本知识点详细介绍了在CentOS 6.3(x86_64)系统下安装Oracle 10g R2数据库的具体步骤和要求,包括硬件条件、系统配置、用户权限设置和内核参数调整等关键环节,为进行Oracle数据库安装提供了详尽的指导。...

    FastDFS_v5.04配置安装

    默认情况下,安装路径可能是/usr,但对于v5.04版本,需要修改为/usr/local,以避免与系统其他部分的路径冲突,或者与其他版本的FastDFS冲突。 安装libfastcommon和FastDFS_v5.04后,需要对FastDFS的配置文件进行...

    FastDFS_v5.02.tar.gz

    4. 配置安装:配置安装路径,执行`make install`,将FastDFS安装到指定位置。 5. 配置文件:编辑配置文件如`/etc/fdfs/trackercfg.conf`和`/etc/fdfs/storagecfg.conf`,配置Tracker和Storage服务器的相关参数。 6. ...

    CentOS-6.3-x86_64

    CentOS-6.3-x86_64-bin-DVD1/2

    CentOS 6.3 Oracle 11g_R2 安装文档

    CentOS 6.3 Oracle 11g_R2 安装文档,图文讲解,步骤详细!

    CentOS 6.3(x86_64)下安装Oracle 10g R2

    一、硬件要求 二、软件 三、系统安装注意 四、安装Oracle前的系统准备工作 五、安装Oracle,并进行相关设置 六、升级Oracle到patchset 10.2.0.4 七、使用rlwrap调用sqlplus中历史命令

    Centos6安装FastDFS分布式全套软件.zip

    fastdfs-nginx-module_v1.16.tar.gz, FastDFS_v4.06.tar.gz libevent-headers-1.4.13-4.el6.noarch.rpm libevent-doc-1.4.13-4.el6.noarch.rpm libevent-devel-1.4.13-4.el6.x86_64.rpm nginx-1.7.10.tar.gz

    CentOS6.3x86_64操作系统安装手册

    ### CentOS 6.3 x86_64 操作系统安装与配置详解 #### 一、系统安装步骤 ##### 第一步:进入硬件BIOS状态 - **操作方法**:开机时按下特定键(通常是F2、Del或Esc键)进入BIOS设置。 - **目的**:设置第一启动盘为...

    CentOS-6.3-x86_64-bin-DVD1to2.torrent

    CentOS-6.3-x86_64-bin-DVD1to2.torrent

    CentOS_FastDFS_install.zip

    标题中的"CentOS_FastDFS_install.zip"表明这是一个关于在CentOS操作系统上安装FastDFS的教程或资源包。FastDFS是一个开源的、轻量级的分布式文件系统,主要用于解决大容量存储和负载均衡的问题,尤其适合网站附件、...

    FastDFS_v5.05_分布式文件系统--集群的安装、配置、使用

    针对以上集群规划,安装配置FastDFS需要准备以下软件包: - FastDFS v5.05 - libfastcommon-master.zip(公共C函数库) - fastdfs-nginx-module v1.16 - nginx-1.6.2 安装步骤大致如下: 1. **安装依赖软件**:...

    centos6.3版本的安装于配置

    主要是针对配置centos6.3版本的安装、python26的安装、python26模块的安装、nginx服务的安装、hg安装、解决乱码问题及ftp问题,centos6.3版本的安装与配置,安装过程中的配置,安装包选择

    gperftools-devel-2.0-11.el6.3.x86_64.rpm

    gperftools-devel-2.0-11.el6.3.x86_64.rpm

    CentOS 6.3下mysql的卸载与安装全过程.

    本文将详细介绍在CentOS 6.3上如何卸载旧版本的MySQL并安装新版本的过程。 首先,我们来了解一下卸载MySQL的步骤: 1. **检查已安装的MySQL组件**: 使用`rpm -qa | grep -i mysql`命令可以列出所有与MySQL相关的...

    远程安装CentOS6.3

    远程安装 CentOS 6.3 并进行硬 RAID 配置 本文将指导用户如何远程安装 CentOS 6.3 操作系统,并在不同服务商的服务器上进行硬 RAID 配置。同时,本文还将详细介绍 CentOS 6.3 的安装过程和需求。 远程安装 CentOS ...

    CentOS 6.3 网络配置

    在 CentOS 6.3 中,默认的网络配置文件位于 /etc/sysconfig/network-scripts/ 目录下,其中 ifcfg-eth0 文件是我们需要编辑的文件。使用 vim 编辑器打开该文件,首次打开时会出现默认的配置信息。我们需要修改两个...

Global site tag (gtag.js) - Google Analytics