Centos下安裝FastDFS

1. 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

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

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

    sudo ./make.sh 
    sudo ./makesh 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

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

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/
    # 編輯該文件
    sudo vim /etc/fdfs/mod_fastdfs.cof
    
  • 修改一下配置:

    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
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章