1 简介
Fastdfs的具体介绍看这里:http://www.jianshu.com/p/af10e44b0fb6
2 安装准备
名称 | 版本 | 地址 | 作用 |
---|---|---|---|
系统 | CentOS-7-x86_64-DVD-1708.iso | 点击这里 | 系统 |
Fastdfs | Fastdfs_v5.11 | 点击这里 | 分布式系统 |
libfastcommon | libfastcommon_1.0.36 | 点击这里 | 公共 C 函数库 |
fastdfs-nginx-module | fastdfs-nginx-module-master | 点击这里 | storage节点http服务nginx模块 |
nginx | nginx-1.12.2 | 点击这里 | 反响代理服务器 |
此处有安装包集合,一键下载:点击这里
准备好虚拟机和安装运行环境:根据实际情况自行检查安装
$yum -y install unzip zip #安装解压工具unzip
$systemctl stop firewalld.service #停止firewall
$systemctl disable firewalld.service #禁止firewall开机启动
备注:简单之余就关闭防火墙
安装perl环境,后续编译fastdfs会用到
$yum -y install perl* #yum安装perl相关支持)
$yum -y install cpan #perl需要的程序库,需要cpan的支持
3 安装Fastdfs
安装流程
1 安装依赖包gcc
2 安装libfatscommon
3 安装Fastdfs
4 配置Tracker
5 配置Storage
服务器规划
跟踪服务器(Tracker Server):192.168.64.31
存储服务器(Storage Server):192.168.64.31
数据存储目录:/opt
解压目录:/usr/local/src
Nginx解压目录:/usr/local/src
1 安装依赖包
安装gcc编译器,fastdfs是用c语言开发而来的。
$yum -y install gcc-c++
至此,gcc编译器安装OK!
2 安装libfatscommon
解压--->编译--->安装
解压完毕进入解压目录libfastcommon-1.0.36
$unzip libfastcommon-1.0.36.zip
执行编译和安装
$./make
$./make install
至此libfastcommon就已经安装ok了,上图中红色框标注的内容---ibfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要设置软链接,将lib库文件添加到usr/local/bin(用户放置自己的可执行程序)中
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
备注 .so -- shared object,用户层的动态库 。
至此,libfatscommon安装OK!
3 安装Fastdfs
解压--->编译--->安装
#解压
$unzip fastdfs-5.11.zip
#进入解压目录
#编译
$./make
#安装
$./make install
Fastdfs安装在/etc/fdfs目录下,此目录如下图所示:
安装成功后就会生成如上的4个.sample文件(示例配置文件),我们再分别拷贝这4个配置文件以备后用:
$cp client.conf.sample client.conf
$cp storage.conf.sample storage.conf
$cp storage_ids.conf.sample storage_ids.conf
$cp tracker.conf.sample tracker.conf
至此,Fastdfs安装OK!
4 配置Tracker
首先创建Tracker服务器的文件路径,即用于存储Tracker的数据文件和日志文件等。此路径在后续的Tracker文件配置中都用到
$mkdir /opt/fastdfs_tracker
编辑上一步copy的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次做如下修改:
disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,通常采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=88 #设置http端口号,默认为8080,记住此端口号,对应于后续nginx的listen端口
配置完毕!
启动tracker服务器
#启动
$service fdfs_trackerd start
或者
$/etc/init.d/fdfs_trackerd start
关闭tracker服务器
#关闭
$service fdfs_trackerd stop
或者
$/etc/init.d/fdfs_trackerd stop
如果启动命令执行成功,那么在刚才创建的tracker文件目录/opt/fastdfs_tracker中就可以看到启动后新生成的data和logs目录,tracker服务的端口也被正常监听
正常启动后,可以将tracker设置为开机启动,打开/etc/rc.d/目录,在rc.local中添加
service fdfs_trackerd start
,并且对rc.local进行授权。
$chmod +x /etc/rc.d/rc.local #对rc.local进行授权
至此,Tracker配置OK!
5 配置Storage
同理,和Tracker配置流程一致。创建Storage服务器的文件目录fastdfs_storage,同时比Tracker多建了一个文件存储路径目录fastdfs_storage_data,用于存放接收的文件。
$mkdir /opt/fastdfs_storage
$mkdir /opt/fastdfs_storage_data
修改目录/etc/fdfs/storage.conf配置文件,打开文件后依次做以下修改:
disabled=false #启用配置文件(默认启用)
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=192.168.64.32:22122 #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功(此处的ip是我的CentOS虚拟机ip)
http.server_port=7777 #设置 http 端口号
配置OK!
启动Storage服务
$service fdfs_storaged start
或者
$/etc/init.d/fdfs_storaged start
关闭Storage服务
$service fdfs_storaged stop
或者
$/etc/init.d/fdfs_storaged stop
备注:启动storage时,要先启动tracker,不然无法启动监视
开启Tracker和Storage服务
如上图,此时已经正常监听tracker的22122端口和storage的23000端口。
确定了storage服务器启动成功后,还有一项工作就是看看storage服务器是否已经登记到 tracker服务器(也可以理解为tracker与storage是否整合成功),运行以下命令:
$/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
看到**192.168.111.11 ACTIVE **字样,即可说明storage服务器已经成功登记到了tracker服务器。
添加storage服务开机启动,打开/etc/rc.d/rc.local文件追加service fdfs_storaged start
。
至此,storage服务器配置ok!
4 初步测试
测试时需要设置客户端的配置文件,编辑/etc/fdfs/client.conf文件,打开后依次做如下修改:
base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.64.32:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=88 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来
配置完毕就可以上传文件了。
执行客户端上传命令:
$/usr/bin/fdfs_upload_file /etc/fdfs/client.conf note.txt
返回的路径就只文件的存储目录,在/opt/fastdfs_storage_data目录下,
想在web段查看上次存储的文件,需要安装nginx和fastdfs-nginx-module。
至此,简单测试OK!
5 安装fastdfs-nginx-module
fastdfs-nginx-module 作用说明
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假Tracker 服务器将文件上传到了 192.168.64.32,上传成功后文件ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.64.33,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.64.33 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误
5.1 安装准备
在安装nginx之前需要先安装一些模块依赖的lib库:pcre-devel、zlib-devel、openssl-devel
$yum -y install pcre pcre-devel
$yum -y install zlib zlib-devel
$yum -y install openssl openssl-devel
准备完毕,开始分别为tracker和storage安装配置nginx。
安装流程
1 解压fastdfs-nginx-module-master和nginx-1.12.2
2 ./configure配置nginx参数
3 编译安装
4 修改nginx的配置文件nginx.conf
5 copy http.conf和mime.types文件
6 copy mod_fastdfs.conf文件并修改参数
7 启动nginx
5.2 安装storage nginx
1 ) 解压
$unzip fastdfs-nginx-module-master.zip
$tar -zxvf nginx-1.12.2.tar.gz
2 ) ./configure配置
解压完毕后进入nginx目录,在执行./configure配置nginx参数的时候,需要将fastdfs-nginx-moudle源码作为模块编译进去,执行以下命令:
$./configure --prefix=/usr/local/src/nginx --add-module=/usr/local/src/fastdfs-nginx-module-master/src
配置成功!
3 )编译安装
$make
$make install
安装完成后再指定路径/usr/local/src/nginx可查看到安装的目录
4 )修改nginx.conf
修改nginx的配置文件,打开/conf/nginx.conf文件,修改http中server的listen,添加location, 具体如下:
listen 7777; #注意,此处的listen对应于/etc/fdfs/storage.conf中的http.server_port=7777
#location放在server里面
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
5 ) copy http.conf和mime.types
$cp -r /usr/local/src/fastdfs-5.05/conf/http.conf /etc/fdfs/
$cp -r /usr/local/src/fastdfs-5.05/conf/mime.types /etc/fdfs/
6 ) 配置mod_fastdfs.conf文件
将fastdfs-nginx-module-master/src/mod_fastdfs.conf拷贝到/etc/fdfs目录下
$cp -r /usr/local/src/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
编辑刚拷贝的mod_fastdfs.conf文件,打开并按顺序依次编译以下内容:
base_path=/opt/fastdfs_storage #保存日志目录
tracker_server=192.168.64.32:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件url中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1
设置group_count = 3,需要在文件尾部追加这3个group setting
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
7 ) 启动nginx
$/usr/local/src/nginx/sbin/nginx #启动
$/usr/local/src/nginx/sbin/nginx -s reload #重新启动
$/usr/local/src/nginx/sbin/nginx -s stop #停止
显示如下信息说明nginx已启动成功:
通过浏览器看到nginx的主页:端口为7777
5.3 安装tracker nginx
步骤和安装storage nginx一样
$mkdir tracker_nginx
$cd nginx-1.12.2/
$./configure --prefix=/usr/local/src/tracker_nginx --add-module=/usr/local/src/fastdfs-nginx-module-master/src
$make
$make install
#安装完毕,修改tracker_nginx/conf/nginx.conf的配置文件
#listen端口和tracker.conf的http.server_port=88一致
#添加upstream和location :
#upstream 命令要放在http里面 server外面,location 在server里面,7777对应于storage的server_port
listen 88;
upstream fdfs_group1 {
server 127.0.0.1:7777;
}
#location放在server里面
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
#启动tracker_nginx
$/usr/local/src/tracker_nginx/sbin/nginx
6 HTTP测试
查看/etc/fdfs/client.conf文件配置是否正确:
base_path=/data/fastdfs_storage #日志存放路径
tracker_server=192.168.64.32:22122 #tracker 服务器 IP 地址和端口号
http.tracker_server_port=88 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来
通过客户端命令测试上传:
$/usr/bin/fdfs_upload_file /etc/fdfs/client.conf data/20170131.jpg
如上图,上传成功,通过HTTP测试文件访问,打开浏览器输入ip地址+文件名看看是否能正常访问该图片:
至此,HTTP测试OK!
请求Tracker服务器下载图片,其实请求的是Tracker服务器上的nginx服务,因为nginx服务的端口是88端口,而tracker服务端口是22122。
tracker上的nginx起到http访问的反向代理作用,反向代理到group对应的所有storage上的nginx服务。客户端请求tracker上的nginx服务,根据配置的location /group1找到对应的group1下所有的storage服务器上的nginx服务的ip和端口(提供下载接口),然后由tracker决定使用哪台storage,最后将该storage的ngnix服务的ip和port返回给客户端。客户端拿到storage的nginx服务的ip和端口,去请求这个nginx服务,根据请求中的group1/M00与storage的nginx配置的
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}进行匹配,然后获取到文件的存储目录,然后在根据两级目录和文件名来获取到文件。
7 总结
要提前安装好依赖包和运行环境,关闭防火墙,做笔记整理资料。
8 参考资料
1.分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置
2.FastDFS分布式文件系统安装与使用(单节点)
3.CENTOS 7 安装perl环境
4.Centos7网络配置( 网关、dns、ip地址配置)
5.FastDFS学习笔记
6.Centos7 Linux安装命令
20171107