1. 程式人生 > >FastDFS 配置 Nginx 模組及上傳測試

FastDFS 配置 Nginx 模組及上傳測試



也不說廢話,直接幹

上一篇分散式檔案系統 - FastDFS 在 CentOS 下配置安裝部署中安裝了 FastDFS 後,並配置啟動了 Tracker 和 Storage 服務,已經可以上傳檔案了,但是我沒有上傳測試,因為上傳成功我看不了,所以,需要配合 Nginx 來進行檔案的上傳下載,這一篇就安裝 Nginx 以及結合 fastdfs-nginx-module 模組使用。

一、安裝 Nginx 和 fastdfs-nginx-module

安裝 Nginx 請看:從零開始學 Java - CentOS 下安裝 Nginx,其實我只想放這一句話。但想想我還是一步一步寫詳細吧。

1.下載 Nginx 和 fastdfs-nginx-module

,這裡是通過wget下載(我喜歡這種方式)。

  1. wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
  2. wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip

wget_nginxAndmodule.png

2.解壓 fastdfs-nginx-module ,記著這時候別用tar解壓了,因為是 .zip 檔案,正確命令:

  1. unzip master.zip

unzip_nginx-module.png

3.配置 nginx 安裝,加入fastdfs-nginx-module模組。這是和普通 Nginx 安裝不一樣的地方,因為載入了模組。

  1. ./configure
    --add-module=../fastdfs-nginx-module-master/src/

error_nginx.png

但是,萬萬沒想到,報錯啦!有些檔案顯示not found錯誤。更多看下圖,都是錯誤:
error_nginx1.png

比如這些gcc、PCRE這些沒找到,說明我們伺服器並未安裝,所以,我們進行下安裝即可了,我在 從零開始學 Java - CentOS 下安裝 Nginxgcc、 PCRE pcre-devel、 zlib、 OpenSSL的安裝命令,都安裝一下之後我們再次進行 Nginx 的安裝,顯示下面的介面就是安裝成功啦!

nginx_success.png

使用以下命令進行安裝

  1. make
  2. make install

這時候,我們可以看一下 Nginx 下安裝成功的版本及模組,命令:

  1. /usr/local/nginx/sbin/nginx -V

nginx_module.png

二、配置 fastdfs-nginx-module 和 Nginx

1.配置mod-fastdfs.conf,並拷貝到/etc/fdfs檔案目錄下。

  1. cd /software/fastdfs-nginx-module-master/src/
  2. vim mod_fastdfs.conf
  3. cp mod_fastdfs.conf /etc/fdfs

vim_cp_mod-fastdfs.png

修改mod-fastdfs.conf配置只需要修改我標註的這三個地方就行了,其他不需要也不建議改變。

  1. # FastDFS tracker_server can ocur more than once, and tracker_server format is
  2. # "host:port", host can be hostname or ip address
  3. # valid only when load_fdfs_parameters_from_tracker is true
  4. tracker_server=192.168.198.129:22122
  5. # if the url / uri including the group name
  6. # set to false when uri like /M00/00/00/xxx
  7. # set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
  8. # default value is false
  9. url_have_group_name =true
  10. # store_path#, based 0, if store_path0 not exists, it's value is base_path
  11. # the paths must be exist
  12. # must same as storage.conf
  13. store_path0=/data/fastdfs/storage
  14. #store_path1=/home/yuqing/fastdfs1

vim_mod-fastdfs.png

接著我們需要把fastdfs-5.05下面的配置中還沒有存在/etc/fdfs中的拷貝進去

  1. cd /software/fastdfs-5.05/conf
  2. cp anti-steal.jpg http.conf mime.types /etc/fdfs/

cp_httpAndmine.png

2.配置 Nginx。編輯nginx.conf檔案:

  1. cd /usr/local/nginx/conf
  2. vi nginx.conf

vi_nginx.png

在配置檔案中加入:

  1. location /group1/M00 {
  2. root /data/fastdfs/storage/;
  3. ngx_fastdfs_module;
  4. }

nginx.conf.png

由於我們配置了group1/M00的訪問,我們需要建立一個group1資料夾,並建立M00到data的軟連結。

  1. mkdir /data/fastdfs/storage/data/group1
  2. ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/group1/M00

ln-s_group1-M00.png

啟動 Nginx ,會打印出fastdfs模組的pid,看看日誌是否報錯,正常不會報錯的

  1. /usr/local/nginx/sbin/nginx

start_nginx.png

開啟瀏覽器,訪問一下發現並不能訪問,也並沒有報錯,但顯示如下畫面。糟糕了,怎麼辦?對了,我好像沒關閉防火牆。

iptables_no.png

開放80埠訪問許可權。在iptables中加入重啟就行,或者你直接關閉防火牆,本地測試環境可以這麼幹,但到線上萬萬不能關閉防火牆的。

  1. vi /etc/sysconfig/iptables
  2. -A INPUT -m state --state NEW -m tcp -p tcp --dport 80-j ACCEPT

vi_iptables_80.png

重啟防火牆,使設定生效:

  1. service iptables restart

iptables.png

再次重新整理瀏覽器,可以看到如下畫面,說明我們 Nginx 結合 fastdfs-nginx-module 模組安裝並配置成功啦!
iptables_yes.png

我最後說一下怎麼在已經安裝過 Nginx 的伺服器上安裝配置 fastdfs-nginx-module 模組? 因為,一般我們線上伺服器都是已經安裝過 Nginx 的,所以這個時候,我們就直接進入 Nginx 的存放目錄,進行配置後編譯,就不需要執行最後安裝make install這一步了,接著重啟就行了。

上傳測試

完成上面的步驟後,我們已經安裝配置完成了全部工作,接下來就是測試了。因為執行檔案全部在/usr/bin目錄下,我們切換到這裡,並新建一個test.txt檔案,隨便寫一點什麼,我寫了This is a test file. by:mafly這句話在裡邊。然後測試上傳:

  1. cd /usr/bin
  2. vim test.txt
  3. fdfs_test /etc/fdfs/client.conf upload test.txt

test_error.png

很不幸,並沒有成功,報錯了。

  1. ERROR - file: shared_func.c, line:960, open file /etc/fdfs/client.conf fail, errno:2, error info:No such file or directory
  2. ERROR - file:../client/client_func.c, line:402, load conf file "/etc/fdfs/client.conf" fail, ret code:2

一般什麼事情第一次都不是很順利,這很正常,通過錯誤提示我看到,好像沒有找到client.conf這個檔案,現在想起來的確沒有配置這個檔案,那我們現在去配置一下圖中的兩個引數:

  1. cd /etc/fdfs
  2. cp client.conf.sample client.conf
  3. vim client.conf

vim_client.png

test_error1.png

怎麼還依然報錯阿???

  1. upload file fail, error no:2, error info:No such file or directory

哈哈,你是不是測試上傳命令中要上傳的test.txt檔案路徑有問題,嗯,那我改一下命令:

  1. /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/bin/test.txt

test_success.png

成功啦!!! 返回檔案資訊及上傳後的檔案 HTTP 地址,你開啟瀏覽器訪問一下試試

test_view.png

總結一下

這篇文章一步一步的講了通過 Nginx 結合fastdfs-nginx-module模組來進行上傳測試及下載工作,當然這也需要結合上一篇 Tracker 和 Storage 服務來進行,這算是整體進行了 FastDFS 的安裝與配置,分散式的配置也幾乎和這沒差別,只不過是增加了不同組和多臺伺服器,有機會希望你親自試試。

可能接下來,我會結合專案中實際使用再寫一下關於 FastDFS 的一些使用感受吧,可能是怎樣搭建一個近乎商用的檔案系統,上傳下載分享好用到爆,好吧,我又吹牛了。接下來其實還有更多關於檔案的工作,比如防盜鏈、圖片切圖、視訊處理等等。

哈哈,先這樣吧。