前面研究了fastdfs的安裝部署,並且做了多機同步。
這次我們解決下FastDFS做文件服務器並處理縮略圖的問題。
有兩個方案,方案1,在上傳過程中生成多張圖片,服務器存備。方案2,只上傳一張圖片,在下載時候進行調整。我們這里采用方案2。
①安裝gd,HttpImageFilterModule模塊需要依賴gd-devel的支持
yum -y install gd-deve

出錯了,怎么辦。
查找參數來列出gd-deve相關的包名:
yum search gd-devel

yum -y install gd-devel.x86_64
安裝成功
②將http_image_filter_module包含進來
1、 cd nginx-1.14.0
# nginx-1.14.0是我們的nginx安裝包目錄
2、./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src --with-http_image_filter_module
#只是比前面配置多加了個--with-http_image_filter_module
3、 make && make install 重新安裝
③修改配置
vim /usr/local/nginx/conf/nginx.conf
結果
location ~ group1/M00/(.+)_([0-9]+)x([0-9]+)\.(jpg|gif|png) { alias /data0/fastdfs/storage/storage0/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; } if ($h != "0") { rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$1.$4 break; } #根據給定的長寬生成縮略圖 image_filter resize $w $h; #原圖最大2M,要裁剪的圖片超過2M返回415錯誤,需要調節參數image_filter_buffer image_filter_buffer 2M; #try_files group1/M00$1.$4 $1.jpg; } location ~ group1/M00/(.+)\.?(.+){ alias /data0/fastdfs/storage/storage0/data; ngx_fastdfs_module; }
④測試
還是用我們之前的圖,雖然有點小
原圖
http://192.168.50.20/group1/M00/00/00/wKgyFFtm9mWAZfJhAAANHkI1RM4732.gif

縮略圖
http://192.168.50.20/group1/M00/00/00/wKgyFFtm9mWAZfJhAAANHkI1RM4732_80x50.gif

差別只是最后gif前加了個"_80x50"
GD是什么?
1、GD庫是php平台的一個關於圖像處理的擴展。
PHP通過GD擴展去操作圖片,是先在內存中處理,處理完以后以文件流的方式輸出,可以輸出到瀏覽器,也可以輸出到磁盤上。因此一般的步驟是:
- 創建畫布。其實就是在內存中開辟一塊區域。
- 在畫布上繪制圖形。可以填充顏色,繪制“點”、“線”、“文本”、“圖像”等
- 輸出圖像(瀏覽器或者磁盤)。
- 銷毀圖像,釋放資源。
我們這里不介紹太多,具體看園友的鏈接 GD庫簡介和使用
2、http_image_filter_module是什么?
http_image_filter_module是nginx提供的集成圖片處理模塊,支持nginx-0.7.54以后的版,可以用它實時縮放圖片,旋轉圖片,驗證圖片有效性以及獲取圖片寬高以及圖片類型信息 。
相關閱讀:
FastDFS 配置 Nginx 模塊,並實現分布式同步-Linux
C# 使用FastDFS 文件服務
