Linux FastDFS 安裝部署

(親測有效 宿主機是ubuntu16.4虛擬機)

FastDFS

FastDFS是是一個輕量級、高性能的開源分佈式文件系統,用純C語言開發,包括文件存儲、文件同步、文件訪問(上傳、下載)、存取負載均衡、在線擴容、相同內容只存儲一份等功能,適合有大容量存儲需求的應用或系統

 

FastDFS 的作者餘慶在其 GitHub 上是這樣描述的:

FastDFS 是一個開源的高性能分佈式文件系統。其主要功能包括文件存儲、文件同步和文件訪問(文件上傳和文件下載),可以解決高容量和負載平衡問題。FastDFS 應滿足基於照片共享站點和視頻共享站點等文件的網站的服務要求。

FastDFS 有兩個角色:跟蹤器(Tracker)和存儲器(Storage)。Tracker 負責文件訪問的調度和負載平衡,Storage 存儲文件及其功能是文件管理,包括文件存儲、文件同步、提供文件訪問接口。它還管理元數據,這些元數據是表示爲文件的鍵值對的屬性。Tracker 和 Storage 節點都可以由一臺或多臺服務器構成。這些服務器均可以隨時增加或下線而不會影響線上服務,當然各個節點集羣至少需要一臺服務 Running。注意,其中 Tracker 集羣中的所有服務器都是對等的(P2P),可以根據服務器的壓力情況隨時增加或減少。

此外,官網還存儲系統做了詳盡的說明,爲了支持大容量,Storage 節點採用了分卷(或分組)的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷的文件容量累加就是整個存儲系統中的文件容量。一個卷可以由一臺或多臺 Storage 服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器起到了冗餘備份和負載均衡的作用。在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成後,系統自動將新增服務器切換到線上提供服務。當存儲空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺服務器,並將它們配置爲一個新的卷,這樣就擴大了存儲系統的容量。關於卷或組的概念暫且不過多深入,後面的安裝部署中會後詳細的說明。

 

FastDFS安裝

安裝Git

fastdfs依賴libfastcommon,需要從github上clone到本地編譯安裝。因此首先需

apt-get install git

 

克隆libfastcommon庫

libfastcommon的源在項目https://github.com/happyfish100/libfastcommon 需要使用git將其clone至本地安裝。

git clone https://github.com/happyfish100/libfastcommon.git

 

安裝libfastcommon依賴

進入libfastcommon目錄,依次執行腳本:

./make.sh

./make.sh install

 

設置環境變量和軟鏈接

在32位ubuntu中,libfastcommon會安裝在/usr/lib 中,64位系統則安裝在 /usr/lib64 中。依次執行以下命令:(根據自己的操作系統選擇路徑)

export LD_LIBRARY_PATH=/usr/lib/

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

 

下載、解壓並安裝FastDFS

Fastdfd的Github下載地址爲:

https://github.com/happyfish100/fastdfs/releases

下載完成後,執行命令:

tar xzf fastdfs-5.08.tar.gz

進入解壓後的目錄,依次執行:

./make.sh

./make.sh insta

 

FastDFS配置

安裝完成後會生成相應的文件與目錄

  1. 服務腳本

/etc/init.d/fdfs_storaged

/etc/init.d/fdfs_tracke

  1. 配置文件(這三個是作者給的樣例配置文件)

/etc/fdfs/client.conf.sample

/etc/fdfs/storage.conf.sample

/etc/fdfs/tracker.conf.sample

  1. 命令工具,/usr/bin目錄下

常用的命令

1: 啓動FastDFS

tracker:/usr//bin/fdfs_trackered /etc/fdfs/tracker.conf

storage: /usr//bin/fdfs_storaged /etc/fdfs/storage.conf

2:關閉FastDFS

tracker:/usr//bin/stop.sh /usr//bin/fdfs_tracker

storage:/usr//bin/stop.sh /usr//bin/fdfs_storage

或者 killall fdfs_trackered(storaged)  -------注意,千萬不要使用-9強行殺死進程。

3:重啓FastDFS

tracker:/usr//bin/restart.sh /usr//bin/fdfs_trackered

storage:/usr//bin/restart.sh /usr//bin/fdfs_storaged

4:查看集羣情況

在任意一臺storage(tracker也可以)

/usr//bin/fdfs_monitor /etc/fdfs/storage.conf

5:刪除一個storage:

在任意一臺storage(tracker也可以)

/usr//bin/fdfs_monitor /etc/fdfs/storage.conf delete group2 20.12.1.73

 

修改配置文件

拷貝fastdfs-5.08/conf 下複製mime.types http.conf

到 /etc/fdfs下

cp mime.types http.conf /etc/fdfs/

 

在/etc/fdfs 下,有三個示例配置文件:

client.conf.sample

storage.conf.samle

tracker.conf.sample

首先將這三個文件名中的sample去掉,改爲

client.conf

storage.conf

tracker.conf

配置FastDFS跟蹤器(Tracker)

修改tracker.conf配置

 

# 配置文件是否不生效,false 爲生效

disabled=false

# 提供服務的端口

port=22122

# Tracker 數據和日誌目錄地址(根目錄必須存在,子目錄會自動創建)

base_path=/home/fastdfs/tracker

# HTTP 服務端口

http.server_port=8090

 

具體請查看配置文件詳解http://bbs.chinaunix.net/thread-1941456-1-1.html

 

啓動tracker服務,並監聽

/usr//bin/fdfs_trackered /etc/fdfs/tracker.conf

netstat -unltp|grep fdfs

 

配置 FastDFS 存儲 (Storage)

修改storage.conf配置

 

# 配置文件是否不生效,false 爲生效

disabled=false

 

# 指定此 storage server 所在 組(卷)

group_name=group1

 

# storage server 服務端口

port=23000

 

# 心跳間隔時間,單位爲秒 (這裏是指主動向 tracker server 發送心跳)

heart_beat_interval=30

 

# Storage 數據和日誌目錄地址(根目錄必須存在,子目錄會自動生成)

base_path=/home/fastdfs/storage

 

# 存放文件時 storage server 支持多個路徑。這裏配置存放文件的基路徑數目,通常只配一個目錄。

store_path_count=1

 

# 逐一配置 store_path_count 個路徑,索引號基於 0。

# 如果不配置 store_path0,那它就和 base_path 對應的路徑一樣。

store_path0=/home/fastdfs/storage

 

# FastDFS 存儲文件時,採用了兩級目錄。這裏配置存放文件的目錄個數。

# 如果本參數只爲 N(如: 256),那麼 storage server 在初次運行時,會在 store_path 下自動創建 N * N 個存放文件的子目錄。

subdir_count_per_path=256

 

# tracker_server 的列表 ,會主動連接 tracker_server

# 有多個 tracker server 時,每個 tracker server 寫一行

tracker_server=172.17.0.3:22122

 

# 允許系統同步的時間段 (默認是全天) 。一般用於避免高峯同步產生一些問題而設定。

sync_start_time=00:00

sync_end_time=23:59

 

# 訪問端口

http.server_port=8888

 

修改client.conf配置

 

# Client 的數據和日誌目錄

base_path=/home/fastdfs/client

 

# Tracker端口

tracker_server=172.17.0.3:22122

 

# HTTP端口

http.tracker_server_port=8888

 

#include http.conf

注意,#include http.conf 這句,原配置文件中有2個#,刪掉一個。

 

啓動服務,並監聽

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

netstat -unltp|grep fdfs

 

查看Storage和Tracker是否在通信

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

 

FastDFS安裝完畢,並且上傳已測試通過,但無法下載。因此安裝Nginx作爲服務器以支持Http方式訪問文件。

 

Nginx

 

安裝編譯工具及庫文件

 gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

 

安裝Nginx有兩種方式

yum安裝

源碼包安裝

 

先說明下yum和源碼包安裝的區別:

yum安裝是在線安裝,好處是:安裝方式簡單,不易出錯;

源碼包安裝是先將nginx的源碼下載下來,在自己的系統裏編譯生成可執行文件,然後執行,好處是:因爲是在自己的系統上編譯的,更符合自己系統的性能,也就是說在自己的系統上執行nginx服務性能效率更好

源碼安裝注意:

yum安裝nginx

 

yum在線安裝會將nginx的安裝文件放在系統的不同位置,可以通過命令rpm -ql nginx來查看安裝路徑

 

$ yum -y install nginx

 

卸載的時候,只能通過命令來卸載,因爲我們不可能將這些文件自己手動刪除,可以通過命令rpm -e nginx來卸載,這個命令一般不會報錯,因爲nginx不與其他的包有依賴關係,如果提示關於依賴包的問題,可以嘗試rpm -e --nodeps nginx來卸載,這個命令相當於強制卸載,不考慮依賴問題。

 

啓動命令

yum安裝nginx,可以通過系統服務命令service來啓動或停止

 

service nginx start #啓動 nginx 服務

 

service nginx stop #停止 nginx 服務

 

service nginx restart #重啓 nginx 服務

 

源碼包安裝nginx

 

在/u01/soft目錄下,下載nginx源碼包,並解壓:

 

$ wget http://nginx.org/download/nginx-1.15.8.tar.gz

$ tar -zxvf nginx-1.15.8.tar.gz -C /u01/app/

 

在/u01/soft目錄下,下載fastdfs-nginx-module模塊包,並解壓:

 

$ wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz

$ mv V1.20.tar.gz fastdfs-nginx-module_V1.20.tar.gz

$ tar -zxvf fastdfs-nginx-module_V1.20.tar.gz -C /u01/app/

 

進入/u01/app/nginx-1.15.8目錄安裝nginx,並加入fastdfs-nginx-module模塊:

 

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

 

編譯、安裝:

 

$ make && make install

 

可能遇到報錯信息:

 

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

 

解決方案:修改fastdfs-nginx-module-1.20/src/config文件

 

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"

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

 

重新編譯、安裝

 

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

$ make && make install

 

    --prefix=PATH:指定nginx的安裝目錄。默認/usr/local/nginx

    --conf-path=PATH:設置nginx.conf配置文件的路徑。nginx允許使用不同的配置文件啓動,通過命令行中的-c選項。默認爲conf/nginx.conf

    --user=name:設置nginx工作進程的用戶。安裝完成後,可以隨時在nginx.conf配置文件更改user指令。默認的用戶名是nobody。--group=name類似

    --with-pcre:設置PCRE庫的源碼路徑,如果已通過yum方式安裝,使用--with-pcre自動找到庫文件。使用--with-pcre=PATH時,需要從PCRE網站下載pcre庫的源碼並解壓,指定pcre的源碼路徑 ,比如:--with-pcre=/root/pcre-8.39/。perl正則表達式使用在location指令和 ngx_http_rewrite_module模塊中。

    --with-zlib=PATH:指定zlib(版本1.1.3 - 1.2.5)的源碼解壓目錄。在默認就啓用的網絡傳輸壓縮模塊ngx_http_gzip_module時需要使用zlib 。

    --with-http_ssl_module:使用https協議模塊。默認情況下,該模塊沒有被構建。前提是openssl與openssl-devel已安裝

    --with-http_stub_status_module:用來監控 Nginx 的當前狀態

    --with-http_realip_module:通過這個模塊允許我們改變客戶端請求頭中客戶端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意義在於能夠使得後臺服務器記錄原始客戶端的IP地址

    --add-module=PATH:添加第三方外部模塊,如fastdfs-nginx-module或緩存模塊。每次添加新的模塊都要重新編譯(Tengine可以在新加入module時無需重新編譯)

 

查看nginx的版本及模塊

 

/usr/local/nginx/sbin/nginx -V

 

成功標識

image.png

 

源碼包安裝nginx啓動的時候不能使用service來啓動,需要執行nginx安裝目錄下的sbin目錄下的 nginx可執行程序纔行

 

配置fastdfs-nginx-module和nginx

 

在/u01/app/fastdfs-nginx-module-1.20/src目錄下複製mod_fastdfs.conf文件到/etc/fdfs目錄下

 

$ cp mod_fastdfs.conf /etc/fdfs/

 

在/etc/fdfs目錄下修改mod_fastdfs.conf配置

 

base_path=/home/fastdfs

 

# 連接超時時間

connect_timeout=10

 

# Tracker Server

tracker_server=172.17.0.3:22122

 

# StorageServer 默認端口

storage_server_port=23000

 

# 如果文件ID的uri中包含/group**,則要設置爲true

url_have_group_name = true

 

# Storage 配置的store_path0路徑,必須和storage.conf中的一致

store_path0=/home/fastdfs/storage

 

在/usr/local/nginx/conf目錄下配置nginx,修改nginx.conf文件

 

location ~/M00 {

    root /home/fastdfs/storage/data;

    ngx_fastdfs_module;

}

 

拷貝/u01/app/fastdfs-5.11/conf目錄下的http.conf、mime.types文件到/etc/fdfs/目錄下

 

$ cp http.conf mime.types /etc/fdfs/

 

啓動nginx

 

$ /usr/local/nginx/sbin/nginx

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