029、Docker和FastDFS上传和下载文件

    xiaoxiao2023-11-27  140

    1. Docker安装运行FastDFS

    1.获取FastDFS镜像

    # 从仓库拉取镜像

    $ sudo docker image pull delron/fastdfs

    # 解压教学资料中本地镜像

    $ sudo docker load -i 文件路径/fastdfs_docker.tar

    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.103.210:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage

    4.查看宿主机映射路径

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

    2. FastDFS客户端上传文件

    Python版本的FastDFS客户端使用参考文档

    1.安装FastDFS客户端扩展

    安装准备好的fdfs_client-py-master.zip到虚拟环境中

    $ pip install fdfs_client-py-master.zip

    $ pip install mutagen

    $ pip isntall requests

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

    meiduo_mall.utils.fastdfs.client.conf

    base_path=FastDFS客户端存放日志文件的目录

    tracker_server=运行Tracker服务的机器ip:22122

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

    # 使用 shell 进入 Python交互环境

    $ python manage.py shell

    # 1. 导入FastDFS客户端扩展 from fdfs_client.client import Fdfs_client # 2. 创建FastDFS客户端实例 client = Fdfs_client('meiduo_mall/utils/fastdfs/client.conf') # 3. 调用FastDFS客户端上传文件方法 ret = client.upload_by_filename('/Users/chao/Desktop/kk.jpeg') ret = { 'Group name': 'group1', 'Remote file_id': 'group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg', 'Status': 'Upload successed.', 'Local file name': '/Users/chao/Desktop/kk.jpeg', 'Uploaded size': '69.00KB', 'Storage IP': '192.168.103.210' } ret = { 'Group name': 'Storage组名', 'Remote file_id': '文件索引,可用于下载', 'Status': '文件上传结果反馈', 'Local file name': '上传文件全路径', 'Uploaded size': '文件大小', 'Storage IP': 'Storage地址' }

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

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

    协议: http IP地址:192.168.103.210 Nginx服务器的IP地址。因为 FastDFS 擅长存储静态文件,但是不擅长提供静态文件的下载服务,所以我们一般会将 Nginx 服务器绑定到 Storage ,提升下载性能。 端口:8888 Nginx服务器的端口。 路径:group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg 文件在Storage上的文件索引。 完整图片下载地址

    http://192.168.103.210:8888/group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg

    编写测试代码:meiduo_mall.utils.fdfs_t.html

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

    4、录入商品数据和图片数据

    1. SQL脚本录入商品数据

    $ mysql -h127.0.0.1 -uroot -pmysql meiduo_mall < 文件路径/goods_data.sql

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

    1.准备新的图片数据压缩包

    2.删除 Storage 中旧的data目录

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

    # 解压命令 sudo tar -zxvf data.tar.gz

    4.查看新的data目录

    FastDFS客户端扩展的配置文件模板下载

    链接:https://pan.baidu.com/s/1VwjKFbGmRcQkVsXwGaMsmQ

    提取码:j58n

     

     

    最新回复(0)