首页 > 代码库 > FastDFS 和nginx整合

FastDFS 和nginx整合

失败的经历:

    从昨晚到今晚,一直在配置这FastDFS 和nginx整合这两个东西。听了黑马的讲师说一个人第一次做这个,光是搭建一个最简单的分布式文件系统至少需要1天时间。其实看来,果然没错。不过大部分时间都花在了执行错误的方法上面。

    可能有人是看过了传智播客的讲师错误配置方法之后才来网上寻找答案的,没错。拜托那个错误的配置文档之后,重新开启一台虚拟机,铛!!!!!花了4个小时左右,配置成功了。

下面是效果图:

技术分享

 

总有一个体会,每次对一件事物感到深刻是对它想吐之后才会有。这次是真的恶心到我了。配置特别复杂!

好了,废话不多说了,我是看到了一篇网页的文章才一步步做出来的。他写的已经很不错了,我给个他的链接吧:

https://my.oschina.net/u/1867229/blog/829572

然后,我也复制大牛的文章过来了分享。

FastDFS安装手册

FastDFS之集群部署:  http://blog.csdn.net/zhu_tianwei/article/details/46045641


一、准备工作
1下载软件:http://sourceforge.net/projects/fastdfs/files/
2安装gcc。命令:yum install make cmake gcc gcc-c++


二、安装libfastcommon

1.下载 软件: https://github.com/happyfish100/libfastcommon
2.上传libfastcommon-master.zip 到 /home/lee 目录下
3. 进行解压libfastcommon-master.zip:
命令:unzip libfastcommon-master.zip -d /usr/local/fast/
4. 进入目录:cd /usr/local/fast/libfastcommon-master/

技术分享
5. 进行编译和安装:
命令:./make.sh
命令:./make.sh install

技术分享

注意安装的路径:也就是说,我们的libfastcommon默认安装到了/usr/lib64/这个
位置。

6.进行软链接创建。

FastDFS主程序设置的目录为/usr/local/lib/,而我们的安装目录为/usr/lib64,所以我们需要创建/
usr/lib64/下的一些核心执行程序的软连接文件。

创建目录
命令:mk dir /usr/local/lib/

创建软链接
命令: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
1 进入到 cd /home/lee下,解压FastDFS_v5.05.tar.gz文件
命令:cd /home/lee
命令:tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast/
2 安装编译
命令:cd /usr/local/fast/FastDFS/
编译命令:./make.sh
安装命令:./make.sh install

技术分享

3 采用默认安装方式脚本文件说明:
服务脚本在:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

技术分享

配置文件在:
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

技术分享

命令行工具在/usr/bin/目录下,Fdfs_*的一些列执行脚本

技术分享

4.因为FastDFS服务脚本设置的bin目录为/usr/local/bin/下,但是实际我们安装在了/u
sr/bin/下面。所以我们需要修改FastDFS配置文件中的路径,也就是需要修改俩
个配置文件:
命令:vim /etc/init.d/fdfs_storaged
进行全局替换命令:%s+/usr/local/bin+/usr/bin
命令:vim /etc/init.d/fdfs_trackerd
进行全局替换命令:%s+/usr/local/bin+/usr/bin

四.配置跟踪器
1 进入 cd/etc/fdfs/ 目录配置跟踪器文件,把tracker.conf.sample文件

进行cope一份:去修改tracker.conf文件

技术分享

2 修改tracker.conf文件
命令:vim /etc/fdfs/tracker.conf
如下图所示:我们暂时修改配置文件里的base_path即可。

技术分享

修改为自己的路径地址:base_path=/fastdfs/tracker
注意:对于tracker.conf配置文件参数解释可以找官方文档,地址为:
http://bbs.chinaunix.net/thread-1941456-1-1.html


3 最后我们一定要创建之前定义好的目录(也就是/fastdfs/tracker):
命令:mkdir -p /fastdfs/tracker

4 关闭防火墙:
Vim /etc/sysconfig/iptables
添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重启:service iptables restart

五 启动跟踪器
如图所示:

技术分享

目录命令:cd /fastdfs/tracker/ && ll
启动tracker命令:/etc/init.d/fdfs_trackerd start
查看进程命令:ps -el | grep fdfs
停止tracker命令:/etc/init.d/fdfs_trackerd stop

6可以设置开机启动跟踪器:(一般生产环境需要开机启动一些服务,如keepalived、linux、tomcat)
命令:vim /etc/rc.d/rc.local
加入配置:/etc/init.d/fdfs_trackerd start

六、配置FastDFS存储


1 进入文件目录:cd /etc/fdfs/,进行copy storage文件一份
命令:cd /etc/fdfs/
命令:cp storage.conf.sample storage.conf


2 修改storage.conf文件
命令:vim /etc/fdfs/storage.conf
修改内容:
base_path=/fastdfs/storage
store_path0=/fastdfs/storage
tracker_server=192.168.1.172:22122
http.server_port=8888

3 创建存储目录:mkdir -p /fastdfs/storage


4 打开防火墙:
命令:vim /etc/sysconfig/iptables
添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重启:service iptables restart

5 启动存储(storage)
命令:/etc/init.d/fdfs_storaged start (关闭命令:/etc/init.d/fdfs_storaged stop)
(初次启动成功后会在/fastdbf/storage/ 目录下创建 data、logs俩个目录)

技术分享

6 查看FastDFS storage 是否启动成功
命令:ps -ef | grep fdfs

技术分享

并且我们进入到/fastdfs/storage/data/文件夹下会看到一些目录文件(256*256)
如下:
命令:cd /fastdfs/storage/data/ && ls

技术分享

7同理,也可以设置开机启动存储器:(一般生产环境需要开机启动一些服务,如keepalived、linux、tomcat)
命令:vim /etc/rc.d/rc.local
加入配置:/etc/init.d/fdfs_storaged start


到此为止我们的FastDFS环境已经搭建完成!

 

七.测试环境


1 我们先使用命令上传一个文件。注意:是在tracker(跟踪器)中上传。
首先我们在跟踪器里copy一份client.conf文件。
命令:cd /etc/fdfs/
命令:cp client.conf.sample client.conf

技术分享

2 编辑client.conf文件
命令:vim /etc/fdfs/client.conf
修改内容:
base_path=/fastdfs/tracker
tracker_server=192.168.1.172:22122


3 我们找到命令的脚本位置,并且使用命令,进行文件的上传:
命令:cd /usr/bin/
命令:ls | grep fdfs

技术分享

4 使用命令fdfs_upload_file进行上传操作:
首先,我们先看一下存储器,进入到data下,在进入00文件夹
下,发现00文件夹下还有一堆文件夹,然后继续进入00文件夹下,最终我们所
进入的文件夹为:
/fastdfs/storage/data/00/00 里面什么文件都没有。

技术分享

然后,我们进行上传操作,比如把之前的/usr/local/software/文件夹下的某一个
文件上传到FastDFS系统中去,在跟踪器中上传文件,命令如
下:
命令:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf
/home/lee/FastDFS_v5.05.tar.gz

技术分享

最后我们发现,命令执行完毕后,返回一个group1/M00/00/00/...的ID,其实就
是返回当前所上传的文件在存储器中的哪一个组、哪一个目录位置,所以我们查看存储器中的/fastdfs/storage/data/00/00文件夹位置,发现已经存在了刚才上传的文件,到此为止,我们的测试上传文件已经OK了。

如下:

技术分享

八.fastdfs 与nginx整合

1 首先必须先安装nginx (下载地址: http://mirrors.sohu.com/nginx/)


2 然后我们在存储节点上安装fastdfs-nginxmodule_v1.16.tar.gz包进行整合。

技术分享

目录命令:cd /home/lee
解压命令:tar -zxvf /home/lee/fastdfs-nginx-module_v1.16.tar.gz -C
/usr/local/fast/

技术分享

3 进入目录:cd fastdfs-nginx-module/src/

技术分享
4 编辑配置文件config
命令: vim /usr/local/fast/fastdfs-nginx-module/src/config
修改内容:去掉下图中的local文件层次

技术分享

修改完毕为:

技术分享

5 FastDFS与nginx进行集成


首先把之前的nginx进行删除
目录命令:cd /usr/local/
删除命令:rm -rf nginx
进入到nginx目录命令:cd nginx-1.6.2/

由于需要安装nginx,需要安装依赖:yum -y install  zlib pcre pcre-devel zlib-devel

加入模块命令:./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/
重新编译命令:make && make install

6 复制fastdfs-ngin-module中的配置文件,到/etc/fdfs目录中,如图所示:

技术分享

copy命令:cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/


7 进行修改 /etc/fdfs/ 目录下,我们刚刚copy过来的mod_fastdfs.conf 文件。

技术分享

命令:vim /etc/fdfs/mod_fastdfs.conf
修改内容:比如连接超时时间、跟踪器路径配置、url的group配置、
connect_timeout=10
tracker_server=192.168.1.172:22122
url_have_group_name = true
store_path0=/fastdfs/storage


8 复制FastDFS里的2个文件,到/etc/fdfs目录中,如图所示:

技术分享

目录命令:cd /usr/local/fast/FastDFS/conf/
Copy命令:cp http.conf mime.types /etc/fdfs/


9创建一个软连接,在/fastdfs/storage文件存储目录下创建软连接,将其链接到实际存放数据
的目录。
命令:ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00


10 修改Nginx配置文件,如图所示:

技术分享
命令:vim nginx.conf
添加端口映射配置内容如下图所示:

技术分享
修改内容为:
listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
root /fastdfs/storage/data;
ngx_fastdfs_module;
}

注意:nginx里的端口要和配置FastDFS存储中的storage.conf文件配置一致,
也就是(http.server_port=8888)

11 最后检查防火墙,然后我们启动nginx服务

启动命令:/usr/local/nginx/sbin/nginx,

技术分享
上传一个文件,上传成功,
如图:

技术分享
现在我们使用这个ID用浏览器访问地址:
http://192.168.1.173:8888/group1/M00/00/00/wKgBrVaSvM6AddWWAAVFOL7FJU4.tar.gz
我们就可以下载这个文件啦!如下图所示:

技术分享


运维注意:我们在使用FastDFS的时候,需要正常关机,不要使用kill -9
强杀FastDFS进程,不然会在文件上传时出现丢数据的情况。
到此,我们的FastDFS与Nginx整合完毕!!


九:启动停止服务步骤如下:


启动命令:
启动tracker命令:/etc/init.d/fdfs_trackerd start
查看进程命令:ps -el | grep fdfs
启动storage命令:/etc/init.d/fdfs_storaged start
查看进程命令:ps -el | grep fdfs
启动nginx命令:/usr/local/nginx/sbin/nginx


停止命令:
停止tracker命令:/etc/init.d/fdfs_trackerd stop
关闭storage命令:/etc/init.d/fdfs_storaged stop
关闭nginx命令:/usr/local/nginx/sbin/nginx -s stop

删除上传文件:
/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wK
gBe1iEcGOAafHdALSFS-ifSIk.tar.gz

FastDFS 和nginx整合