搭建FastDFS+Nginx+fastdfs-nginx-module安装配置
经过几天的学习,通过前辈们的分享心得,自己搭建了一个最小的简单FastDfs,下面把我学习的心得记录一下,温故而知新!!!
一.FastDFS简介
1.1 什么是FastDFS?
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
1.2 FastDFS的架构
如图:
FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。
storage server:存储服务器(又称:存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。Storage server直接利用OS的文件系统调用管理文件。
client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。
1.3 Tracker 集群
FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。
1.4Storage集群
Storage集群采用了分组存储方式。storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。
1.5 Storage状态收集
Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。
1.6 文件上传流程
1.7 文件下载流程
上传文件之后会返回:
group1/M00/00/00/wKgZgluJDpiAWpqAAev7k46AZD8093.pdf
组名:group1
路径: M00/00/00/wKgZgluJDpiAWpqAAev7k46AZD8093.pdf
在项目中此信息需要我们自己保存
M00 代表的是配置在虚拟机上的一个虚拟路径
00/00/是虚拟路径下自己创建的文件目录
wKgZgluJDpiAWpqAAev7k46AZD8093.pdf : 文件相关信息(可能通过什么算法生成)
二 搭建
2.1 环境准备
- 我用的是VMware 12 / centos7,本地搭建一台虚拟机
- 准备搭建所需要的gz包, 可以自行在官网下载
nginx-1.8.0.tar.gz
FastDFS_v5.05.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommonV1.0.7.tar.gz - 本人的都是在root用户下操作的
2.2 Nginx搭建
2.2.1. 环境依赖
1. nginx是c编写的,对于解压的源码进行编译,所以首先设置编译环境: gcc
执行: (-y: 不询问)
yum -y install gcc
yum -y install gcc-c++
2. Perl库,包括 perl 兼容的正则表达式库
yum install -y pcre pcre-devel
3. zlib库提供了很多种压缩和解压缩的方式
yum install -y zlib zlib-devel
4. OpenSSL 是一个强大的安全套接字层密码库
yum install -y openssl openssl-devel
2.2.2编译安装
su root
将nginx-1.8.0.tar.gz拷贝至linux服务器。
cp -rf /home/xzb/nginx-1.8.0.tar.gz /usr/local/
#解压:
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
#创建临时目录
mkdir -p /var/temp/nginx
# 参数配置
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
#编译安装
make
make install
#此时可以看到 在 /usr/local/nginx/目录下有3个文件夹
sbin 运行nginx 的命令
conf 配置文件
logs 日志文件
# 启动nginx
注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:
./nginx -c /usr/local/nginx/conf/nginx.conf
如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))
#启动命令
./nginx
# 停止命令
./nginx -s stop
或者全部停止 ./nginx -s quit
#重启ngnix
./ngnix -s reload
#查看ngnix 状态
netstat -tupln | grep ngnix
#开机自启动 …
如果启动成功了访问页面:根据自己的IP地址(eg.我的192.168.25.130)
2.3 安装FastDFS
2.3.1 安装FastDFS的基础库
1. 安装libevent库
yum install -y libevent
2. 安装 libfastcommon基础库
cp -rf /home/xzb/libfastcommonV1.0.7.tar.gz /usr/local
#解压
tar -xzvf libfastcommonV1.0.7.tar.gz
cd libfastcommon-1.0.7
#执行
./make.sh
./make.sh install
3. 注意:
上诉安装完之后,安装完的路径在/usr/lib64,但是fastDFS访问的lib路径在 /usr/local/lib 中 所以此时需要建立软连接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
2.3.2 安装FastDFS中 tracker服务
解压
cp -rf /home/xzb/FastDFS_v5.05.tar.gz /usr/local/
tar -xzvf FastDFS_v5.05.tar.gz
#执行
cd FastDFS
./make
./make install
如果发现在 /etc/fdfs/ 这个目录有配置文件说明安装成功了!!-
配置tracker服务
1. 创建tracker的数据文件/日志目录(我存放在了/opt/fastdfs_tracker) mkdir -p /opt/fastdfs_tracker 2. 进入 /etc/fdfs/ 执行 cd /etc/fdfs cp tracker.conf.sample tracker.conf 3. 编辑 tracker.conf disabled=false #启用配置文件 port=22122 #设置tracker的端口号 base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录(需预先创建) http.server_port=80 #设置http端口号 4. 启动 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart 5. 设置开机启动 echo '/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart' >> /etc/rc.d/rc.local 6. 通过如下命令查看trackerd服务是否启动: netstat -tupln | grep trackerd 7. 如果有错可以在 /opt/fastdfs_tracker/logs 中查看
2.3.3 配置FastDFS中的storage服务
1. 创建存放storage 数据/日志文件目录
mkdir -p /opt/fastdfs_storage
2. 进入/etc/fdfs
cd /etc/fdfs/
cp storage.conf.sample storage.conf
3. 编辑 storage.conf
disabled=false #启用配置文件
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号
base_path=/opt/fastdfs_storage #设置storage的日志目录(需预先创建)
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage #存储路径
tracker_server=192.168.25.130:22122 #tracker服务器的IP地址和端口号 (我这是同一台)
http.server_port=80 #设置http端口号
4. 启动
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
5. 开机启动
echo '/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart' >> /etc/rc.d/rc.local
6. 是否启动
netstat -tupln | grep storaged
2.3.4 上传测试
FastDFS安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作。
cp client.conf.sample client.conf
修改/etc/fdfs/client.conf
base_path=/opt/fastdfs_storage
tracker_server=192.168.25.130:22122
使用格式:
/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件
比如将/home下的文件上传到FastDFS中:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/我是好人.pdf
http://192.168.25.130/group1/M00/00/00/M00/00/00/wKgZgluJDpiAWpqAAev7k46AZD8093.pdf就是文件的下载路径。
对应storage服务器上的
/opt/fdfs_storage/data/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png文件。
由于现在还没有和nginx整合无法使用http下载。
2.3.5在storage中安装Ngnix
1. 使用nginx可以提供http服务,更好的解决分布同步的问题等
2. 由于之前已经安装过ngnix ,所以此时我们需要添加fastdfs-nginx-module
cp /home/xzb/fastdfs-nginx-module_v1.16.tar.gz /usr/local
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
3. 在nginx中添加该模块配置
cd /usr/lcoal/nginx-1.8.0/
执行:
./configure --add-module=/usr/local/fastdfs-nginx-module/src
make
make install
4. cd fastdfs-nginx-module/src/
vi config (这一步很重要,很重要,很重要(重要的事情说三遍)
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
把local都去掉
5. 然后执行
make
make install
如果没有错误则安装成功
-
将插件添加到nginx中
cd /usr/local/ngnix/conf/
vi nginx.conf
server {
listen 80; #端口
server_name 192.168.25.130;location /group1/M00 { # 多个组 ~/group[1-3] root /opt/fastdfs_store/data; #存储数据 ngx_fastdfs_module; } ....
}
执行命令cd /usr/local/FastDFS/conf
cp http.conf /etc/fdfs
cp mime.types /etc/fdfs
不复制这2个文件启动nginx会报错执行命令 cd /usr/local/fastdfs-nginx-module/src
cp mod_fastdfs.conf /etc/fdfs
vi mod_fastdfs.conf
修改如下几项:
tracker_server=192.168.25.130:22122
store_path0=/opt/fastdfs_storage
base_path=/opt/fastdfs_storage
url_have_group_name = true(配置多个tracker时,应该将此项设置为true)
- 建立软连接(配置文件中storage存放数据的路径)
ln -s /opt/fastdfs_storage/data /opt/fastdfs_storage/data/M00
- 关闭防火墙或者设置对外端口
关闭防火墙:
service firewalld stop //停止防火墙
service firewalld disable//永久停止
10 测试
上传的文件或者图片,可以在浏览器直接访问啦!
eg. http://192.168.25.130/group1/M00/00/00/wKgZgluJAE2Adan1Aev7k46AZD8377.pdf
上一篇: linux 执行 shell
推荐阅读
-
Linux下配置和安装Domino 服务器 2
-
搭建MHA时 yum 安装perl模块提示 baseurl 错误
-
mac怎么安装php环境变量配置
-
nodejs安装和配置环境的方法介绍
-
node.js安装和配置环境以及部署项目的方法介绍(windows系统下)
-
mysql 开发进阶篇系列 45 xtrabackup 安装,用户权限,配置
-
mysql 5.6.26 winx64安装配置图文教程(一)
-
mysql 5.6.24 安装配置方法图文教程
-
Mosquitto服务器的搭建以及SSL/TLS安全通信配置 openhab raspberry-pi 眼泪成诗hocc 2016年05月07日发布 4.8k 次浏览 1、 SSL简介 SSL
-
Windows下MySQL安装配置方法图文教程