zoukankan      html  css  js  c++  java
  • Centos7 FastDFS 搭建

    安装libfastcommon

    首先第一步是安装libfastcommon,我这里将libfastcommon上传到的/opt目录下,直接解压:

    yum -y install gcc-c++

    yum -y install unzip zip

    unzip libfastcommon-master.zip

     

    进入目录

    ./make.sh

    ./make.sh install

     

    至此libfastcommon就已经安装成功了,但注意一下上图中红色框标注的内容,libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要重新设置软链接(类似于Windows的快捷方式):

    ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

    ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

    ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so

    ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

    设置完毕后就可以开始安装fastdfs

    安装FastDFS

    tar -zxvf fastdfs-5.05.tar.gz

     

    进入目录

    ./make.sh

    ./make.sh install

     

    没错,正是安装到了/etc/fdfs中,我们看一下该目录下的文件:

     

    安装成功后就会生成如上的3.sample文件,我们再分别拷贝出3个后面用的正式的配置文件

    cp client.conf.sample client.conf

    cp storage.conf.sample storage.conf

    cp tracker.conf.sample tracker.conf

    之后再查看一下/etc/fdfs的文件目录

     

    至此FastDFS已经安装完毕,接下来的工作就是依次配置TrackerStorage了。

    Tracker

    在配置Tracker之前,首先需要创建Tracker服务器的文件路径,即用于存储Tracker的数据文件和日志文件等,我这里选择在/opt目录下创建一个fastdfs_tracker目录用于存放Tracker服务器的相关文件:

    mkdir /opt/fastdfs_tracker

    接下来就要重新编辑上一步准备好的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次做以下修改:

    disabled=false #启用配置文件(默认启用)

    port=22122         #设置tracker的端口号,通常采用22122这个默认端口

    base_path=/opt/fastdfs_tracker  #设置tracker的数据文件和日志目录

    http.server_port=6666           #设置http端口号,默认为8080

    配置完成后就可以启动Tracker服务器了,但首先依然要为启动脚本创建软引用,因为fdfs_trackerd等命令在/usr/local/bin中并没有,而是在/usr/bin路径下:

    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

    最后通过命令启动Tracker服务器:

    service fdfs_trackerd start

     

    如果启动命令执行成功,那么同时在刚才创建的tracker文件目录/opt/fastdfs_tracker中就可以看到启动后新生成的datalogs目录,tracker服务的端口也应当被正常监听,最后再通过netstat命令查看一下端口监听情况没有 ifconfig netstat -an 的话安装 net-tools package

    yum install net-tools

    netstat -unltp|grep fdfs

     

    确认tracker正常启动后可以将tracker设置为开机启动,打开/etc/rc.d/rc.local并在其中加入以下配置:

    vim /etc/rc.d/rc.local

    service fdfs_trackerd start

     

    如果重启后发现未能自动启动则通过命令ll /etc/rc.d/rc.local检查一下rc.local是否具备可执行权限,若是无可执行权限则通过chmod +x /etc/rc.d/rc.local进行授权

    chmod +x /etc/rc.d/rc.local

    Tracker至此就配置好了,接下来就可以配置FastDFS的另一核心——Storage

    Storage

    同理,步骤基本与配置Tracker一致,首先是创建Storage服务器的文件目录,需要注意的是同Tracker相比我多建了一个目录,因为Storage还需要一个文件存储路径,用于存放接收的文件:

    mkdir /opt/fastdfs_storage

    mkdir /opt/fastdfs_storage_data

    接下来修改/etc/fdfs目录下的storage.conf配置文件,打开文件后依次做以下修改:

    disabled=false                          #启用配置文件(默认启用)

    group_name=group1                       #组名,根据实际情况修改

    port=23000                              #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致

    base_path=/opt/fastdfs_storage          #设置storage数据文件和日志目录

    store_path_count=1                      #存储路径个数,需要和store_path个数匹配

    store_path0=/opt/fastdfs_storage_data   #实际文件存储路径

    tracker_server=192.168.111.11:22122     #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功(此处的ip是我的CentOS虚拟机ip

    http.server_port=8888                   #设置 http 端口号

    配置完成后同样要为Storage服务器的启动脚本设置软引用:

    ln -s /usr/bin/fdfs_storaged /usr/local/bin

    接下来就可以启动Storage服务了:

    service fdfs_storaged start

     

    同理,如果启动成功,/opt/fastdfs_storage中就可以看到启动后新生成的datalogs目录,端口23000也应被正常监听,还有一点就是文件存储路径下会生成多级存储目录,那么接下来看看是否启动成功了

    netstat -unltp|grep fdfs

     

    可以看到/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下实际文件存储路径下是否有创建好的多级目录呢:

     

     

    如上图,可以看到/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下实际文件存储路径下是否有创建好的多级目录呢:

    如上图,没有任何问题,data下有2561级目录,每级目录下又有2562级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。那么最后我们再看一下storage服务的端口监听情况:

     

    如上图,可以看到此时已经正常监听tracker22122端口和storage23000端口,至此storage服务器就已经配置完成,确定了storage服务器启动成功后,还有一项工作就是看看storage服务器是否已经登记到 tracker服务器(也可以理解为trackerstorage是否整合成功),运行以下命令:

    /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

     

    如上所示,看到192.168.111.11 ACTIVE 字样即可说明storage服务器已经成功登记到了tracker服务器,同理别忘了添加开机启动,打开/etc/rc.d/rc.local并将如下配置追加到文件中:

    vim /etc/rc.d/rc.local

    service fdfs_storaged start

     

    至此我们就已经完成了fastdfs的全部配置,此时也就可以用客户端工具进行文件上传下载的测试了。

    初步测试

    测试时需要设置客户端的配置文件,编辑/etc/fdfs目录下的client.conf 文件,打开文件后依次做以下修改:

    base_path=/opt/fastdfs_tracker #tracker服务器文件路径

    tracker_server=192.168.111.11:22122 #tracker服务器IP地址和端口号

    http.tracker_server_port=6666 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来

    配置完成后就可以模拟文件上传了,先给/opt目录下放一张图片

     

    然后通过执行客户端上传命令尝试上传:

     

    这就表示我们的文件已经上传成功了,当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成,如下图:

     

    同时在之前配置的storage服务器的实际文件存储路径中也可以根据返回的路径找到实际文件:

     

    ---------------------------------------------------------------------------------------

    安装Nginx

    上面将文件上传成功了,但我们无法下载。因此安装Nginx作为服务器以支持Http方式访问文件。同时,后面安装FastDFSNginx模块也需要Nginx环境。

    Nginx只需要安装到StorageServer所在的服务器即可,用于访问文件。我这里由于是单机,TrackerServerStorageServer在一台服务器上。

    1、安装nginx所需环境 

    gcc 安装

    # yum install gcc-c++

    PCRE pcre-devel 安装

    # yum install -y pcre pcre-devel

    zlib 安装

    # yum install -y zlib zlib-devel

    OpenSSL 安装

    # yum install -y openssl openssl-devel

    2、安装Nginx

    ① 下载nginx

    # wget -c https://nginx.org/download/nginx-1.12.1.tar.gz

    ② 解压

    # tar -zxvf nginx-1.12.1.tar.gz

    # cd nginx-1.12.1

     

    ③ 使用默认配置

    # ./configure

     

    ④ 编译、安装

    # make

    # make install

    ⑤ 启动nginx

    # cd /usr/local/nginx/sbin/

    # ./nginx

     

    其它命令

    # ./nginx -s stop

    # ./nginx -s quit

    # ./nginx -s reload

    ⑥ 设置开机启动

    # vim /etc/rc.d/rc.local

    添加一行:

    /usr/local/nginx/sbin/nginx

     

    # 设置执行权限

    # chmod 755 rc.local

    ⑦ 查看nginx的版本及模块

    /usr/local/nginx/sbin/nginx -V

     

    ⑧ 防火墙中打开Nginx端口(默认的 80

    添加后就能在本机使用80端口访问了。

    # vim /etc/sysconfig/iptables

    添加如下端口行:

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

    重启防火墙:

    # service iptables restart

    3、访问文件

    简单的测试访问文件

    ① 修改nginx.conf

    # vim /usr/local/nginx/conf/nginx.conf

    添加如下行,将 /group1/M00 映射到 /ljzsg/fastdfs/file/data

    location /group1/M00 {

        alias /ljzsg/fastdfs/file/data;

    }

    # 重启nginx

    # /usr/local/nginx/sbin/nginx -s reload

     

    ② 在浏览器访问之前上传的图片、成功。

    http://172.30.60.19/group1/M00/00/00/rB48E1rf8LGAXL2lAAB0KGv2sTo474.jpg

     

    四、FastDFS 配置 Nginx 模块

    1、安装配置Nginx模块

    fastdfs-nginx-module 模块说明

      FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。

      假设 Tracker 服务器将文件上传到了 192.168.51.128,上传成功后文件 ID已经返回给客户端。

      此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.51.129,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 192.168.51.129 上取文件,就会出现文件无法访问的错误。

      而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

    ② 下载 fastdfs-nginx-module、解压

     

    ③ 配置Nginx

    nginx中添加模块

    # 先停掉nginx服务

    # /usr/local/nginx/sbin/nginx -s stop

    进入解压包目录

    # cd nginx-1.10.0/

    # 添加模块

    # ./configure --add-module=/opt/fastdfs-nginx-module-master/src

    重新编译、安装

    # make && make install

    ④ 查看Nginx的模块

    # /usr/local/nginx/sbin/nginx -V

     

    ⑤ 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改

    # cd /softpackages/fastdfs-nginx-module-master/src

    # cp mod_fastdfs.conf /etc/fdfs/

    修改如下配置,其它默认

    # 连接超时时间

    connect_timeout=10

    # Tracker Server

    tracker_server=file.ljzsg.com:22122

    # StorageServer 默认端口

    storage_server_port=23000

    # 如果文件IDuri中包含/group**,则要设置为true

    url_have_group_name = true

    # Storage 配置的store_path0路径,必须和storage.conf中的一致

    store_path0=/ljzsg/fastdfs/file

    ⑥ 复制 FastDFS 的部分配置文件到/etc/fdfs 目录

    # cd /softpackages/fastdfs-5.05/conf/

    # cp anti-steal.jpg http.conf mime.types /etc/fdfs/

    ⑦ 配置nginx,修改nginx.conf

    # vim /usr/local/nginx/conf/nginx.conf

    修改配置,其它的默认

    80端口下添加fastdfs-nginx模块

    location ~/group([0-9])/M00 {

        ngx_fastdfs_module;

    }

     

    注意:

      listen 80 端口值是要与 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成80)相对应。如果改成其它端口,则需要统一,同时在防火墙中打开该端口。

      location 的配置,如果有多个group则配置location ~/group([0-9])/M00 ,没有则不用配group

    ⑧ 在/ljzsg/fastdfs/file 文件存储目录下创建软连接,将其链接到实际存放数据的目录,这一步可以省略。

    # ln -s /ljzsg/fastdfs/file/data/ /ljzsg/fastdfs/file/data/M00

    ⑨ 启动nginx

     

    # /usr/local/nginx/sbin/nginx

    打印处如下就算配置成功

    ⑩ 在地址栏访问。

    能下载文件就算安装成功。注意和第三点中直接使用nginx路由访问不同的是,这里配置 fastdfs-nginx-module 模块,可以重定向文件链接到源服务器取文件。

    http://172.30.60.19/group1/M00/00/00/rB48E1rf9BGAG6W9AACCVif2Dzc224.jpg

    每一个你不满意的当下,都有一个你不曾努力的曾经!
  • 相关阅读:
    UVa 11181 (条件概率) Probability|Given
    UVa 1636 (概率) Headshot
    UVa 1262 (第k字典序) Password
    HDU 4746 (莫比乌斯反演) Mophues
    HDU 1695 (莫比乌斯反演) GCD
    POJ 3090 (欧拉函数) Visible Lattice Points
    CodeForces Round #283 Div.2
    UVa 10820 (打表、欧拉函数) Send a Table
    UVa 1635 (唯一分解定理) Irrelevant Elements
    Java基础10 接口的继承与抽象类
  • 原文地址:https://www.cnblogs.com/shiqiangqiang/p/8942738.html
Copyright © 2011-2022 走看看