天天看點

fastdfs+nginx安裝配置

    以前的項目上傳的檔案都是儲存到本地或者是區域網路内的共享檔案夾下。由于客戶要求需要用fastdfs來儲存上傳的檔案,花了幾天時間硬着頭皮去學習怎樣安裝配置,由于linux基礎不好,安裝配置起來感覺有點費力,不得不随時去查找一些資料,好在經過這幾天的努力安裝配置fastdfs最終還是搞定了,最終的付出并沒有白費。用了幾天fastdfs總體感覺還不錯,不過也沒有特别明顯的感覺。本來既然是講fastdfs配置的,首先也需要去了解下fastdfs,關于fastdfs的介紹,請看這裡http://tech.uc.cn/?p=221

系統環境

        VM9虛拟機下安裝的Ubuntu15.10,本文隻安裝一個tracker和storage

準備安裝包

首先下載下傳如下的安裝包(下載下傳位址,請檢視本文最後的下載下傳位址部分):

fastdfs+nginx安裝配置

安裝過程

        由于fastdfs5.0.5依賴libfastcommon,是以我們先安裝libfastcommon,為了友善操作,首先切換到root使用者,由于安裝ubuntu時并沒有設定root賬戶的密碼,我們先為root賬戶設定密碼,輸入如下指令:

sudo passwd
           

       按照提示輸入密碼和确認密碼,然後輸入下面指令的切換到root使用者

su
           

安裝libfastcommon

cd  /usr/local
tar -xvf libfastcommon-1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh   install
           

       注意安裝過程中的輸出資訊,如果沒有報錯就表示libfastcommon安裝成功了。 由于libfastcommon.so預設安裝到了/usr/lib64/libfastcommon.so,而FastDFS主程式設定的lib目錄是/usr/local/lib,是以需要設定軟連接配接:

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
           

       至此libfastcommon安裝成功了,接下來安裝FastDFS

安裝fastdfs5.05

      首先解壓fastdfs-5.05:

tar -xvf fastdfs-5.05.tar.gz

進入fastdfs-5.05目錄:

cd fastdfs-5.05

依次執行下面指令

./make.sh

./make.sh install
           

   如果沒報錯就表示安裝成功了,建立了上面的軟連結安裝基本就沒問題了

配置前的準備

先複制3份配置檔案:

cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf
           

我的Ubuntu的ip位址是:192.168.199.130(修改成自己機器上的ip位址就OK了), 用vim或者是gedit修改配置檔案:

配置tracker

      打開tracker.conf

gedit tracker.conf
           

修改配置檔案的這幾項(根據資料情況修改):

base_path=/home/zq/fastdfs

bind_addr=192.168.199.130

啟動trackerd服務:

fdfs_trackerd tracker.conf
           

通過如下指令檢視trackerd服務是否啟動:

netstat -tupln | grep trackerd
           

輸出如下類似的資訊表示已經啟動了:

tcp        0      0 192.168.199.130:22122   0.0.0.0:*               LISTEN      11309/fdfs_trackerd

也可以通過檢視日志檔案看下有沒有出錯(/home/zq/fastdfs是前面配置的路徑),如果沒有報錯,應該trackerd服務啟動了:

vim /home/zq/fastdfs/logs/trackerd.log 
           

配置storage

      打開storage.conf:

gedit storage.conf
           

修改配置檔案的這幾項(根據資料情況修改):

base_path=/home/zq/fastdfs

bind_addr=192.168.199.130 (這個可以為空)

store_path0=/home/zq/fastdfs(上傳檔案的存儲路徑)

tracker_server=192.168.199.130:22122(指定trackerd服務的位址)

啟動storaged服務:

fdfs_storaged storage.conf
           

通過如下指令檢視storaged服務是否啟動:

netstat -tupln | grep storaged
           

輸出如下類似的資訊表示已經啟動了:

tcp        0      0 192.168.199.130:23000   0.0.0.0:*               LISTEN      11413/fdfs_storaged

也可以通過檢視日志檔案看下有沒有出錯(/home/zq/fastdfs是前面配置的路徑),如果沒有報錯,應該storaged服務啟動了:

gedit /home/zq/fastdfs/logs/storaged.log 
           

配置client并測試上傳

    打開client.conf:

gedit client.conf
           

修改配置檔案的這幾項(根據資料情況修改):

base_path=/home/zq/fastdfs

tracker_server=192.168.199.130:22122

上傳測試:

fdfs_upload_file client.conf client.conf.sample 
           

将會上傳client.conf.sample檔案,如果看到類型下面的資訊,那麼恭喜你,配置成功了:

group1/M00/00/00/wKjHglYshRGAfbrTAAAFtTzeg5c.sample

安裝和配置nginx插件

配置fastdfs-nginx-module

1. 解壓fastdfs-nginx-module_v1.16.tar.gz

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

2. 修改config檔案

cd fastdfs-nginx-module/src/
gedit config 
           

修改配置,找到下面這行

CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"

改成

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

這個是很重要的,不然在nginx編譯的時候會報錯的,我看網上很多在安裝nginx的fastdfs的插件報錯,都是這個原因,而不是版本不比對。(很重要,很重要,很重要)

3.修改mod_fastdfs.conf,先複制一份到/etc/fdfs目錄下

cp mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
gedit mod_fastdfs.conf
           

修改如下幾項:

tracker_server=192.168.199.130:22122

store_path0=/home/zq/fastdfs

base_path=/home/zq/fastdfs

url_have_group_name = true(配置多個tracker時,應該将此項設定為true)

4.建立檔案伺服器的軟連接配接,并做一些需要的操作

建立軟連接配接(配置檔案中storage存放資料的路徑):

ln -s /home/zq/fastdfs/data /home/zq/fastdfs/data/M00
           

将fastdfs-5.05配置目錄下的2個檔案複制到/etc/fdfs目錄下:

cp /usr/local/fastdfs-5.05/conf/http.conf .
cp /usr/local/fastdfs-5.05/conf/mime.types .
           

安裝和配置nginx:

1. 解壓nginx-1.7.8.tar.gz

tar -zxvf nginx-1.7.8.tar.gz 
           

2. 由于需要使用 apt-get指令安裝軟體,是以需要更新Ubuntu軟體源(更新過軟體源的可以跳過這步),依次執行下面的指令,如果在更新軟體源的過程中,沒有報錯,說明Ubuntu的軟體源是可以用的。建議使用高版本的Ubuntu,本文使用的是最新版本Ubuntu15.10,其他低版本的Ubuntu可能會出現軟體源不可用的情況,具體的軟體源的修改檢視本文最後的 參考資料。以前使用的是Ubuntu10.10經常出現軟體源不可用的情況,自己手動去安裝這些nginx依賴确實很麻煩。

apt-get update
apt-get upgrade
           

3. 使用 apt-get指令安裝nginx依賴,如果不能通過這個指令來安裝依賴,具體依賴的安裝過程,請檢視本文最後的 附錄-  安裝nginx依賴部分

sudo apt-get install libpcre3 libpcre3-dev  zlib1g-dev openssl libssl-dev
           

4. 開始安裝nginx(--prefix指定nginx安裝到哪裡, --add-module指定fastdfs-nginx-module的目錄),

./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src/
           

執行完成後可以看到最後的輸出:

  nginx path prefix: "/usr/local/nginx"

  nginx binary file: "/usr/local/nginx/sbin/nginx"

  nginx configuration prefix: "/usr/local/nginx/conf"

  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"

  nginx pid file: "/usr/local/nginx/logs/nginx.pid"

  nginx error log file: "/usr/local/nginx/logs/error.log"

  nginx http access log file: "/usr/local/nginx/logs/access.log"

  nginx http client request body temporary files: "client_body_temp"

  nginx http proxy temporary files: "proxy_temp"

  nginx http fastcgi temporary files: "fastcgi_temp"

  nginx http uwsgi temporary files: "uwsgi_temp"

  nginx http scgi temporary files: "scgi_temp"

然後依次執行下面的指令:

make 
make install
           

5.配置nginx

     打開nginx.conf配置檔案

cd /usr/local/nginx/conf
gedit nginx.conf
           

在 server節點加入下面的配置

location /group1/M00{

    root /usrdata/fastdfs/data;

    ngx_fastdfs_module;

}

6.啟動nginx

/usr/local/nginx/sbin/nginx
           

用如下指令檢視nginx是否啟動了:

netstat -tupln | grep nginx
           

輸出如下(nginx預設監聽的是80端口):

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9342/nginx 

檢視日志檔案:

gedit /usr/local/nginx/logs/error.log 
           

輸出如下:

[2015-10-25 19:29:43] ERROR - file: ../storage/trunk_mgr/trunk_shared.c, line: 177,"Permission denied" can't be accessed, error info: /home/zq/fastdfs

2015/10/25 19:29:43 [alert] 9094#0: worker process 9095 exited with fatal code 2 and cannot be respawned

2015/10/25 19:30:58 [notice] 9112#0: signal process started

ngx_http_fastdfs_process_init pid=9196

    發現前面報錯了(用紅色标注的部分),意思是說/home/zq/fastdfs檔案夾不能通路,遇到這個問題首先想到的是權限不夠,但是目前我是以root賬号啟動的啊,應該擁有最高的權限,為什麼說我root卻不能通路這個檔案了,這個問題确實把我搞暈了,有可能nginx啟動的背景線程使用的不是root使用者,後來把mod_fastdfs.conf檔案的base_path和store_path0改為/home/zq,發現啟動不報錯了,這太奇怪了,這個問題折騰了我好久,上網也沒找到解決的辦法。後來發現nginx.conf配置的最前面裡有配置user,隻不過被注釋掉了,把user改為root就搞定了

user  root;
           

 前面的配置過程其實也不是一帆風順的,隻是有些我沒有記錄下來,接下來遇到問題還是全部記錄下來吧,以便查閱。

7.測試配置的nginx

打開浏覽器輸入:http://127.0.0.1,能看到下面的界面表示安裝成功了!

fastdfs+nginx安裝配置

接下來測試fdfs上傳的檔案是否也能顯示,首先在桌面上準備一張圖檔:2.jpg,輸入下面的指令

fdfs_upload_file /etc/fdfs/client.conf  /home/zq/Desktop/2.jpg 
           

傳回的檔案資訊是:group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg

在浏覽器輸入:http://127.0.0.1/group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg,能看到如下的顯示表示配置完成了:

fastdfs+nginx安裝配置

至此配置完成了!

配置多台伺服器的說明

  1)nginx.conf

     在server中增加配置:

     通路路徑不帶group名(storage隻有一個group的情況),如/M00/00/00/xxx:

      location /M00 {

            ngx_fastdfs_module;

        }

     通路路徑帶group名(storage對應有多個group的情況),如/group1/M00/00/00/xxx:

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

            ngx_fastdfs_module;

        }

   2)mod_fastdfs.conf

        将fastdfs-nginx-module_v1.16解壓目錄fastdfs-nginx-module/src下的mod_fastdfs.conf複制到-DFDFS_MOD_CONF_FILENAME配置的目錄下,如/etc/fdfs/。

    修改配置:

    tracker_server=192.168.199.130:22122        -- tracker server的ip和端口,此處可以寫多個tracker server,每行一個

    url_have_group_name = true              --通路路徑帶group時為true否則為false,多個group的情況下,必須為true,為false時,group_count必須為0

storage隻有一個group的情況:

   group=group1                           --storage對應的group

   store_path0=/home/zq/fastdfs        --storage存儲路徑

   group_count = 0

storage對應有多個group的情況:

   url_have_group_name = true      --必須設定為true才能支援多個group

   group_count = 2                 --storage的group個數

   [group1]

   group_name=group1

   storage_server_port=23000

   store_path_count=1

   store_path0=/home/zq/fastdfs

   [group2]

   group_name=group2

   storage_server_port=23000

   store_path_count=1

   store_path0=/home/zq/fastdfs2

附錄

安裝nginx依賴

nginx依賴以下子產品:

l  gzip子產品需要 zlib 庫

l  rewrite子產品需要 pcre 庫

l  ssl 功能需要openssl庫

1.安裝pcre

  • 擷取pcre編譯安裝包,在http://www.pcre.org/上可以擷取目前最新的版本
  • 解壓縮pcre-xx.tar.gz包。
  • 進入解壓縮目錄,執行./configure。
  • 依次執行make 和 make install指令

2.安裝openssl

  • 擷取openssl編譯安裝包,在http://www.openssl.org/source/上可以擷取目前最新的版本。
  • 解壓縮openssl-xx.tar.gz包。
  • 進入解壓縮目錄,執行./config。
  • 依次執行make 和 make install指令

3.安裝zlib

  •  擷取zlib編譯安裝包,在http://www.zlib.net/上可以擷取目前最新的版本。
  •  解壓縮zlib-xx.tar.gz包。
  • 進入解壓縮目錄,執行./configure。
  • 依次執行make 和 make install指令

fastfds和nginx相關指令

1.fastfds指令:

  • 檔案上傳指令: fdfs_upload_file <config_file>
  • 檔案上傳測試指令:fdfs_test <config_file> <operation>,operation: upload, download, getmeta, setmeta, delete and query_servers
  • 啟動tracker:fdfs_trackerd <config_file>
  • 啟動storage:fdfs_storaged <config_file>
  • 停止修改服務:./stop.sh <config_file>

2.nginx指令

  • 啟動: ./nginx
  • 重新開機:./nginx -s reload
  • 停止:./nginx -s stop

配置Ubuntu軟體源參考位址

  • http://jingyan.baidu.com/article/e3c78d6460a9893c4d85f560.html
  • http://www.cnblogs.com/xwdreamer/p/3623454.html
  • http://bbs.3dmgame.com/thread-4009938-1-1.html

參考資料

  • FastDFS 5.01 + nginx + cache 叢集安裝配置手冊    

下載下傳位址:

  1. fastdfs-5.05下載下傳位址
  2. libfastcommon-1.0.7下載下傳位址
  3. fastdfs-nginx-module下載下傳位址
  4. nginx下載下傳位址

繼續閱讀