Docker和FastDFS上传和下载文件

1. Docker安装运行FastDFS

1.获取FastDFS镜像

# 从仓库拉取镜像
$ sudo docker image pull delron/fastdfs

2.开启tracker容器

  • 我们将 tracker 运行目录映射到宿主机的/var/fdfs/tracker目录中。
$ sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker

在这里插入图片描述

3.开启storage容器

  • TRACKER_SERVER=Tracker的ip地址:22122(Tracker的ip地址不要使用127.0.0.1)
  • 我们将 storage 运行目录映射到宿主机的/var/fdfs/storage目录中。
$ sudo docker run -dti --name storage --network=host -e TRACKER_SERVER=192.168.219.131:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage

在这里插入图片描述

4.查看宿主机映射路径
在这里插入图片描述

在这里插入图片描述

注意:如果无法重启storage容器,可以删除/var/fdfs/storage/data目录下的fdfs_storaged.pid文件,然后重新运行storage。

2. FastDFS客户端上传文件

1.安装FastDFS客户端扩展

  • 安装准备好的fdfs_client-py-master.zip到虚拟环境中
$ pip install fdfs_client-py-master.zip
$ pip install mutagen==1.40
$ pip install requests

在这里插入图片描述在这里插入图片描述

2.准备FastDFS客户端扩展的配置文件

  • utils.fastdfs.client.conf
    在这里插入图片描述



base_path=FastDFS客户端存放日志文件的目录
tracker_server=运行Tracker服务的机器ip:22122

3.FastDFS客户端实现文件存储

# 使用 shell 进入 Python交互环境
$ python manage.py shell

上传文件需要先创建fdfs_client.client.Fdfs_client的对象,并指明配置文件,如

from fdfs_client.client import Fdfs_client
client = Fdfs_client('utils/fastdfs/client.conf')

通过创建的客户端对象执行上传文件的方法

client.upload_by_filename(文件名)
或
client.upload_by_buffer(文件bytes数据)

如:

>>> from fdfs_client.client import Fdfs_client
>>> client=Fdfs_client('utils/fastdfs/client.conf')
>>> client.upload_by_filename('/home/poppies/Desktop/images/0.jpg')
getting connection
<fdfs_client.connection.Connection object at 0x7f25174eb940>
<fdfs_client.fdfs_protol.Tracker_header object at 0x7f25174eb908>
{'Remote file_id': 'group1/M00/00/00/wKjlhFsTgJ2AJvG_AAAyZgOTZN0850.jpg', 'Uploaded size': '12.00KB',
 'Local file name': '/home/python/Desktop/images/0.jpg', 'Storage IP': '192.168.229.132',
  'Group name': 'group1', 'Status': 'Upload successed.'}
  • ‘Group name’: ‘Storage组名’,
  • ‘Remote file_id’: ‘文件索引,可用于下载’,
  • ‘Status’: ‘文件上传结果反馈’,
  • ‘Local file name’: ‘上传文件全路径’,
  • ‘Uploaded size’: ‘文件大小’,
  • ‘Storage IP’: ‘Storage地址’

3. 浏览器下载并渲染图片

思考:如何才能找到在Storage中存储的图片?

  • 协议:

    • http
  • IP地址:192.168.103.158

    • Nginx服务器的IP地址。
    • 因为 FastDFS 擅长存储静态文件,但是不擅长提供静态文件的下载服务,所以我们一般会将 Nginx 服务器绑定到 Storage ,提升下载性能。
  • 端口:8888

    • Nginx服务器的端口。
  • 路径:group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg

    • 文件在Storage上的文件索引。
  • 完整图片下载地址

    • http://192.168.103.158:8888/group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg

编写测试代码:utils.fdfs.html

<img src="http://192.168.103.158:8888/group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg" width="320" height="480">

录入商品数据和图片数据

1. SQL脚本录入商品数据

导入数据之前,务必确保已经对goods和contents子应用的模型进行了迁移

python manage.py makemigrations
python manage.py migrate
$ mysql -h127.0.0.1 -uroot -pmysql tuling_mall < 文件路径/goods_data.sql

2. FastDFS服务器录入图片数据

1.准备新的图片数据压缩包
在这里插入图片描述

2.删除 Storage 中旧的data目录

在这里插入图片描述

3.拷贝新的图片数据压缩包到 Storage,并解压

# 解压命令

sudo tar -zxvf data.tar.gz

在这里插入图片描述

4.查看新的data目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R8J2qZH8-1649946476383)(./images/37解压后的data.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值