fastdfs-nginx-module安裝和配置


fastdfs-nginx-module安裝和配置

為什么要在fastdfs的storage端,安裝fastdfs-nginx-module?

答案:https://www.cnblogs.com/littleatp/p/4361318.html

答案摘要:在每一台storage服務器主機上部署Nginx及FastDFS擴展模塊,由Nginx模塊對storage存儲的文件提供http下載服務, 僅當當前storage節點找不到文件時會向源storage主機發起redirect或proxy動作。

個人理解:當一個文件A被上傳到group1里的節點機器M后,group1里有節點機器M和節點機器N,節點N會從節點M下載文件A到自己節點下。如果又來了一個訪問文件A的請求,並且tracker把這個請求讓節點N來處理,這時節點N還沒有從節點M下載到文件A,這樣就無法處理,會出錯誤。

插件fastdfs-nginx-module就是為了解決這個錯誤。怎么解決呢?就是把請求重定向到節點M上,也就是提供重定向的功能。

前提是已經安裝好了nginx和fastdfs了

STEP1

下載包(https://github.com/happyfish100/fastdfs-nginx-module ),並解壓

STEP2:去nginx源碼的解壓目錄,運行下面的命令

./configure --add-module=/home/ys2/fastdfs/fastdfs-nginx-module-1.20/src

如果執行結果里有下面的語句,則說明configure成功

adding module in /home/ys2/fastdfs/fastdfs-nginx-module-1.20/src
 + ngx_http_fastdfs_module was configured

STEP3:make

發現出下面的錯誤:

/usr/include/fastdfs/fdfs_define.h:15:10: fatal error: common_define.h: No such file or directory
 #include "common_define.h"

解決辦法:修改objs/Makefile文件,在ALL_INCS的最后面添加【-I /usr/include/fastcommon】,注意在原來的最后一行的后面加上【\】。

因為上面的錯誤原因是找不到common_define.h文件,所以通過添加-I,就可以找到這個文件了。如果不知道common_define.h在哪個目錄,可以用【find /usr -name common_define.h】找到它所在的目錄。

ALL_INCS = -I src/core \
        -I src/event \
        -I src/event/modules \
        -I src/os/unix \
        -I objs \
        -I src/http \
        -I src/http/modules \
        -I /usr/local/include \
        -I /usr/include/fastcommon

然后再執行make,一般就會成功了,如果還提示找不到某個.h文件,解決辦法同上。

STEP4:sudo make install

在目錄【/usr/local/nginx/sbin/】下,如果生產了nginx,並把原來的nginx重命名為nginx.old了,則說明安裝成功了。

-rwxr-xr-x  1 root root 4499888 9月   2 20:41 nginx*
-rwxr-xr-x  1 root root 4375032 8月  30 10:56 nginx.old*

分割線 到此說明安裝已經OK了,下面是配置

STEP5:啟動nginx

sudo nginx

然后用【ps aux | grep nginx】,確認nginx進程是否成功啟動

root      9126  0.0  0.0  32980   436 ?        Ss   20:52   0:00 nginx: master process nginx

發現結果如上,發現只有master進程,而沒有worker進程,說明啟動出了問題。

解決辦法:去看nginx的log文件【/usr/local/nginx/logs/error.log】,log內容如下

2019/09/02 20:52:26 [notice] 8956#0: signal process started
ngx_http_fastdfs_process_init pid=9127
[2019-09-02 20:52:41] ERROR - file: shared_func.c, line: 968, file /etc/fdfs/mod_fastdfs.conf not exist
[2019-09-02 20:52:41] ERROR - file: /home/ys2/fastdfs/fastdfs-nginx-module-1.20/src/common.c, line: 163, load con\
f file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
2019/09/02 20:52:41 [alert] 9126#0: worker process 9127 exited with fatal code 2 and cannot be respawned

發現沒有找到/etc/fdfs/mod_fastdfs.conf 文件。mod_fastdfs.conf 文件在解壓后的src文件夾里,所以拷貝到/etc/fdfs目錄下。

STEP6:編輯/etc/fdfs/mod_fastdfs.conf 文件。發現此文件和storage.conf文件十分類似。所以照着storage.conf文件修改此文件。

  • 修改base_path=,讓值和storage.conf一樣。

  • 修改tracker_server=,讓值和storage.conf一樣。

  • 修改storage_server_port=,讓值和storage.conf里的port一樣。

  • 修改group_name=,讓值和storage.conf一樣。

  • 修改url_have_group_name ,讓值為true。目的是在瀏覽器的URL里,顯示group_name的值,也就是能看到訪問的storage的哪個group。

  • 修改store_path_count=,讓值和storage.conf一樣。

  • 修改store_path0=,讓值和storage.conf一樣。

  • 修改group_count =,fastdfs文件系統里有幾個組就寫幾,只有一個組就寫1.

  • 如果group_count =1,則必須設置[group1],如果group_count =2,則必須設置[group1]和[group2],以此類推。

    然后,再把[group1]下的所以設置,再寫一遍。

把上面都修改好后,再次啟動nginx,發現還是沒有worker進程,再去看log內容,發現log內容和上一次不一樣了,就說明上面的問題已經修改好了,又有別的問題了,已經在向成功邁進了。

[2019-09-02 23:37:19] ERROR - file: ini_file_reader.c, line: 824, include file "http.conf" not exists, line: "#include http.conf"
[2019-09-02 23:37:19] ERROR - file: /home/ys2/fastdfs/fastdfs-nginx-module-1.20/src/common.c, line: 163, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
2019/09/02 23:37:19 [alert] 9383#0: worker process 9384 exited with fatal code 2 and cannot be respawned

說明沒找到http.conf文件,

解決辦法:拷貝fastdfs源碼安裝包里的http.conf文件(在conf文件夾里),到/etc/fdfs/文件夾里。

修改好后,再次啟動nginx,發現還是沒有worker進程,再去看log內容,發現log內容和上一次不一樣了,就說明上面的問題已經修改好了,又有別的問題了,已經在向成功邁進了。

2019/09/02 23:53:59 [notice] 9532#0: signal process started
ngx_http_fastdfs_process_exit pid=9497
ngx_http_fastdfs_process_init pid=9536
[2019-09-02 23:54:05] ERROR - file: shared_func.c, line: 968, file /etc/fdfs/mime.types not exist
2019/09/02 23:54:05 [alert] 9535#0: worker process 9536 exited with fatal code 2 and cannot be respawned

說明沒找到/etc/fdfs/mime.types文件

解決辦法:拷貝nginx源碼安裝包里的mime.types文件(在conf文件夾里),到/etc/fdfs/文件夾里。

修改好后,再次啟動nginx,發現有worker進程了,說明nginx啟動成功了。

STEP7:修改nginx.conf文件,添加下面

location /group1/M00 {
    root   /home/ys2/fastdfs/data;
    ngx_fastdfs_module;
}

最后,在瀏覽器里直接訪問storage節點下的某個文件,比如下面,如果能成功顯示在瀏覽器中,則說明配置成功了。

http://10.210.65.129/group1/M00/00/00/CtJBgV1s1m2AatCZAAAADCHxdNo922.txt

c/c++ 學習互助QQ群:877684253

本人微信:xiaoshitou5854


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM