1. 程式人生 > >Linux 安裝FastDFS圖片伺服器以及配合nginx實現圖片檢視

Linux 安裝FastDFS圖片伺服器以及配合nginx實現圖片檢視

各位同學,今天我們來學習一下如何安裝FastDFS圖片伺服器,首先我們先來介紹一下什麼是圖片伺服器。

1.什麼是FastDFS

FastDFS是用c語言編寫的一款開源的分散式檔案系統。FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。

2.FastDFS架構

FastDFS架構包括 Tracker server和Storage server。客戶端請求Tracker server進行檔案上傳、下載,通過Tracker server排程最終由Storage server完成檔案上傳和下載。

Tracker server作用是負載均衡和排程,通過Tracker server在檔案上傳時可以根據一些策略找到Storage server提供檔案上傳服務。可以將tracker稱為追蹤伺服器或排程伺服器。

Storage server作用是檔案儲存,客戶端上傳的檔案最終儲存在Storage伺服器上,Storage server沒有實現自己的檔案系統而是利用作業系統 的檔案系統來管理檔案。可以將storage稱為儲存伺服器。

3.搭建FastDFS

以下所涉及到的下載檔案本人都會上傳到網上供各位同學下載使用

3.1 環境準備

首先我們需要安裝一些所需環境在linux中

yum install gcc-c++
yum -y install libevent
yum install perl

3.2 安裝libfastcommon

FastDFS 5.05版本不再依賴libevent,而依賴於libfastcommon,因此需要先安裝libfastcommon。
軟體包下載地址:https://github.com/happyfish100/libfastcommon
下載後將其上傳至/usr/local下進行解壓

# 切換目錄
cd /usr/local
# 解壓(沒有unzip命令的同學自行安裝)
unzip libfastcommon-master.zip -d libfastcommon-master
# 進到解壓後的檔案目錄下
cd libfastcommon-master # 進行安裝 ./make.sh ./make.sh install

3.3 安裝FastDFS

將FastDFS壓縮包上傳至伺服器/usr/local下

# 解壓
tar -zxvf FastDFS_v5.05.tar.gz
# 切換碟符
cd FastDFS
# 安裝
./make.sh
./make.sh install

如果安裝成功,則可以看到/etc/fdfs目錄下生成了3個檔案
這裡寫圖片描述

3.4 配置tracker節點

上面我們也提到了關於客戶端請求Tracker server進行檔案上傳、下載,通過Tracker server排程最終由Storage server完成檔案上傳和下載的步驟,所以我們現在需要配置tracker節點

#建立tracker的資料檔案和日誌儲存目錄
mkdir -p /data/fastdfs
# 切換碟符  
cd /etc/fdfs
# 重新命名
mv tracker.conf.sample tracker.conf
#修改的檔案內容如下(基礎配置,不考慮效能調優情況下):
vi tracker.conf 
base_path=/data/fastdfs  #設定 tracker 的資料檔案和日誌目錄(需預先建立)
http.server_port=6666  #設定http埠號,預設為8080

儲存並退出,之後建立軟連線

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
#啟動tracker節點
service fdfs_trackerd start  

啟動成功後,在/data/fastdfs目錄下生成了data和logs兩個目錄。
檢視日誌如下:
這裡寫圖片描述

3.5 配置storage節點

#建立
mkdir /data/fastdfs-storage  
# 切換碟符
cd /etc/fdfs/
#重新命名
mv storage.conf.sample storage.conf
#修改的檔案內容如下(基礎配置,不考慮效能調優情況下):
vi storage.conf
group_name=group1   #組名,可根據實際情況修改
base_path=/data/fastdfs-storage #設定storage資料檔案和日誌目錄,需預先建立
store_path_count=1  #儲存路徑個數,需要和 store_path 個數匹配、
store_path0=/data/fastdfs-storage #儲存路徑
tracker_server=192.168.116.145:22122 # #tracker 伺服器的 IP地址和埠號,如果是單機搭建,IP不要寫127.0.0.1,否則啟動不成功。
http.server_port=8888  #設定 http 埠號
#建立軟連
ln -s /usr/bin/fdfs_storaged /usr/local/bin
#啟動storage
service fdfs_storaged start

檢視日誌以確保正常啟動

cat /data/fastdfs-storage/logs/storaged.log

這裡寫圖片描述

確認啟動成功後,可以執行 fdfs_monitor 檢視 storage伺服器是否已經登記到 tracker伺服器。

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

看到“ACTIVE”即可確認 storage 執行正常。
這裡寫圖片描述

3.6 使用fdfs_test上傳圖片測試

為確保fastdfs正常執行,我們使用fdfs_test進行圖片上傳

# 切換碟符
cd /etc/fdfs/
# 重新命名
mv client.conf.sample client.conf
# 修改配置
vi client.conf
base_path=/data/fastdfs-storage/logs
tracker_server=10.10.169.140:22122
#上傳測試(最後即表示上傳的圖片)
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /data/yanjiang.png

如下圖所示並生成url即表示上傳成功
這裡寫圖片描述

好了 現在我們的fastdfs就算是搭建完成了,但是我們現在使用生成的url在瀏覽器中是無法看到上傳的圖片的。想要看到上傳好了的圖片的話,我們還需要使用nginx與fastdfs進行配合才能完成。

4.在Storage上安裝nginx

因為我們現在是單體的,所以不需要在tracker上安裝nginx,我們現在的主要目的是為了進行上傳圖片的檢視,因此在Storage上安裝nginx即可。

4.1 安裝FastDFS-nginx-module

將FastDFS-nginx-module_v1.16.tar.gz傳至/usr/local/下

# 切換碟符
cd /usr/local/
# 下載
wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
# 解壓
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
#修改config檔案將/usr/local/路徑改為/usr/
vi /usr/local/fastdfs-nginx-module/src/config

這裡寫圖片描述

# 將FastDFS-nginx-module/src下的mod_FastDFS.conf拷貝至/etc/fdfs/下
cp mod_fastdfs.conf /etc/fdfs/
# 修改mod_fastdfs.conf的內容
vi /etc/fdfs/mod_fastdfs.conf
base_path=/data/fastdfs-storage/logs
tracker_server=10.10.169.140:22122
#tracker_server=10.10.169.141:22122(多個tracker配置多行)
url_have_group_name=true        #url中包含group名稱
store_path0=/data/fastdfs-storage   #指定檔案儲存路徑

修改配置檔案後進行儲存,之後將http.conf 與 mime.types拷貝到/etc/fdfs下

# 切換碟符
cd /usr/local/FastDFS/conf/
# 拷貝檔案
cp http.conf mime.types /etc/fdfs/

4.2 安裝nginx

安裝nginx的步驟在這裡不做過多的解釋,如果有不理解的同學,可以看我之前寫過的Nginx簡單介紹以及linux下使用Nginx進行負載均衡的搭建來詳細的瞭解,首先我們先將nginx上傳到伺服器的/usr/local中。

# 解壓
tar -zxvf nginx-1.8.0.tar.gz
# 切換目錄
cd nginx-1.8.0
# 環境準備
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
yum install gd-devel
# 執行
./configure \
--prefix=/data/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/fastdfs-nginx-module/src \
--with-http_image_filter_module
# 執行
make
make install
# 切換目錄
cd /data/nginx/conf/
# 修改配置檔案
vi nginx.conf
#新增location
location /group1/M00/{
                ngx_fastdfs_module;
        }

這裡寫圖片描述

啟動nginx,我們來使用剛才測試的時候生成的圖片url,如下圖所示,成功
這裡寫圖片描述

5.nginx配合fastdfs實現圖片自動更改尺寸(附加)

好了,現在基本的功能我們已經完成了,圖片上傳以及根據url檢視圖片,現在我們來說一個附加的功能,我們希望可以根據url不同的圖片長和寬資料來更改我們檢視到的圖片的大小,例如我們訪問http://10.10.169.140/group1/M00/00/00/CgqpjFomDiOAUON_AASxcvqVW8Y340_big.png這個圖片url顯示如下圖所示:
這裡寫圖片描述

稍作修改
http://10.10.169.140/group1/M00/00/00/CgqpjFomDiOAUON_AASxcvqVW8Y340_big!150x100.png,圖片就如下圖所示
這裡寫圖片描述

其實,想實現此功能主要用到了nginx的http_image_filter_module外掛,當然如果你按照上面的步驟安裝了此nginx,你會發現此外掛已經安裝好了,只要將nginx中的配置檔案的配置進行修改即可,修改如下圖所示
這裡寫圖片描述

location ~ /group1/M00/(.*)!([0-9]+)x([0-9]+)\.(jpg|gif|png){
           root /data/fastdfs-storage/data;
           ngx_fastdfs_module;
           set $w $2;
           set $h $3;
              if ($w != "0") {
                    rewrite /group1/M00/(.+)!(\d+)x(\d+)\.(jpg|gif|png)$ /group1/M00/$1.$4 break;
              }
              image_filter resize $w $h;
              image_filter_buffer 100M;
        }

         location ~ group1/M00/(.+)\.?(.+){
             alias /data/fastdfs-storage/data;
             ngx_fastdfs_module;
        }

好了,以上就是搭建FastDFS圖片伺服器全過程以及一些附加功能,希望可以幫助更多的同學可以少踩一些坑,下篇文章我們將會展示如何將fastDFS與java進行結合在實際開發中進行圖片的上傳等操作。
所需資源下載地址http://download.csdn.net/download/liboyang71/10148823