FastDFS與Nginx結合搭建文件服務器

FastDFS介紹

FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。

在平時的學習和項目中,博主使用的是阿里雲的OSS對象存儲服務,畢竟是阿里雲旗下的產品,有很全的API供你學習使用。當然,它是付費產品。其實就幾頓外賣的錢就能包年了。
第一次瞭解FastDFS是在博主上大學的時候,一門《雲計算與大數據》裏面講了這個,還有Hadoop的HDFS。這裏就不做過多的講解了,畢竟博主也只是略知一二,感興趣的讀者可以使用各種方法去了解和學習。

上面說了阿里雲OSS方便好用,那爲什麼還要自己去搭建一個文件服務器呢?
①. 自己動手嘗試一個從來沒接觸過得東西,如果成功了,會很有成就感;就算失敗了,也會去找到解決的辦法。
②. OSS用來存儲一些快速訪問的東西,就很便捷。例如:博主將博文中的圖片存儲到裏面,可以直接訪問,還能通過CDN來加速。當然FastDFS也可以直接訪問,但是中間需要藉助其他雲服務器的支持。如果使用本地的服務器,是沒辦法讓其他人訪問的。
③. 畢竟OSS是收費的,博主使用的是最小存儲容量的套餐。所以,在學習中使用FastDFS就足夠了。

上面三條因人而異,主要是指博主使用FastDFS的原因。

搭建過程

準備工具

所有環境都是基於Linux的,沒有安裝Linux的讀者,自行查閱安裝方法,博主這裏就不做講解了。
首先下載好所需的壓縮包,上傳到Linux服務器上。
1.FastDFS_v5.05.tar.gz
2.fastdfs-nginx-module_v1.16.tar.gz
3.libfastcommon-1.0.7.tar.gz
4.nginx-1.16.1.tar.gz

通過使用Xshell軟件中的Xftp工具將上述壓縮包上傳至Linux服務器。

安裝編譯工具和準備工作

沒有修改鏡像源地址的讀者,可以修改下Linux的鏡像源,博主這裏使用的是阿里的鏡像源。如何配置,可以參考下面地址,找到自己對應的版本配置即可。博主這裏使用的是Centos 8。

https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11ium3oX

鏡像配置好就可以下載編譯所需要的一些庫了,執行下面的命令:

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

下載FastDFS所需要的依賴

yum -y install libevent

安裝完所需依賴,開始解壓libfastcommon-1.0.7.tar.gz

tar -zxvf libfastcommon-1.0.7.tar.gz -C /usr/local/software

進入解壓完的目錄。

cd /usr/local/software/libfastcommon-1.0.7

這裏的software是博主自己創建的,主要存放解壓後的軟件,讀者根據自己的習慣,創建目錄即可。

接下來就是編譯、安裝了

./make.sh   # 編譯
./make.sh install   # 安裝

完成後,進入lib64目錄,通過 ll 命令查看

cd /usr/lib64
ll libfast**    # 查看所有以libfast開頭的內容


這裏需要執行的操作是,將libfastcommon.so拷貝到lib目錄下,因爲lib是32位的。

cp libfastcommon.so /usr/lib

安裝編譯FastDFS

第一步還是解壓

tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/software/

解壓完進入目錄進行編譯和安裝。

./make.sh
./make.sh install 

然後查看相應的配置

cd /usr/bin
ll fdfs*    # 查看所有以fdfs開頭的內容


有部分配置在/etc/fdfs這個目錄,如圖所示

將FastDFS的配置文件拷貝到當前目錄中。

cd /usr/local/software/FastDFS/


這裏conf目錄中的內容,都需要拷貝到/etc/fdfs/目錄下。

cp * /etc/fdfs/

配置tracker服務

/etc/fdfs/這個目錄下有一個tracker.conf文件,需要進行修改。

vim tracker.conf

在文件中修改日誌路徑爲:base_path=/fastdfs/tracker

因爲不存在/fastdfs/tracker這個文件夾,所以進行創建。

mkdir /fastdfs/tracker -p   # -p是遞歸創建

進入bin目錄,fdfs_trackerd就是啓動tracker服務的命令。

使用如下命令啓動。

fdfs_trackerd /etc/fdfs/tracker.conf    # 後面跟的是剛纔修改的配置文件的路徑
fdfs_trackerd /etc/fdfs/tracker.conf restart    # 重啓服務

查看服務啓動是否成功

ps aux|grep tracker

配置storage服務

剛纔給tracker服務配置了日誌目錄,storage也是同樣需要日誌目錄,所以,首先創建日誌目錄。在剛纔的fastdfs目錄下創建

mkdir storage/log -p

修改配置文件

vim storage.conf


將base_path修改爲如圖。
這裏還需要修改group_name,group_name=group1是組織名,例如,訪問圖片時,需要將當前的group_name作爲前綴加到地址中。

group_name=qfcwx    # 這裏根據自己習慣修改

store_path0=/home/yuqing/fastdfs這個指實際圖片存儲的路徑,首先在剛纔日誌的上級storage目錄中創建一個存儲路徑

mkdir file


然後修改配置文件

將store_path0修改爲剛纔創建的目錄。
可以看到上面還有一個tracker_server,這個是tracker服務的地址,根據自己的虛擬機的ip地址進行修改即可。博主這裏修改爲:

tracker_server=192.168.0.104:22122  # 只用修改前面的ip,端口號不需要修改

配置文件的修改,這裏就完成了,下面就進入bin目錄,fdfs_storaged這個就是啓動storage服務的命令。
使用如下命令啓動

cd /usr/bin
fdfs_storaged /etc/fdfs/storage.conf    # 後面跟的是剛纔修改的配置文件的路徑
fdfs_storaged /etc/fdfs/storage.conf restart    # 重啓

查看服務啓動是否成功

ps aux|grep storage

配置client

/etc/fdfs目錄下有一個client.conf的文件,這個可以作爲客戶端進行測試。
修改文件

vim client.conf

同樣需要修改日誌的地址,在fastdfs目錄下創建一個client目錄。

上面的tracker_server就是tracker服務的地址,讀者根據自己虛擬機的ip地址進行修改。

測試

進入bin目錄

cd /usr/bin/
ll fdfs*    # 查看

fdfs_test就是用於客戶端測試的,測試命令爲

fdfs_test /etc/fdfs/client.conf upload /usr/local/image/mvvm.png

/etc/fdfs/client.conf: 是配置文件的地址。
upload: 是需要加的命令。
/usr/local/image/mvvm.png:是需要上傳的圖片的地址。

這裏就會返回成功的地址了。

目前還不能通過地址來訪問,這裏需要配置Nginx,但是如果使用Xftp就能查看,此時,文件存儲的目錄爲:/fastdfs/storage/file/data/00/00
/fastdfs/storage/file 是剛纔配置storage服務時,文件的存放路徑。

解壓FastDFS和Nginx關聯的壓縮包

這裏需要對Nginx的FastDFS模塊進行解壓。

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/software/

進入解壓完的目錄,到src目錄,修改config文件,將文件路徑中存在的local刪掉。

編譯安裝Nginx

前面已經安裝了編譯所需要的依賴庫了,所以這裏再安裝一個Nginx所支持的正則表達式庫。

yum install pcre pcre-devel

解壓Nginx的壓縮包

tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/software/

首先到剛剛解壓的fastdfs-nginx-module的src目錄,拷貝當前路徑

pwd    # 查看當前所在完整路徑

博主這裏的路徑是:/usr/local/software/fastdfs-nginx-module/src
然後到解壓後的Nginx目錄下,執行

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/software/fastdfs-nginx-module/src

注意:這裏的–add-module後面的值就是剛剛拷貝的fastdfs-nginx-module的src目錄

之後再執行 make 進行編譯;make install 進行安裝。

配置FastDFS

將fastdfs-nginx-module模塊下的mod_fastdfs.conf文件拷貝到 /etc/fdfs/目錄

cp mod_fastdfs.conf /etc/fdfs/

進入/etc/fdfs/目錄,修改這個文件

vim mod_fastdfs.conf

找到下面的配置進行修改:
1、base_path=/tmp用戶存儲日誌的,將其改爲/fastdfs/temp
2、tracker_server=tracker:22122修改爲當前服務器的ip地址
3、group_name=groupname1 修改爲之前storage中同樣的名字
4、url_have_group_name = false 這個表示是否需要增加一個上述自定義名字的需要,改爲true

配置Nginx

這裏需要配置Nginx,進入剛剛編譯時,–prefix所指定的目錄,可以看到nginx目錄下面有這幾個文件夾。

進入conf目錄,修改nginx.conf文件,在http指令塊中新增如下配置。

server{
        listen      88;
        server_name 192.168.0.104;
        location /qfcwx/M00 {
                ngx_fastdfs_module;
        }
    } 

注意,這裏不用刪除默認的80端口的server指令,重新添加一個server指令即可。
server_name:指服務器的ip或者域名。
location:指訪問/qfcwx/M00下的所有東西。

啓動Nginx

在啓動之前,對Nginx進行測試

./sbin/nginx -t

如果出現:2: No such file or directory 按照提示創建目錄即可。
再次測試,沒問題了,就可以啓動Nginx了。

./sbin/nginx    # 啓動命令

訪問之前。保證Linux的防火牆是關閉狀態。
查看防火牆狀態:

firewall-cmd --state

如果顯示 running ,則需要關閉。

systemctl start firewalld.service   #啓動防火牆
systemctl stop firewalld.service    #停止防火牆
systemctl reloadt firewalld.service #重載配置

訪問圖片

博主這裏的路徑是:

http://192.168.0.104:88/qfcwx/M00/00/00/wKgAaF5KAXyAFt-fABCbbRHQLlU939.png

如果出現 404,是因爲FastDFS和Nginx之間配置還未完成。
需要修改/etc/fdfs/目錄下的mod_fastdfs.conf文件

store_path0=/home/yuqing/fastdfs    # 需要和storage.conf配置文件的路徑一致

博主這裏是:/fastdfs/storage/file
修改完成後,需要重新啓動tracker服務、storage服務以及Nginx服務。

重啓所有服務

/usr/bin/fdfs_trackerd tracker.conf restart
/usr/bin/fdfs_storaged storage.conf restart
./sbin/nginx -s reload

再次訪問上面的路徑,就能看到圖片成功上傳了。

這就證明FastDFS的文件服務器搭建完成了。

總結

本來很早就想着寫這篇文章的,但是博主都在忙些別的事,不然就是偷懶,玩遊戲去了。沒辦法,2020年是多災的一年。要問爲什麼?這還要從一隻蝙蝠說起!

總之,希望大家都能平平安安,開開心心的面對新的一年。

願你努力工作,也願你享受生活;願你腳踏實地,也願你仰望星空。

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