1.什么是fastDFS?
![](https://img2018.cnblogs.com/blog/1337275/201907/1337275-20190708093000576-159878559.png)
客户端群:client
服务器端群:分为 Tracker集群和Storager集群
Tracker集群:每个 tracker 节点地位平等。收集 Storage 集群的状态。
Storager集群:实际保存文件 Storage 分为多个组,每个组之间保存的文件是不同的。每 个组内部可以有多个成员,组成员内部保存的内容是一样 的,组成员的地位是一致的,没有 主从的概念。并且扩展容量方便,在Storager后添加卷即可。
原理:
1.如果你想上传一张图片,首先client需要请求tracker(可以是一个集群),tracker它会从它管理的storager里取出一个对应的组id(组之间互为备份),告诉client你想上传的文件可以存储到这个组里。
2.client请求对应的storager id组,storager保存完之后会给client返回一个保存文件的id,此id用于以后访问该文件的索引信息(包括组名、虚拟磁盘路径、数据两级目录、文件名)
2.文件上传过程:
(1)client询问tracker上传到的storage,不需要附加参数;
(2)tracker返回一台可用的storage;
(3)client直接和storage通讯完成文件上传。
3.文件下载过程:
(1)client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
(2)tracker返回一台可用的storage;
(3)client直接和storage通讯完成文件下载。
4.FastDFS的安装:
准备好依赖包libfastcommon-master.zip跟fastdfs-master.zip安装包
准备安装包:
1. zip、unzip:用于压缩和解压zip文件 apt-get install zip unzip
2. apt-get install make cmake gcc g++
4.1 安装fastdfs依赖包
(1)解压libfastcommon-master.zip unzip libfastcommon-master.zip
(2)执行./make.sh
(3)执行 sudo ./make.sh install
4.2 安装fastdfs
(1) 解压缩fastdfs-master.zip unzip fastdfs-master.zip
(2)进入到 fastdfs-master目录中
(3)执行 ./make.sh
(4)执行 sudo ./make.sh install
4.3 配置跟踪服务器tracker
(1)sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
(2)在/home/python/目录中创建目录 fastdfs/tracker
mkdir –p /home/python/fastdfs/tracker
(3)编辑/etc/fdfs/tracker.conf配置文件 sudo vim /etc/fdfs/tracker.conf
修改 base_path=/home/python/fastdfs/tracker
4.4 配置存储服务器storage
(1)sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
(2)在/home/python/fastdfs/ 目录中创建目录 storage
mkdir –p /home/python/fastdfs/storage
3. 编辑/etc/fdfs/storage.conf配置文件 sudo vim /etc/fdfs/storage.conf
修改内容:
base_path=/home/python/fastdfs/storage
store_path0=/home/python/fastdfs/storage
tracker_server=自己ubuntu虚拟机的ip地址:22122
4.5 启动tracker 和 storage
sudo service fdfs_trackerd start
sudo service fdfs_storaged start
4.6 重启tracker 和 storage
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
4.7 终止
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
4.8 测试是否安装成功
(1)sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
(2)编辑/etc/fdfs/client.conf配置文件 sudo vim /etc/fdfs/client.conf
修改内容:
base_path=/home/python/fastdfs/tracker
tracker_server=自己ubuntu虚拟机的ip地址:22122
(3)上传文件测试:
fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件
如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功
例:
注意:上传文件我们直接上传到fast dfs,但是获取文件时需借助nginx
安装Nginx及fastdfs-nginx-nodule
注意:安装Nginx的机器跟安装fastdfs的机器不是同一台,导致解压、安装路径不一样 (给自己的提醒)
安装nginx需安装这些包:
(1)GCC——GNU编译器集合:apt-get install gcc
(2)PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。
apt-get install libpcre3 libpcre3-dev
(3)zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)
apt-get install zlib1g zlib1g-dev
(4)OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)
apt-get install openssl openssl-dev
具体安装步骤:
1.解压缩:nginx-1.8.1.tar.gz tar -xvf nginx-1.8.1.tar.gz
2.解压缩:fastdfs-nginx-module-master.zip unzip fastdfs-nginx-module-master.zip
3.进入解压的目录:nginx-1.8.1
执行命令:sudo ./configure --prefix=/usr/local/nginx/ --add-module=(fastdfs-nginx-module-master.zip解压后的绝对路径/src) 如:/home/my_ubuntu/cc/nginx/fastdfs-ngnix-module-master/src
sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/my_ubuntu/cc/nginx/fastdfs-ngnix-module-master/src/
4.sudo make
注意:这里可能会报错,不报错请跳过步骤4,
解决链接:https://blog.csdn.net/qq_36638599/article/details/79424878
出错的原因:
将对应的makefile文件夹中(如本文中在 /nginx-1.8.1/objs/Makefile) 找到 -Werrori 并去掉 在重新make即可查了-Werrori意思之后 发现原来它要求GCC将所有的警告当成错误进行处理 所有导致错误输出 并不能进行下一步。
5. sudo make install 报make[1]: Leaving directory '/home/***/nginx/nginx-1.8.1' 错, 不用管它。
6. 配置fastdfs-nginx-module文件
sudo cp /home/my_ubuntu/cc/nginx/fastdfs-ngnix-module-master/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
sudo vim /etc/fdfs/mod_fastdfs.conf
修改内容为
connect_timeout=10
tracker_server=自己ubuntu虚拟机的ip地址:22122
url_have_group_name=true
store_path0=/home/python/fastdfs/storage #起初创建fdfs storage的文件夹路径
7. sudo cp 安装fastdfs时解压的fastdfs-master/conf/http.conf /etc/fdfs/http.conf
8. sudo cp 解压缩目录fastdfs-master/conf/mime.types /etc/fdfs/mime.types
9.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;
}
}
10. 启动nginx:sudo /usr/local/nginx/sbin/nginx
重启nginx:sudo /usr/local/nginx/sbin/nginx -s reload
验证获取图片:
在浏览器通过url访问服务器nginx上fastdfs文件系统的文件