项目中用到了fastdfs存储图片,在这里记录一下
什么是FastDFS
fastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。[来自百科]
有什么优点
- 海量存储:主从型分布式存储,存储空间方便拓展。
- 文件去重:fastdfs对文件内容做hash处理,避免存储重复的文件。
- 结合nginx: 与Nginx集成提供网站效率。
工作流程
- tracker:管理集群,每个节点实际地位相等,收集storage集群状态
- storage: 实际存储数据,分若干个组。每个组之间相互独立,存储内容互不重叠;组内部的机器存储相同内容,形成冗余。每个组的容量是组内机器中的最小容量,storage容量是各组容量之和。
3.文件索引信息:组名/虚拟磁盘路径/两级目录/文件名
怎么用
1.首先下载fastdfs安装包和依赖包(sourceforge->fastdfs),然后解压。
- 配置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
- 编辑/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
- 启动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
- 上传文件测试:
fdfs_upload_file /etc/fdfs/client.conf filename
如果返回类似group1/M00/00/00/rBIK6VcaP0aARXDSNFHrUgHEviQ394.jpg
的file_id则说明文件上传成功
添加Nginx模块
- 确保电脑上已经装了Nginx。
- 下载fastdfs-nginx-module压缩包,并解压
- 进入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;
}
}
- 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则成功