文件存儲方案FastDFS (存儲圖片)


FastDFS c語言 輕量級分布式系統
功能:文件存儲、文件訪問(文件上傳下載)、文件同步,解決大容量存儲和負載均衡的問題

架構: client、Tracker server 和 Storage server

文件索引:

一、Docker 安裝運行FastDFS
1. 獲取FastDFS鏡像:

遠端: sudo docker image pull delron/fastdfs
本地: sudo load -i fastdfs_docker.tar

2. 開啟tracker容器: sudo docker run -dit --name=tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker

3. 開啟storage容器: sudo docker run -dit --name=storage --network=host -e TRACKER_SERVER=192.168.121.200:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage

4.若無法重啟storage,可以刪除/var/fdfs/storage/data目錄下的 fdfs_storaged.pid,然后重新運行storage
二、 FastDFS的python客戶端
1. 進入fdfs_client-py-master.zip所在目錄下:

運行安裝:
pip fdfs_client-py-master.zip      # 文件下載地址待補充 
pip install mutagen -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

 

三、FastDFS客戶端的使用,需要有配置文件

1. 在utils文件下 新建fastdfs文件 並在其中添加 client.conf配置文件
2. 修改conf文件中:

base_path = FastDFS客戶端存放日志文件的目錄: base_path=/Users/meihao/Desktop
tracker_server = 運行tracker服務的機器ip:22122:tracker_server=tracker_server所在電腦ip:22122

3. shell測試fastdfs上傳圖片:

python manage.py shell 
from fdfs_client.client import Fdfs_client
#加載配置
client = Fdfs_client('meiduo_mall/utils/fastdfs/client.conf')
#上傳文件
ret = client.upload_by_filename('/home/ubuntu/Desktop/meinv.jpg')

"Remote file_id" : group1/M00/00/00/wKh5iF7z8miABdiGAACiSTpJlaQ999.jpg

4.django項目中添加配置

# FDFS需要的配置文件路徑(即: client.conf文件絕對路徑).
FDFS_CLIENT_CONF = os.path.join(BASE_DIR, 'utils/fastdfs/client.conf')
# FDFS中storage和tracker位置.端口規定死是8888, ip換成自己的ip
FDFS_URL = 'http://192.168.121.136:8888/'
# 指定django系統使用的文件存儲類:
DEFAULT_FILE_STORAGE = 'meiduo_mall.utils.fastdfs.storage.FastDFSStorage'

 

fastdfs跨ip訪問 重啟storage

django 模型類中的文件字段
在django中定義模型類時, 文件字段可以使用FileField(其他)和ImageField(圖片)
django默認文件保存的過程
客戶端 ===請求上傳文件===> Django服務器(默認將文件保存到服務器本地)

 

 

推薦使用 MinIO文件服務,設置方便,易使用(https://docs.min.io/cn/minio-quickstart-guide.html) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM