*FastDFS圖片伺服器搭建準備:1.需要libfastcommon安裝包 選擇最新穩定版(libfastcommon-1.0.36.tar.gz)2.需要FastDFS安裝包 選擇最新穩定版(fastdfs-5.11.tar.gz)3.需要Nginx安裝包 選擇最新穩定版(nginx-1.12. ...
*FastDFS圖片伺服器搭建準備:
1.需要libfastcommon安裝包 選擇最新穩定版(libfastcommon-1.0.36.tar.gz)
2.需要FastDFS安裝包 選擇最新穩定版(fastdfs-5.11.tar.gz)
3.需要Nginx安裝包 選擇最新穩定版(nginx-1.12.2.tar.gz)
4.需要fastdfs-nginx-modual模塊安裝包 選擇最新版(fastdfs-nginx-module-master.zip 版本1.20,對應fastdfs-5.11)
註意:--------fastdfs-nginx-module-master.zip版本1.19對應fastdfs-5.11---------
-------------- 常見的fastdfs-nginx-module_v1.16.tar.gz在這裡不推薦安裝,安裝過程有可能出問題 --------------------
*安裝依賴環境*:命令安裝:
gcc
安裝nginx需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc。
命令 yum -y install gcc gcc-c++
PCRE
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 相容的正則表達式庫。nginx的http模塊使用pcre來解析正則表達式,所以需要在linux上安裝
pcre庫。
命令:yum install -y pcre pcre-devel
zlib
zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。
命令:yum install -y zlib zlib-devel
openssl
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。
nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫。
命令:yum install -y openssl openssl-devel
libevent
命令:yum -y install libevent
1.安裝fastdfs
1.1上傳依賴包(xftp上傳):
1.1.1 libfastcommon-1.0.36.tar.gz
1.1.2 fastdfs-5.11.tar.gz
1.1.3 nginx-1.12.2.tar.gz
1.1.4 fastdfs-nginx-module-master.zip --版本1.20
1.2 安裝libfastcommon-1.0.36.tar.gz工具包
1.2.1解壓libfastcommon-1.0.36.tar.gz
命令:tar zxvf libfastcommon-1.0.36.tar.gz
完成之後會在libfastcommon-1.0.36文件夾下多出一個make.sh文件,供編譯使用
1.2.2編譯libfastcommon-1.0.36
命令:./make.sh
1.2.3安裝libfastcommon-1.0.36
命令:./make.sh install
安裝完成之後會在 /usr/lib64和/usr/lib下生成 libfastcommon.so;如果是比較低的版本只會在lib64下麵生成;如果是32位系統就應該copy一份
libfastcommon.so到lib文件夾下(先進入lib64文件夾執行命令:cp libfastcommon.so ../lib)
1.3安裝fastdfs-5.11.tar.gz
1.3.1解壓fastdfs-5.11.tar.gz
命令:tar zxvf fastdfs-5.11.tar.gz
解壓完成之後會解壓到astdfs-5.11文件夾下,進入之後會看到make.sh文件,供編譯使用
1.3.2編譯astdfs-5.11
命令:./make.sh
1.3.3安裝FastDFS
命令:./make.sh install
1.3.4如果沒有報錯那麼就成功了安裝log中會提示astdfs-5.11安裝到了/etc/fdfs目錄下,查看安裝目錄
命令:ll /etc/fdfs/
會看到client.conf.sample,storage.conf.sample,tracker.conf.sample這三個文件
我們需要把這三個示例文件複製一份,去掉.sample作為後續配置文件
命令:cp client.conf.sample client.conf
命令:cp storage.conf.sample storage.conf
命令:cp tracker.conf.sample tracker.conf
而且安裝完成之後會在/usr/bin文件下麵多出一些fdfs_*的命令,進入查看
命令:ll fdfs_*
-----------------顯示如下--------------------------------------------
-rwxr-xr-x. 1 root root 314463 Apr 1 14:07 fdfs_appender_test
-rwxr-xr-x. 1 root root 310144 Apr 1 14:07 fdfs_appender_test1
-rwxr-xr-x. 1 root root 297016 Apr 1 14:07 fdfs_append_file
-rwxr-xr-x. 1 root root 296716 Apr 1 14:07 fdfs_crc32
-rwxr-xr-x. 1 root root 297083 Apr 1 14:07 fdfs_delete_file
-rwxr-xr-x. 1 root root 297810 Apr 1 14:07 fdfs_download_file
-rwxr-xr-x. 1 root root 297392 Apr 1 14:07 fdfs_file_info
-rwxr-xr-x. 1 root root 315309 Apr 1 14:07 fdfs_monitor
-rwxr-xr-x. 1 root root 320303 Apr 1 14:07 fdfs_test
-rwxr-xr-x. 1 root root 319520 Apr 1 14:07 fdfs_test1
-rwxr-xr-x. 1 root root 298002 Apr 1 14:07 fdfs_upload_appender
-rwxr-xr-x. 1 root root 303126 Apr 1 14:07 fdfs_upload_file
---------------------------------------------------------------------
1.4安裝tracker服務
1.4.1配置tracker
1.4.1.1首選使用mkdir -p遞歸創建目錄命令,創建了/usr/local/fast/fastdfs-5.11/data/tracker目錄來保存tracker的data和log 根據個人習慣
命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/tracke
1.4.1.2修改tracker.conf
命令:vim /etc/fdfs/tracker.conf
打開後重點關註下麵4個配置:
1.disabled=false
2.port=22122 #預設埠號
3.base_path=/usr/local/fast/fastdfs-5.11/data/tracke #我剛剛創建的目錄
4.http.server_port=8080 #預設埠是8080
----------------------------------------保存退出-----------------------------------------------
1.4.1.3給firewalld添加開放tracker.conf配置文件中的22122和8080兩個埠。在firewall正常運行的情況下輸入以下命令:
命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent #添加8080埠
命令:firewall-cmd --zone=public --add-port=22122/tcp --permanent #添加22122埠
------------顯示success的話就代表已成功加入,重啟firewalld既可-----------------------
如果想檢查相應埠是否開啟,先重啟firewalld
命令:systemctl restart firewalld #重啟firewalld,要不然下一步查詢會返回NO
命令:firewall-cmd --query-port=8080/tcp --zone=public #查詢8080埠是否開啟
命令:firewall-cmd --query-port=22122/tcp --zone=public #查詢22122埠是否開啟
------------返回no既未開啟,顯示Yes為已開啟-----------------------------------------
1.4.1.4保存配置後啟動tracker,命令如下
命令:service fdfs_trackerd start
成功後可以看到: Starting fdfs_trackerd (via systemctl): [ OK ]
並且,發現剛剛創建的目錄中多了data和log兩個目錄,命令查看
命令:ll /usr/local/fast/fastdfs-5.11/data/tracke
1.4.1.5設置tracker開機啟動
命令:echo "service fdfs_trackerd start" |tee -a /etc/rc.d/rc.local
1.4.1.6查看tracker的埠監聽情況
命令:netstat -unltp|grep fdfs
---------------------------------------------------------------------------------
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 70382/fdfs_trackerd
---------------------------------------------------------------------------------
1.5安裝storage服務
1.5.1配置storage
1.5.1.1首選使用mkdir -p遞歸創建目錄命令,創建了/usr/local/fast/fastdfs-5.11/data/storage/0目錄在/usr/local/fast/fastdfs-5.11/data/storage
下保存storage的data和log ,/usr/local/fast/fastdfs-5.11/data/storage/0下保圖片文件
命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/storage/0
1.5.2修改storage.conf
命令:vim /etc/fdfs/storage.conf
打開後重點關註下麵9個配置:
1.disabled=false
2.group_name=group1 #組名,根據實際情況修改
3.port=23000 #設置storage的埠號,預設是23000,同一個組的storage埠號必須一致
4.base_path=/usr/local/fast/fastdfs-5.11/data/storage #設置storage數據文件和日誌目錄
5.store_path_count=1 #存儲路徑個數,需要和store_path個數匹配
6.store_path0=/usr/local/fast/fastdfs-5.11/data/storage/0 #實際圖片文件存儲路徑
7.#store_path1=/home/yuqing/fastdfs2 #如果掛載了不同的磁碟就可以配置store_path1 .. 等等
8.tracker_server=192.168.153.201:22122 #我CentOS7的ip地址
9.http.server_port=8888 #設置 http 埠號,預設8888
----------------------------------------保存退出----------------------------------------------
1.5.3給firewalld添加開放storage.conf配置文件中的23000和8888兩個埠。在firewall正常運行的情況下輸入以下命令:
命令:firewall-cmd --zone=public --add-port=23000/tcp --permanent #添加23000埠
命令:firewall-cmd --zone=public --add-port=8888/tcp --permanent #添加8888埠
------------顯示success的話就代表已成功加入,重啟firewalld既可-----------------------
如果想檢查相應埠是否開啟,先重啟firewalld
命令:systemctl restart firewalld #重啟firewalld,要不然下一步查詢會返回NO
命令:firewall-cmd --query-port=23000/tcp --zone=public #查詢23000埠是否開啟
命令:firewall-cmd --query-port=8888/tcp --zone=public #查詢8888埠是否開啟
------------返回no既未開啟,顯示Yes為已開啟-----------------------------------------
1.5.4保存配置後啟動storage,命令如下
命令:service fdfs_storaged start
成功後可以看到: Starting fdfs_storaged (via systemctl): [ OK ]
並且,發現剛剛創建的目錄/usr/local/fast/fastdfs-5.11/data/storage 下多了data和log兩個目錄。
(重點註意:/usr/local/fast/fastdfs-5.11/data/storage/0下多了個data,在data下有很多二進位文件夾,用來存儲圖片文件)
命令:ll /usr/local/fast/fastdfs-5.11/data/storage/0/data
1.5.5設置storage開機啟動
命令:echo "service fdfs_storaged start" |tee -a /etc/rc.d/rc.local
1.5.6查看storage的埠監聽情況
命令:netstat -unltp|grep fdfs
---------------------------------------------------------------------------------
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2231/fdfs_trackerd
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2323/fdfs_storaged
---------------------------------------------------------------------------------
1.6確定一下,storage是否註冊到了tracker中去
命令/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
成功後可以看到其中有一下字樣:
id = 192.168.153.201
ip_addr = 192.168.153.201 ACTIVE
1.7測試上傳:
1.7.1同樣的,需要修改客戶端的配置文件:
命令:vim /etc/fdfs/client.conf
打開後重點關註下麵3個配置:
1.base_path=/usr/local/fast/fastdfs-5.11/data/tracker #tracker伺服器文件路徑
2.tracker_server=192.168.153.201:22122 #tracker伺服器IP地址和埠號
3.http.tracker_server_port=8080 #tracker 伺服器的 http埠號,必須和tracker的設置對應起來
----------------------------------------保存退出---------------------------------------------------------------------------------
1.7.2上傳圖片:
1.7.2.1輸入上傳圖片命令:
命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /圖片路徑/1.png #這後面放的是圖片的位置
成功後會返回圖片的路徑:group1/M00/00/00/wKiZyVrGEhmAWotNAAQedSwYknA415_big.png
--------------------------------------------------------------------------------------------------------------------------------
組名:group1
磁碟:M00
目錄:00/00
文件名稱:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
--------------------------------------------------------------------------------------------------------------------------------
1.7.2.2我們上傳的圖片會被上傳到我們創建的/usr/local/fast/fastdfs-5.11/data/storage/0/data/00/00目錄下,讓我們去看看
應該會有:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
我們仔細看一下,實際文件存儲路徑下有創建好的多級目錄。data下有256個1級目錄,每級目錄下又有256個2級子目錄,總共65536個文件,新寫的文件會以
hash的方式被路由到其中某個子目錄下,然後將文件數據直接作為一個本地文件存儲到該目錄中。
---------------------------------------------------------------------------------------------------------------------------------
1.8訪問上傳的圖片:
1.8.1如果要訪問剛上傳的圖片,我們得需要結合nginx來實現原因如下:
1.我們在使用FastDFS部署一個分散式文件系統的時候,通過FastDFS的客戶端API來進行文件的上傳、下載、刪除等操作。同時通過FastDFS的HTTP伺服器來提供HTTP
服務。但是FastDFS的HTTP服務較為簡單,無法提供負載均衡等高性能的服務,所以FastDFS的開發者——淘寶的架構師餘慶同學,為我們提供了Nginx上使用的FastDFS
模塊(也可以叫FastDFS的Nginx模塊)。
2.FastDFS通過Tracker伺服器,將文件放在Storage伺服器存儲,但是同組之間的伺服器需要複製文件,有延遲的問題.假設Tracker伺服器將文件上傳到了172.20.132.57,
文件ID已經返回客戶端,這時,後臺會將這個文件複製到172.20.132.57,如果複製沒有完成,客戶端就用這個ID在172.20.132.57取文件,肯定會出現錯誤。這個
fastdfs-nginx-module可以重定向連接到源伺服器取文件,避免客戶端由於複製延遲的問題,出現錯誤。 正是這樣,FastDFS需要結合nginx,所以取消原來對HTTP的
直接支持。
------------------------------------------------------------------------------------------------------------------------------------
1.8.2安裝nginx並添加fastdfs-nginx-module
1.8.2.1解壓nginx-1.12.2.tar.gz,和fastdfs-nginx-module-master.zip
命令:tar -zxvf nginx-1.12.2.tar.gz
命令:unzip fastdfs-nginx-module-master.zip
1.8.2.2解壓後進入nginx-1.12.2目錄編譯安裝nginx,並添加fastdfs-nginx-module:fastdfs-nginx-module-master模塊
命令:./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module-master/src #解壓後fastdfs-nginx-module所在的位置
(執行完之後會在nginx-1.12.2目錄下生成Makefile文件,為下一步編譯使用)
1.8.2.2 編譯:
命令:make
1.8.2.3 安裝:
命令:make install
1.8.2.4 nginx的安裝目錄是/usr/local/nginx,安裝成功後查看
命令:ls /usr/local/nginx/
應該會有:conf html logs sbin 這幾個文件夾,其中nginx.conf在/usr/local/nginx/conf目錄下
1.8.2.5 修改nginx.conf配置:
命令:vim /etc/fdfs/tracker.conf
1.8.2.5.1跟server節點評級配置反向代理fdfs_group1
upstream fdfs_group1 { #配置反向代理fdfs_group1
server 127.0.0.1:9991; #監聽 9991
}
1.8.2.5.2打開後新添加一個如下server節點:
server {
listen 9991;
server_name localhost;
location / { #9991埠攔截的URL:9991/
root html;
index index.html index.htm;
}
location ~/group1/M00 { #重點:9991埠攔截的請求路徑
root /usr/local/fast/fastdfs-5.11/data/storage/0/data; #重點:圖片文件存儲路徑
ngx_fastdfs_module; #nginx-fastdfs-modual的名字:ngx_fastdfs_module
} #只要不在它的confrgure中改動,不管那個版本都叫:
error_page 500 502 503 504 /50x.html; #ngx_fastdfs_module
location = /50x.html {
root html;
}
}
1.8.2.5.3編輯Nginx原有80埠的server節點,添加反向代理的URL
server {
listen 80;
server_name localhost;
location /group1/M00 { #80埠攔截的URL:80/group1/M00
proxy_pass http://fdfs_group1; #反向代理的URL
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
----------------------------------------保存退出-------------------------------------------------
1.8.2.5.4在此給firewalld添加開放nginx.conf配置文件中的9991埠。在firewall正常運行的情況下輸入以下命令:
命令:firewall-cmd --zone=public --add-port=9991/tcp --permanent #添加9991埠
------------顯示success的話就代表已成功加入,重啟firewalld既可-----------------------
如果想檢查相應埠是否開啟,先重啟firewalld
命令:systemctl restart firewalld #重啟firewalld,要不然下一步查詢會返回NO
命令:firewall-cmd --query-port=9991/tcp --zone=public #查詢9991埠是否開啟
------------返回no既未開啟,顯示Yes為已開啟-----------------------------------------
1.8.2.5.5重啟nginx
命令:/usr/local/nginx/sbin/nginx -s reload
1.8.2.5.6現在我們再去訪問一下,原來我們上傳過的文件:
http://192.168.153.201/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
或者:
http://192.168.153.201:9991/group1/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
或者:
http://192.168.153.201:80/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
--------------------------------------------------------測試成功-----------------------------------------------------------