赞
踩
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
。
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 data ➜ data 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
思考:如何才能找到在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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。