zoukankan      html  css  js  c++  java
  • FastDfs搭建笔记

    继上一篇博文,对fds做了一些个人的理解简介,现在需要开始实战搭建操作,同样大部分步骤来自于网络取材,还有个人的一些理解的注释说明,如有误,请谅解辛苦指出。

    本次使用单个虚拟机搭建,所以Tracker和Storage在同一服务器,实际生产应用中,Tracker和Storage必须在不同服务器,Tracker和Storage各自至少2台服务器,否则无法达到fds的应用意义。

    一. 软件安装

    1. 安装编译环境

    FastDFS及依赖程序目前是使用C语言进行编译,所以要在Linux系统环境中,安装C语言框架,用于之后的编译安装。
    yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel wget unzip perl pcre-devel zlib-devel net-tools iptables-services telnet setuptool ntsysv iptables system-config-securitylevel-tui

    2. 安装软件准备

    搭建fds需要以下依赖程序和fds安装包,将以下软件包下载后,上传到linux服务器中指定目录。

    nginx_upstream_check_module-master.zip
    nginx-1.12.1.tar.gz
    keepalived-1.4.3.tar.gz
    FastDFS_v5.08.tar.gz
    fastdfs-nginx-module_v1.16.tar.gz
    libfastcommon-master.zip
    ngx_cache_purge-2.3.tar.gz
    pcre-8.34.tar.gz
    zlib-1.2.11.tar.gz

    3. fds解压及编译安装

    Linux系统中,安装程序主要使用编译安装,即:依赖C语言框架,先进行编译,再进行安装。

    在依赖程序安装完成后,重点开始fds的安装部分。

    安装过程:1.解压安装包 → 2.编译 → 3.安装

    ###进入拷贝目录
    cd /usr/local/src
    ###解包,并生成同名文件夹,并保存原始安装包
    tar -xzvf FastDFS_v5.08.tar.gz

    ###进入同名文件夹
    cd FastDFS/
    ###编译并安装
    ./make.sh && ./make.sh install

    ###输出屏幕信息,可省略
    echo ""
    echo " ---== FastDF 5.08 Soft Install Ok... ==---"
    echo ""
    sleep 3

    4. Tracker安装及配置

    ###判断/data/fastdfs路径下是否有fastdfs目录,有则忽略,无则创建

    if [ ! -d /data/fastdfs ]; then mkdir -p /data/fastdfs; fi

    ###将/etc/fdfs下的tracker.conf.sample,复制到/etc/fdfs下,并新生成文件tracker.conf,(生成协调器配置文件)

    cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

    ###检测/etc/fdfs/tracker.conf中是否有内容“base_path=/home/yuqing/fastdfs!base_path”,有则

    ###替换为“base_path=/data/fastdfs!g' /etc/fdfs/tracker.conf”,无则忽略

    sed -i 's!base_path=/home/yuqing/fastdfs!base_path=/data/fastdfs!g' /etc/fdfs/tracker.conf

    ###将/etc/fdfs下的client.conf.sample,复制到/etc/fdfs下,并新生成文件client.conf (生成客户端配置文件)

    cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

    ###检测/etc/fdfs/ client.conf中是否有内容“base_path=/home/yuqing/fastdfs”,有则替换为

    ###“base_path=/data/fastdfs”,无则忽略

    sed -i 's!base_path=/home/yuqing/fastdfs!base_path=/data/fastdfs!g' /etc/fdfs/client.conf

    ###检测/etc/fdfs/ client.conf中是否有内容“tracker_server=”,有则使用#注释掉,无则忽略

    sed -i 's!tracker_server=!#tracker_server=!g' /etc/fdfs/client.conf

    ###在/etc/fdfs/client.conf尾部增加内容“tracker_server=192.168.136.132:22122”,此为配置协调

    ###服务器地址

    echo "tracker_server=192.168.136.132:22122" >> /etc/fdfs/client.conf    # modify

     

    ###在/etc/rc.d/rc.local尾部,增加内容“/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start”,此为

    ###设置协调器服务,开机启动

    echo "/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start" >> /etc/rc.d/rc.local

    ###为root用户增加rc.local文件的执行权限

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

    #/etc/rc.d/rc.local

    5. Storage安装及配置

    ###检测/data下是否有相应目录,没有则创建,有则忽略

    if [ ! -d /data/fastdfs ]; then mkdir -p /data/fastdfs; fi

    if [ ! -d /data/fastdfs0 ]; then mkdir -p /data0/fastdfs0; fi

    if [ ! -d /data/fastdfs0 ]; then mkdir -p /data1/fastdfs1; fi

    if [ ! -d /data/fastdfs0 ]; then mkdir -p /data2/fastdfs2; fi

    if [ ! -d /data/fastdfs0 ]; then mkdir -p /data3/fastdfs3; fi

    ###将程序安装的原始配置文件,复制到指定目录,同前文

    cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs/

    cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs/

    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

    ###在指定文件中检测内容,并替换,无则忽略,同前文

    sed -i 's!base_path=/home/yuqing/fastdfs!base_path=/data/fastdfs!g' /etc/fdfs/storage.conf

    sed -i 's!tracker_server=!#tracker_server=!g' /etc/fdfs/storage.conf

    sed -i 's!store_path0=!#store_path0=!g' /etc/fdfs/storage.conf

    ###在指定文件内的尾部增加内容,此为配置存储节点的连接地址

    echo "" >> /etc/fdfs/storage.conf

    echo "tracker_server=192.168.136.132:22122" >> /etc/fdfs/storage.conf

    ###在指定文件内部的尾部增加内容,此为配置文件存储目录

    echo "" >> /etc/fdfs/storage.conf

    echo "store_path0=/data0/fastdfs0" >> /etc/fdfs/storage.conf

    echo "store_path1=/data1/fastdfs1" >> /etc/fdfs/storage.conf

    echo "store_path2=/data2/fastdfs2" >> /etc/fdfs/storage.conf

    echo "store_path3=/data3/fastdfs3" >> /etc/fdfs/storage.conf

    ###在指定文件中检测内容,并替换,无则忽略,同前文

    sed -i 's!store_path_count=1!store_path_count=4!g' /etc/fdfs/storage.conf

    ###将内容写入服务器启动配置文件中,此为配置存储节点服务开机启动,同前文

    echo "/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start" >> /etc/rc.d/rc.local

    ###为root用户增加文件的执行权限,因为正常情况tracker和storage应该在不同的服务器,所

    ###以要分别执行,中小型实验室因为用不到太多服务器组,所以建议将tracker和storage安装在

    ###同一服务器,以便在某台服务器宕机的情况下,另外一台也能进行完整的fastdfs的运行。

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

    #/etc/rc.d/rc.local

    ###编辑存储节点配置文件

    vim /etc/fdfs/storage.conf

    group_name=group1 ###服务器组命名

    6. Nginx的安装及配置

    6.1 安装

    ###安装nginx网络代理服务,说明同前文

    cd /usr/local/src

    tar -zxvf pcre-8.34.tar.gz

    cd /usr/local/src

    tar -zxvf zlib-1.2.11.tar.gz

    cd /usr/local/src

    tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

    sed -i 's!CORE_INCS=!#CORE_INCS=!g' /usr/local/src/fastdfs-nginx-module/src/config

    echo "CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"" >> /usr/local/src/fastdfs-nginx-module/src/config

    cd /usr/local/src

    tar -zxvf nginx-1.12.1.tar.gz

    cd /usr/local/src/nginx-1.12.1

    ./configure --prefix=/usr/local/nginx

    --with-http_stub_status_module

    --with-debug

    --add-module=/usr/local/src/fastdfs-nginx-module/src

    --with-pcre=/usr/local/src/pcre-8.34

    --with-zlib=/usr/local/src/zlib-1.2.11

    make

    sleep 3

    make install

    sleep 3

     

    6.2 配置

    /usr/bin/cp -f /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

    mkdir -p /data/log

    sed -i 's!base_path=/tmp!base_path=/data/log!g' /etc/fdfs/mod_fastdfs.conf

    sed -i 's!store_path0=/home/yuqing/fastdfs!#store_path0=/home/yuqing/fastdfs!g' /etc/fdfs/mod_fastdfs.conf

    sed -i 's!tracker_server=!#tracker_server=!g' /etc/fdfs/mod_fastdfs.conf

    sed -i 's!url_have_group_name = false!url_have_group_name = true!g' /etc/fdfs/mod_fastdfs.conf

    echo "tracker_server=192.168.136.132:22122" >> /etc/fdfs/mod_fastdfs.conf

    echo "" >> /etc/fdfs/mod_fastdfs.conf

    echo "store_path0=/data0/fastdfs0" >> /etc/fdfs/mod_fastdfs.conf

    echo "store_path1=/data1/fastdfs1" >> /etc/fdfs/mod_fastdfs.conf

    echo "store_path2=/data2/fastdfs2" >> /etc/fdfs/mod_fastdfs.conf

    echo "store_path3=/data3/fastdfs3" >> /etc/fdfs/mod_fastdfs.conf

    ###修改存储节点的磁盘挂载点数量,用于实现扩容

    sed -i 's!store_path_count=1!store_path_count=4!g' /etc/fdfs/mod_fastdfs.conf   # storage.conf 相同

    echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.d/rc.local

    ln -s /data0/fastdfs0/data  /data0/fastdfs0/M00

    ln -s /data1/fastdfs1/data  /data1/fastdfs1/M01

    ln -s /data2/fastdfs2/data  /data2/fastdfs2/M02

    ln -s /data3/fastdfs3/data  /data3/fastdfs3/M03

    ln -s /data0/fastdfs0/data  M00

    ln -s /data1/fastdfs1/data  M01

    ln -s /data2/fastdfs2/data  M02

    ln -s /data3/fastdfs3/data  M03

    ###编辑代理服务配置文件

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

        server {

            listen       8888;             # /etc/fdfs/storage.conf  http.server_port=8888

            server_name  localhost;

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {

                root   html;

                index  index.html index.htm;

            }

            ###增加各个软链接对应目录地址,用于外部请求时候进行地址翻译

            location /group1/M00 {

                root /data0/fastdfs0;

                ngx_fastdfs_module;

            }

            location /group1/M01 {

                root /data1/fastdfs1;

                ngx_fastdfs_module;

            }  

            location /group1/M02 {

                root /data2/fastdfs2;

                ngx_fastdfs_module;

            }

            location /group1/M03 {

                root /data3/fastdfs3;

                ngx_fastdfs_module;

            }

    ###参考命令

    /usr/local/nginx/sbin/nginx

    /usr/local/nginx/sbin/nginx -s stop | start | reload

    二. 防火墙设置

    firewall-cmd --zone=public --add-port=23000/tcp --permanent #Storage服务端口
    firewall-cmd --zone=public --add-port=22122/tcp --permanent #Tracker服务端口
    firewall-cmd --zone=public --add-port=8888/tcp --permanent #Nginx转发服务端口
    firewall-cmd --zone=public --add-port=8080/tcp --permanent #Nginx网页端口服务

    firewall-cmd --reload #重启防火墙

     firewall-cmd --zone=public --list-ports #查看端口开放情况

    三.检查相关服务开启情况

    systemctl status firewalld.service  #防火墙状态

      ps -aux | grep fdfs #Storage和Tracker服务状态,由于是使用系统rc.local自启动文件托管开机启动,所以使用systemctl 无法查询到fds相关服务,这里使用进程查询

    四. 测试

    使用的开发同事编写的测试小工具

    1. 连接测试

    2. 文件上传测试

    3. 验证

    3.1 根据上传测试中,测试工具反馈的地址进入虚拟机中进行查看验证

     3.2 网页访问验证

    个人总结:在安装搭建的过程中,需要注意较多地方的配置,尤其是在开机启动服务方面,网上有很多方法,我目前使用的是比较原始的开启启动方式。

    如果有条件的情况下,多进行实际操作,加深记忆和理解。

  • 相关阅读:
    【C++】<bits/stdc++.h>
    【网易】被3整除
    【TCP/IP详解】UDP:用户数据报协议
    【网易】牛牛找工作
    【C++】<numeric>中iota函数:递增序列填充

    今天好像找到C语言延迟输出的原因了
    C语言第2
    c语言新知
    glade No package 'libxml-2.0' found
  • 原文地址:https://www.cnblogs.com/airlinp/p/12408174.html
Copyright © 2011-2022 走看看