国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于Minio和Thumbor搭建獨立圖片服務

jsyzchen / 2324人閱讀

摘要:但是很多企業項目因為各種需求,還是會要求圖片服務部署在內部。所以我們還是可能會需要一個可獨立部署的圖片服務。注意,這種啟動模式僅限于測試環境下,一旦命令終止,數據將會消失。

多數應用系統都會用到圖片存儲,從系統架構角度來說,像圖片存儲這樣的服務應該盡量從核心業務中剝離出來。很多人會選擇在線云存儲服務,比如七牛云存儲之類的。但是很多企業項目因為各種需求,還是會要求圖片服務部署在內部。所以我們還是可能會需要一個可獨立部署的圖片服務。

自己開發實現一套圖片存儲服務系統,會花不少功夫,但如果有現成的方案何樂而不為呢?我在Github上發現Minio和Thumbor這兩個項目可以幫我們達成需求。

Minio

Minio Cloud Storage是一個分布式對象存儲系統。它是一個基于Go的開源項目,并且實現了Amazon S3的API。也就是說Minio相當于一個開源的Amazon S3。

使用docker安裝可能是最省事的方式,兩行命令即可安裝下載并且運行起來。注意,這種啟動模式僅限于測試環境下,一旦命令終止,數據將會消失。生產環境下的安裝部署請參考文檔。

docker pull minio/minio
docker run -p 9000:9000 minio/minio server /export

啟動之后,命令行中就會顯示一堆系統信息。

Endpoint:  http://172.17.0.2:9000  http://127.0.0.1:9000
AccessKey: PT7TIDXEV7KH7S5R91JH
SecretKey: 17hdYH0mF2Ljd3ahZ7JGyi5l/ZPjunLlldUMY/A0
Region:    us-east-1
SQS ARNs:  

之后就可以在瀏覽器中訪問 http://127.0.0.1:9000 并且使用AccessKey和SecretKey登錄。

其核心功能很簡單,創建bucket,上傳文件。其所有的文件鏈接都是含有過期時間的私有鏈接。然后我們就可以使用其提供的SDK使用了,就是這么簡單。

minio專注于文件存儲,并沒有什么圖片處理功能,但是我們可以使用thumbor這個服務來做圖片處理。

Thumbor

Thumbor是一個非常強大的圖片處理服務,可以實現圖片裁剪、縮放、濾鏡,甚至是人臉識別。

它是一個基于Python的開源項目,在python環境下可以通過pip安裝。

pip install thumbor

然后使用下面命令即可運行。

thumbor-config > ./thumbor.conf # 生成配置文件
thumbor --port=8888 --conf=thumbor.conf 

該服務運行在本地的8888端口,之后可以就可以直接通過url調用服務了。

比如這張圖片 https://www.apple.com/cn/home/images/gallery/iphone_alt_small_2x.jpg

就可以使用 http://localhost:8888/unsafe/300x200/https://www.apple.com/cn/home/images/gallery/iphone_alt_small_2x.jpg 這個url使其縮放到300x200大小。

Thumbor AWS

Thumbor處理圖片很強大,但是只提供了很弱的圖片存儲功能。其圖片上傳修改接口沒有做驗證,所以默認情況下沒有開啟。但是Thumbor有一些社區支持,第三方開發者做了一些擴展。其中Thumbor AWS 這個擴展可以把Thumbor后端跟Amazon S3整合起來。在url上提交圖片文件的key,Thumbor的后端會從Amazon S3中取出文件做處理。而之前Minio兼容Amazon S3的Api。所以意味著只需要做一點改動,就可以整合這兩個服務。最終就可以達成,利用Minio上傳存儲圖片,利用Thumbor取出圖片做處理。

我們利用pip來安裝這個擴展。

pip install tc_aws

Thumbor AWS這個擴展利用Boto3連接Amazon S3的SDK,根據Boto3文檔中的配置,我們需要創建 ~/.aws/credentials 這個文件,并且填寫剛才Minio提供的AccessKey和SecretKey,授權這個服務訪問Minio。

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

之后在剛才利用thumbor_conf生成的thumbor.conf中修改一些配置。

TC_AWS_REGION="us-east-1" #填寫minio提供的Region
TC_AWS_ENDPOINT="http://127.0.0.1:9000" #將默認的Amazon S3地址換成minio運行地址
LOADER = "tc_aws.loaders.s3_loader" #將Thumbor的loader換成tc_aws.loaders.s3_loader

重新啟動Thumbor,然后就可以在瀏覽器中通過Thumbor訪問Minio中的圖片了。

比如,在Minio的docker這個bucket中上傳了一張aaa.jpg,然后我們就可以通過 http://localhost:8888/unsafe/docker/aaa.jpg 這個地址訪問到這張圖片的原圖。當然,我們可以通過 http://localhost:8888/unsafe/300x200/docker/aaa.jpg 這種方式對這張圖片進行300x200的縮放。

這樣我們就大功告成了。

總結

各種服務都有其專精的一面,幸好Amazon S3在云服務API層面上形成了某種事實上的標準,所以這點能夠幫助我們將一些服務整合在一起。

實現效果上來看,最終達成了圖片存儲和提取縮放需求,對于一些項目也足夠使用。不過圖片通過Thumbor處理后,其私有鏈接的屬性也沒了。這在一些要求高的企業服務項目中也是蠻尷尬的。

簡單看了下Thumbor的源碼,其圖片輸出是tornado實現的,相信有時間hack一下源碼,實現私有鏈接也不會太困難的。

Enjoy it!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26812.html

相關文章

  • 基于MinioThumbor搭建獨立圖片服務

    摘要:但是很多企業項目因為各種需求,還是會要求圖片服務部署在內部。所以我們還是可能會需要一個可獨立部署的圖片服務。注意,這種啟動模式僅限于測試環境下,一旦命令終止,數據將會消失。 多數應用系統都會用到圖片存儲,從系統架構角度來說,像圖片存儲這樣的服務應該盡量從核心業務中剝離出來。很多人會選擇在線云存儲服務,比如七牛云存儲之類的。但是很多企業項目因為各種需求,還是會要求圖片服務部署在內部。所以...

    novo 評論0 收藏0
  • Vue中通過minio上傳文件的詳細步驟

      您知道如何在Vue中minio上傳文件(stream流和鏈接)嗎?現在就講解:  1、minio的安裝  不用做過多,直接使用npm或者cnpm下載即可  npmiminio--save   //或者   cnpmiminio--save  2、minio.js文件  封裝了連接minio、文件上傳,文件刪除等方法  注:此文件中的url都是在minio設置了永久鏈接的基礎上  2.1連接mi...

    3403771864 評論0 收藏0
  • ZPan自建網盤存儲-基于各大云存儲商的網盤系統zpan安裝使用教程

    想自建網盤但是又苦于數據太大,購買大存儲容量的VPS主機價格太貴?不妨試試ZPan自建網盤存儲。ZPan致力于打造一款不限速的網盤系統,因此采用客戶端直連云存儲的方式進行設計,即它不支持本地存儲,你的所有數據都是存在第三方存儲商那里。目前ZPan支持所有兼容S3協議的云存儲平臺,包括阿里云OSS 、騰訊云COS 、七牛云Kodo 、Ucloud US3(暫不支持自動設置CORS) 、華為云OBS ...

    番茄西紅柿 評論0 收藏2637

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<