1. 程式人生 > >Centos下安裝FastDFS

Centos下安裝FastDFS

1.1 上傳

將課前資料中的檔案上傳到linux下的/home/leyou/fdfs目錄:

資料

1.2 安裝依賴

FastDFS執行需要一些依賴,在課前資料提供的虛擬中已經安裝好了這些依賴,如果大家想要從頭學習,可以按下面方式安裝:

1.2.1 安裝GCC依賴

GCC用來對C語言程式碼進行編譯執行,使用yum命令安裝:

sudo yum -y install gcc

1.2.2 安裝unzip工具

unzip工具可以幫我們對壓縮包進行解壓

sudo yum install -y unzip zip

1.2.3 安裝libevent

sudo
yum -y install libevent

1.2.4 安裝Nginx所需依賴

sudo yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

1.2.5 安裝libfastcommon-master

這個沒有yum包,只能通過編譯安裝:

  • 解壓剛剛上傳的libfastcommon-master.zip

    unzip libfastcommon-master.zip
    
  • 進入解壓完成的目錄:

    cd libfastcommon-master
    
  • 編譯並且安裝:

    sudo
    ./make.sh sudo ./make.sh install

到這裡為止,所有依賴都已經安裝完畢,接下來我們安裝FastDFS:

1.3 安裝FastDFS

1.3.1 編譯安裝

這裡我們也採用編譯安裝,步驟與剛才的編譯安裝方式一樣:

  • 解壓

    tar -xvf FastDFS_v5.08.tar.gz
    
  • 進入目錄

    cd FastDFS
    
  • 編譯並安裝

    sudo ./make.sh 
    sudo ./make.sh install
    
  • 校驗安裝結果

1)安裝完成,我們應該能在/etc/init.d/目錄,通過命令ll /etc/init.d/ | grep fdfs

看到FastDFS提供的啟動指令碼:

在這裡插入圖片描述

其中:

  • fdfs_trackerd 是tracker啟動指令碼
  • fdfs_storaged 是storage啟動指令碼

2)我們可以在 /etc/fdfs目錄,通過命令檢視到以下配置檔案模板:

在這裡插入圖片描述

其中:

  • tarcker.conf.sample 是tracker的配置檔案模板
  • storage.conf.sample 是storage的配置檔案模板
  • client.conf.sample 是客戶端的配置檔案模板

1.3.2 啟動tracker

FastDFS的tracker和storage在剛剛的安裝過程中,都已經被安裝了,因此我們安裝這兩種角色的方式是一樣的。不同的是,兩種需要不同的配置檔案。

我們要啟動tracker,就修改剛剛看到的tarcker.conf,並且啟動fdfs_trackerd指令碼即可。

  • 編輯tracker配置

首先我們將模板檔案進行賦值和重新命名:

sudo cp tracker.conf.sample tracker.conf
sudo vim tracker.conf

開啟tracker.conf,修改base_path配置:

base_path=/leyou/fdfs/tracker # tracker的資料和日誌存放目錄
  • 建立目錄

剛剛配置的目錄可能不存在,我們創建出來

sudo mkdir -p /leyou/fdfs/tracker
  • 啟動tracker

    我們可以使用 sh /etc/init.d/fdfs_trackerd 啟動,不過安裝過程中,fdfs已經被設定為系統服務,我們可以採用熟悉的服務啟動方式:

sudo service fdfs_trackerd start # 啟動fdfs_trackerd服務,停止用stop

另外,我們可以通過以下命令,設定tracker開機啟動:

sudo chkconfig fdfs_trackerd on

1.3.3 啟動storage

我們要啟動tracker,就修改剛剛看到的tarcker.conf,並且啟動fdfs_trackerd指令碼即可。

  • 編輯storage配置

首先我們將模板檔案進行賦值和重新命名:

sudo cp storage.conf.sample storage.conf
sudo vim storage.conf

開啟storage.conf,修改base_path配置:

base_path=/leyou/fdfs/storage # storage的資料和日誌存放目錄
store_path0=/leyou/fdfs/storage # storage的上傳檔案存放路徑
tracker_server=192.168.56.101:22122 # tracker的地址
  • 建立目錄

剛剛配置的目錄可能不存在,我們創建出來

sudo mkdir -p /leyou/fdfs/storage
  • 啟動storage

    我們可以使用 sh /etc/init.d/fdfs_storaged 啟動,同樣我們可以用服務啟動方式:

sudo service fdfs_storaged start  # 啟動fdfs_storaged服務,停止用stop

另外,我們可以通過以下命令,設定storaged開機啟動:

sudo chkconfig fdfs_storaged on

最後,通過ps -ef | grep fdfs 檢視程序:

在這裡插入圖片描述

1.4 安裝Nginx及FastDFS模組

1.4.1 FastDFS的Nginx模組

  • 解壓

    tar -xvf fastdfs-nginx-module_v1.16.tar.gz
    
  • 配置config檔案

    # 進入配置目錄
    cd /home/leyou/fdfs/fastdfs-nginx-module/src/
    # 修改配置
    vim config
    # 執行下面命令(將配置中的/usr/local改為/usr):
    :%s+/usr/local/+/usr/+g
    

  • 配置mod_fastdfs.conf

    # 將src目錄下的mod_fastdfs.conf複製到 /etc/fdfs目錄:
    sudo cp mod_fastdfs.conf /etc/fdfs/l's
    # 編輯該檔案
    sudo vim /etc/fdfs/mod_fastdfs.cof:w
    
  • 修改一下配置:

    connect_timeout=10                  		# 客戶端訪問檔案連線超時時長(單位:秒)
    tracker_server=192.168.56.101:22122  	# tracker服務IP和埠
    url_have_group_name=true            		# 訪問連結字首加上組名
    store_path0=/leyou/fdfs/storage        		# 檔案儲存路徑
    
  • 複製 FastDFS的部分配置檔案到/etc/fdfs目錄

    cd /home/leyou/fdfs/FastDFS/conf/
    cp http.conf mime.types /etc/fdfs/
    

1.4.2 安裝Nginx

  • 解壓

    tar -xvf nginx-1.10.0.tar.gz
    
  • 配置

    sudo ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/home/leyou/fdfs/fastdfs-nginx-module/src
    
  • 編譯安裝

    sudo make && sudo make install
    
  • 配置nginx整合fastdfs-module模組

    我們需要修改nginx配置檔案,在/opt/nginx/config/nginx.conf檔案中:

    sudo vim  /opt/nginx/conf/nginx.conf
    

    將檔案中,原來的server 80{ ...} 部分程式碼替換為如下程式碼:

        server {
            listen       80;
            server_name  image.taotao.com;
    
        	# 監聽域名中帶有group的,交給FastDFS模組處理
            location ~/group([0-9])/ {
                ngx_fastdfs_module;
            }
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
            
        }
    
  • 啟動

    nginx # 啟動
    nginx -s stop # 停止
    nginx -s reload # 重新載入配置
    
  • 設定nginx開機啟動

    建立一個開機啟動的指令碼:

    vim /etc/init.d/nginx
    

    新增以下內容:

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/bin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
       if [ -n "$user" ]; then
          if [ -z "`grep $user /etc/passwd`" ]; then
             useradd -M -s /bin/nologin $user
          fi
          options=`$nginx -V 2>&1 | grep 'configure arguments:'`
          for opt in $options; do
              if [ `echo $opt | grep '.*-temp-path'` ]; then
                  value=`echo $opt | cut -d "=" -f 2`
                  if [ ! -d "$value" ]; then
                      # echo "creating" $value
                      mkdir -p $value && chown -R $user $value
                  fi
              fi
           done
        fi
    }
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac
    
    
  • 修改檔案許可權,並加入服務列表

    # 修改許可權
    chmod 777 /etc/init.d/nginx 
    # 新增到服務列表
    chkconfig --add /etc/init.d/nginx 
    
  • 設定開機啟動

    chkconfig nginx on