任务目标:搭建fastdfs
目标环境:ubuntu1804
安装环境
安装libfastcommon
#下载并且解压 $ wget https://github.com/happyfish100/libfastcommon/archive/master.zip $ unzip master.zip #编译 $ ./make.sh #安装 $ ./make.sh install |
建立软连接
# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so # ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so # ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so # ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so |
安装FastDFS
#下载并且解压 $ wget https://github.com/happyfish100/fastdfs/archive/V5.11.zip $ unzip V5.11.zip #编译 $ ./make.sh #安装 $ ./make.sh install |
建立软链接:
# ln -s /usr/bin/fdfs_trackerd /usr/local/bin
# ln -s /usr/bin/fdfs_storaged /usr/local/bin
# ln -s /usr/bin/stop.sh /usr/local/bin
# ln -s /usr/bin/restart.sh /usr/local/bin |
配置服务
创建目录结构:
配置Tracker、Storage、Client、HTTP服务:
进入/etc/fdfs目录。会看到三个.sample后缀的文件,均是作者给我们的示例文件,我们需要将其中的tracker.conf.sample文件改为tracker.conf配置文件并修改它
cd /etc/fdfs ls cp tracker.conf.sample tracker.conf # 配置跟踪文件 vi tracker.conf # 进入conf文件 |
启动:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
配置Storage服务
cd /etc/fdfs cp storage.conf.sample storage.conf # 修改存储路径 vi storage.conf # 修改存储文件 |
启动服务,查看监听:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart netstat -unltp|grep fdfs #查看服务 |
配置Client服务:
cd /etc/fdfs cp client.conf.sample client.conf #修改客户端路径文件 vi client.conf |
配置HTTP服务:
测试Tracker 和 Storage 服务通信:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf |
安装nginx
配置nginx
root@vm-ubuntu:/software/nginx-1.10.1# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src root@vm-ubuntu:/software/nginx-1.10.1# ./configure --add-module=/software/fastdfs-nginx-module-master/src |
编译:
root@vm-ubuntu:/software/nginx-1.10.1# make |
出错:
cc1: all warnings being treated as errors objs/Makefile:467: recipe for target 'objs/src/core/ngx_murmurhash.o' failed make[1]: *** [objs/src/core/ngx_murmurhash.o] Error 1 make[1]: Leaving directory '/software/nginx-1.10.1' Makefile:8: recipe for target 'build' failed make: *** [build] Error 2 |
解决:root@vm-ubuntu:/software/nginx-1.10.1# vi objs/Makefile
出错:
/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory |
解决:
root@vm-ubuntu:/software/nginx-1.10.1# vi ../fastdfs-nginx-module-master/src/config
编译成功:
安装:
root@vm-ubuntu:/software/nginx-1.10.1# make install |
安装目录:
启动nginx:
查看nginx进程:
配置mod-fastdfs.conf,并拷贝到/etc/fdfs文件目录下:
以下是编辑内容:
把fastdfs-5.05下面的配置中还没有存在/etc/fdfs中的拷贝进去:
配置Nginx,编辑nginx.config
由于我们配置了group1/M00的访问,我们需要建立一个group1文件夹,并建立M00到data的软链接。
重启nginx:
测试上传图片及浏览器显示
补充修改(更换项目目录以及IP地址)
目录:
storage.conf
mod_fastdfs.conf
Nginx.conf
常用命令
启动:
$ sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
$ sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
关闭fastdfs:
killall fdfs_trackered
killall fdfs_storaged
查看运行状态:$ sudo netstat -unltp|grep fdfs
监控状态:fdfs_monitor /etc/fdfs/storage.conf
上传文件:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/02.jpg
启动nginx:$ sudo /usr/local/nginx/sbin/nginx
测试上传:fdfs_test /etc/fdfs/client.conf upload test.txt
概念
什么是主从文件
主从文件是指文件ID有关联的文件,一个主文件可以对应多个从文件。
主文件ID = 主文件名 + 主文件扩展名
从文件ID = 主文件名 + 从文件后缀名 + 从文件扩展名
使用主从文件的一个典型例子:以图片为例,主文件为原始图片,从文件为该图片的一张或多张缩略图。
FastDFS中的主从文件只是在文件ID上有联系。FastDFS server端没有记录主从文件对应关系,因此删除主文件,FastDFS不会自动删除从文件。
删除主文件后,从文件的级联删除,需要由应用端来实现。
主文件及其从文件均存放到同一个group中。
主从文件的生成顺序:
1)先上传主文件(如原文件),得到主文件ID
2)然后上传从文件(如缩略图),指定主文件ID和从文件后缀名(当然还可以同时指定从文件扩展名),得到从文件ID
Python & fastdfs
安装(https://github.com/jefforeilly/fdfs_client-py)
- $ git clone https://github.com/jefforeilly/fdfs_client-py.git
- $ sudo python3 setup.py install
- $ pip3 install mutagen
- 测试
1. import fdfs_client.client module 2. instantiate class Fdfs_client 3. call memeber functions
>>> from fdfs_client.client import * >>> client = Fdfs_client('/etc/fdfs/client.conf') >>> ret = client.upload_by_filename('test') |