FastDFS
是用 c
語言編寫的一款開源的分佈式文件系統。FastDFS 爲互聯網量身定製, 充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用 FastDFS
很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。 FastDFS
架構包括 Tracker server
和 Storage server
。客戶端請求 Tracker server
進行文 件上傳、下載,經過 Tracker server
調度最終由 Storage server
完成文件上傳和下載。 Tracker server
做用是負載均衡和調度,經過 Tracker server
在文件上傳時能夠根據一些 策略找到 Storage server 提供文件上傳服務。能夠將 tracker
稱爲追蹤服務器或調度服務 器。 Storage server
做用是文件存儲,客戶端上傳的文件最終存儲在 Storage
服務器上, Storageserver
沒有實現本身的文件系統而是利用操做系統 的文件系統來管理文件。能夠將 storage
稱爲存儲服務器。 html
服務端兩個角色: Tracker
:管理集羣,tracker
也能夠實現集羣。每一個 tracker
節點地位平等。收集 Storage
集羣的狀態。 Storage
:實際保存文件 Storage
分爲多個組,每一個組之間保存的文件是不一樣的。每 個組內部能夠有多個成員,組成員內部保存的內容是同樣的,組成員的地位是一致的,沒有 主從的概念。python
ID
返回給客戶端,此文件
ID
用於之後訪問該文 件的索引信息。文件索引信息包括:組名,虛擬磁盤路徑,數據兩級目錄,文件名。
group1/M00/00/00/rBAABVzRPC-AJVSQAAHqEHLGutU563.jpg
複製代碼
組名:文件上傳後所在的 storage
組名稱,在文件上傳成功後有 storage
服務器返回, 須要客戶端自行保存。nginx
虛擬磁盤路徑:storage
配置的虛擬路徑,與磁盤選項 store_path*
對應。若是配置了 store_path0
則是 M00
,若是配置了 store_path1
則是 M01
,以此類推。web
數據兩級目錄:storage
服務器在每一個虛擬磁盤路徑下建立的兩級目錄,用於存儲數據 文件。ubuntu
文件名:與文件上傳時不一樣。是由存儲服務器根據特定信息生成,文件名包含:源存儲 服務器 IP
地址、文件建立時間戳、文件大小、隨機數和文件拓展名等信息。vim
下載地址 提取碼:nw6tbash
libfastcommon-master.zip
libfastcommon-master
的目錄中./make.sh
sudo ./make.sh install
fastdfs-master.zip
fastdfs-master
目錄中./make.sh
sudo ./make.sh install
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
/home/python/
目錄中建立目錄 fastdfs/tracker
/etc/fdfs/tracker.conf
配置文件 sudo vim /etc/fdfs/tracker.conf
修改 base_path=/home/python/fastdfs/tracker
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
/home/python/fastdfs/
目錄中建立目錄 storage
/etc/fdfs/storage.conf
配置文件 sudo vim /etc/fdfs/storage.conf
修改內容: base_path=/home/python/fastdfs/storage
store_path0=/home/python/fastdfs/storage
tracker_server=本身ubuntu虛擬機的ip地址:22122
sudo service fdfs_trackerd start
服務器
sudo service fdfs_storaged start
架構
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
負載均衡
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
/etc/fdfs/client.conf
配置文件 sudo vim /etc/fdfs/client.conf
修改內容: base_path=/home/python/fastdfs/tracker
tracker_server=本身ubuntu虛擬機的ip地址:22122
fdfs_upload_file /etc/fdfs/client.conf
要上傳的圖片文件 若是返回相似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg
的文件id
則說明文件上傳成功首先安裝一下nginx的依賴庫
sudo apt-get install build-essential
sudo apt-get install libtool
複製代碼
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
複製代碼
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
複製代碼
sudo apt-get install openssl
複製代碼
nginx-1.8.1.tar.gz
fastdfs-nginx-module-master.zip
nginx-1.8.1
目錄中sudo ./configure --prefix=/usr/local/nginx --add-module=/home/ubuntu/fastdfs-nginx-module-master解壓後的目錄的絕對路徑/src
sudo make
sudo make install
sudo cp fastdfs-nginx-module-master解壓後的目錄中src下的mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
sudo vim /etc/fdfs/mod_fastdfs.conf
修改內容:connect_timeout=10
tracker_server=本身ubuntu虛擬機的ip地址:22122
url_have_group_name=true
store_path0=/home/python/fastdfs/storage
複製代碼
sudo cp 解壓縮的fastdfs-master目錄conf目錄中的http.conf /etc/fdfs/http.conf
sudo cp 解壓縮的fastdfs-master目錄conf目錄中的mime.types /etc/fdfs/mime.types
sudo vim /usr/local/nginx/conf/nginx.conf
在http
部分中添加配置信息以下:
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
複製代碼
11.啓動nginx
sudo /usr/local/nginx/sbin/nginx