Django使用FastDFS

Django使用FastDFS_第1张图片
th.jpg

项目中用到了fastdfs存储图片,在这里记录一下

什么是FastDFS

fastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。[来自百科]

有什么优点

  • 海量存储:主从型分布式存储,存储空间方便拓展。
  • 文件去重:fastdfs对文件内容做hash处理,避免存储重复的文件。
  • 结合nginx: 与Nginx集成提供网站效率。

工作流程

Django使用FastDFS_第2张图片
未命名文件.png
  1. tracker:管理集群,每个节点实际地位相等,收集storage集群状态
  2. storage: 实际存储数据,分若干个组。每个组之间相互独立,存储内容互不重叠;组内部的机器存储相同内容,形成冗余。每个组的容量是组内机器中的最小容量,storage容量是各组容量之和。
    3.文件索引信息:组名/虚拟磁盘路径/两级目录/文件名

怎么用

1.首先下载fastdfs安装包和依赖包(sourceforge->fastdfs),然后解压。

  1. 配置tracker
 sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

在/home/python/目录中创建目录 fastdfs/tracker

mkdir –p /home/python/fastdfs/tracker

编辑/etc/fdfs/tracker.conf配置文件

 sudo vim /etc/fdfs/tracker.conf

修改 base_path=/home/python/fastdfs/tracker

3.配置storage

sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

在/home/python/fastdfs/ 目录中创建目录 storage,这个目录就是实际数据存储的位置

mkdir –p /home/python/fastdfs/storage
  1. 编辑/etc/fdfs/storage.conf配置文件
 sudo vim /etc/fdfs/storage.conf

修改内容:

base_path=/home/python/fastdfs/storage
store_path0=/home/python/fastdfs/storage
tracker_server=tracker所在机器的ip:22122
  1. 启动tracker和storage
sudo trackerd /etc/fastdfs/tracker.conf start
sudo storaged /etc/fastdfs/storage.conf start

6.测试安装是否成功

sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

编辑/etc/fdfs/client.conf配置文件

 sudo vim /etc/fdfs/client.conf

修改内容:

base_path=/home/python/fastdfs/tracker
tracker_server=tracker所在机器的ip:22122
  1. 上传文件测试:
fdfs_upload_file /etc/fdfs/client.conf filename 

如果返回类似group1/M00/00/00/rBIK6VcaP0aARXDSNFHrUgHEviQ394.jpg的file_id则说明文件上传成功

添加Nginx模块

  1. 确保电脑上已经装了Nginx。
  2. 下载fastdfs-nginx-module压缩包,并解压
  3. 进入Nginx的安装目录
    执行
sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module解压后目录下src的绝对路径
sudo ./make
sudo ./make install
sudo cp fastdfs-nginx-module解压后目录中src/mod_fastdfs.conf  /etc/fdfs/mod_fastdfs.conf
 sudo vim /etc/fdfs/mod_fastdfs.conf

修改内容:

connect_timeout=10
tracker_server=tracker所在机器的ip:22122
url_have_group_name=true //返回file_id中包含组号
store_path0=/home/python/fastdfs/storage
 sudo cp fastdfs-nginx-module目录下http.conf  /etc/fdfs/http.conf
sudo cp 解压缩的fastdfs-nginx-module目录下的mime.types /etc/fdfs/mime.types
sudo vim /usr/local/nginx/conf/nginx.conf

在http部分中添加配置信息如下:

server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ { // 地址有组号的,就到下面的位置里找
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }
  1. Python测试
pip3 install fdfs_client
from fdfs_client import Fdfs_client, get_tracker_conf

conf = get_tracker_conf('/etc/fastdfs/client.conf')
client = Fdfs_client(conf)
client.upload_by_filename('test.jpg')
// 返回file_id则成功

你可能感兴趣的:(Django使用FastDFS)