Docker中FastDFS安装和使用

一、Docker安装运行FastDFS

1.获取FastDFS镜像

# 从仓库拉取镜像
$ sudo docker image pull delron/fastdfs
# 解压⽂档中本地镜像
$ sudo docker load -i ⽂件路径/fastdfs_docker.tar
sudo docker load -i /home/sanha/fastdfs_docker.tar

在这里插入图片描述

创建挂载文件

# cd /var
# mkdir fdfs
# mkdir storage
# mkdir tracker
➜  ~ sudo su
[sudo] password for sanha: 
root@sanha-virtual-machine:/home/sanha# cd /var/fdfs/
root@sanha-virtual-machine:/var/fdfs# ls
root@sanha-virtual-machine:/var/fdfs# mkdir storage
root@sanha-virtual-machine:/var/fdfs# mkdir tracker
root@sanha-virtual-machine:/var/fdfs# ls
storage  tracker
root@sanha-virtual-machine:/var/fdfs#

在这里插入图片描述

2.开启tracker容器
我们将 tracker 运⾏⽬录映射到宿主机的 /var/fastdfs/tracker⽬录中。

sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
root@sanha-virtual-machine:/home/sanha# cd /var/fdfs/
root@sanha-virtual-machine:/var/fdfs# sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
26fef3c64e890d51d9e069de14defcd6ed3c3624d224e73194bf6ed67a416437

在这里插入图片描述

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.231.130:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
root@sanha-virtual-machine:/var/fdfs# sudo docker run -dti --name storage --network=host -e TRACKER_SERVER=192.168.231.130:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
324f0152a4a33315f024fd53d9fc0ac9f8d5836ee2eb568580fa12b2fc5bc6bf

在这里插入图片描述
4.启动容器

root@sanha-virtual-machine:/var/fdfs# sudo docker container start storage
storage
root@sanha-virtual-machine:/var/fdfs# sudo docker container start tracker
tracker
root@sanha-virtual-machine:/var/fdfs# 

查看正在运行的容器

sudo docker container ls

在这里插入图片描述

5.查看宿主机映射路径
注意:如果⽆法重启storage容器,可以删除/var/fdfs/storage/data⽬录下fdfs_storaged.pid ⽂件,然后重新运⾏storage

二、FastDFS客户端上传⽂件

Python版本的FastDFS客户端使⽤参考⽂档:https://github.com/JaceHo/fdfs_client-py

1.安装FastDFS客户端扩展
安装模块虚拟环境中

$ pip install py3Fdfs
$ pip install mutagen
$ pip install requests
(mg_env) ➜  apps git:(dev) ✗ pip install py3Fdfs
Collecting py3Fdfs
  Downloading py3Fdfs-2.2.0.tar.gz (36 kB)
Building wheels for collected packages: py3Fdfs
  Building wheel for py3Fdfs (setup.py) ... done
  Created wheel for py3Fdfs: filename=py3Fdfs-2.2.0-py3-none-any.whl size=36905 sha256=5134bf8307bc582cdcef0b7c99f7283bd86223015ff13257c8c81dd758cdc751
  Stored in directory: /home/sanha/.cache/pip/wheels/d4/7b/08/f6d13273617b5c6694c08386b89f3af55db5010ef56933fffc
Successfully built py3Fdfs
Installing collected packages: py3Fdfs
Successfully installed py3Fdfs-2.2.0

(mg_env) ➜  apps git:(dev) ✗ pip install mutagen
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/mutagen/
Collecting mutagen
  Downloading mutagen-1.46.0-py3-none-any.whl (193 kB)
     |████████████████████████████████| 193 kB 13 kB/s 
Installing collected packages: mutagen
Successfully installed mutagen-1.46.0

(mg_env) ➜  apps git:(dev) ✗ pip install requests
Requirement already satisfied: requests in /home/sanha/.virtualenvs/mg_env/lib/python3.8/site-packages (2.28.2)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/sanha/.virtualenvs/mg_env/lib/python3.8/site-packages (from requests) (1.26.14)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/sanha/.virtualenvs/mg_env/lib/python3.8/site-packages (from requests) (3.0.1)
Requirement already satisfied: certifi>=2017.4.17 in /home/sanha/.virtualenvs/mg_env/lib/python3.8/site-packages (from requests) (2022.12.7)
Requirement already satisfied: idna<4,>=2.5 in /home/sanha/.virtualenvs/mg_env/lib/python3.8/site-packages (from requests) (3.4)

2.准备FastDFS客户端扩展的配置⽂件
mgproject.utils.fastdfs.client.conf

# connect timeout in seconds
# default value is 30s
connect_timeout=30

# network timeout in seconds
# default value is 30s
network_timeout=60

# the base path to store log files
base_path=/home/ynxiaolu/Desktop

# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.231.130:22122

在这里插入图片描述

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

# 使⽤ shell 进⼊ Python交互环境
$ python manage.py shell
Python 3.8.10 (default, Nov 14 2022, 12:59:47) 
[GCC 9.4.0] on linux
Django 2.2

# 1. 导⼊FastDFS客户端扩展
>>> from fdfs_client.client import Fdfs_client, get_tracker_conf

# 2. 创建FastDFS客户端实例
>>> tracker_path = get_tracker_conf('/home/sanha/Desktop/PythonProjects/mangguo/mgproject/mgproject/utils/fastdfs/client.conf')

>>> client = Fdfs_client(tracker_path)

# 3. 调⽤FastDFS客户端上传⽂件⽅法
>>> ret = client.upload_by_filename('/home/sanha/Desktop/sanha.jpg')
>>> 

在这里插入图片描述

ret = {
    
    
'Group name': b'group1', 
'Remote file_id': 
b'group1/M00/00/00/wKjngmP8KOqAScumAAEYnyGQQes988.jpg', 
'Status': 'Upload successed.', 
'Local file name': '/home/sanha/Desktop/sanha.jpg', 
'Uploaded size': '70.16KB', 
'Storage IP': b'192.168.231.130'}
ret = {
    
    
'Group name': 'Storage组名',
'Remote file_id': '⽂件索引,可⽤于下载',
'Status': '⽂件上传结果反馈',
'Local file name': '上传⽂件全路径',
'Uploaded size': '⽂件⼤⼩',
'Storage IP': 'Storage地址'
 }

查看图片存储路径

➜  ~ cd /var/fdfs 
➜  fdfs ls
storage  tracker
➜  fdfs cd storage 
➜  storage ls
data  logs
➜  storage cd datadata ls
00  06  0C  12  18  1E  24  2A  30  36  3C  42  48  4E  54  5A  60  66  6C  72  78  7E  84  8A  90  96  9C  A2  A8  AE  B4  BA  C0  C6  CC  D2  D8  DE  E4  EA  F0  F6  FC                 sync
01  07  0D  13  19  1F  25  2B  31  37  3D  43  49  4F  55  5B  61  67  6D  73  79  7F  85  8B  91  97  9D  A3  A9  AF  B5  BB  C1  C7  CD  D3  D9  DF  E5  EB  F1  F7  FD
02  08  0E  14  1A  20  26  2C  32  38  3E  44  4A  50  56  5C  62  68  6E  74  7A  80  86  8C  92  98  9E  A4  AA  B0  B6  BC  C2  C8  CE  D4  DA  E0  E6  EC  F2  F8  fdfs_storaged.pid
03  09  0F  15  1B  21  27  2D  33  39  3F  45  4B  51  57  5D  63  69  6F  75  7B  81  87  8D  93  99  9F  A5  AB  B1  B7  BD  C3  C9  CF  D5  DB  E1  E7  ED  F3  F9  FE
04  0A  10  16  1C  22  28  2E  34  3A  40  46  4C  52  58  5E  64  6A  70  76  7C  82  88  8E  94  9A  A0  A6  AC  B2  B8  BE  C4  CA  D0  D6  DC  E2  E8  EE  F4  FA  FF
05  0B  11  17  1D  23  29  2F  35  3B  41  47  4D  53  59  5F  65  6B  71  77  7D  83  89  8F  95  9B  A1  A7  AD  B3  B9  BF  C5  CB  D1  D7  DD  E3  E9  EF  F5  FB  storage_stat.dat
➜  data cd 00/00 
➜  00 ls
wKjngmP8KOqAScumAAEYnyGQQes988.jpg

在这里插入图片描述

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

思考:如何才能找到在Storage中存储的图⽚?
协议:http

IP地址:192.168.231.130

Nginx服务器的IP地址。
因为 FastDFS 擅⻓存储静态⽂件,但是不擅⻓提供静态⽂件的下载服务,
所以我们⼀般会将 Nginx 服务器绑定到 Storage ,提升下载性能。

端⼝:8888
Nginx服务器的端⼝。

路径:group1/M00/00/00/wKjngmP8KOqAScumAAEYnyGQQes988.jpg
⽂件在Storage上的⽂件索引。

完整图⽚下载地址
http://192.168.231.130:8888/group1/M00/00/00/wKjngmP8KOqAScumAAEYnyGQQes988.jpg
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_68744965/article/details/129151338
今日推荐