CentOS 6.5下 FastDFS结合Nginx插件实现图片http访问

来源:互联网 发布:zeppelin 修改端口 编辑:程序博客网 时间:2024/06/05 23:55

       接着上一篇讲,在上一篇中,我们成功搭建了FastDFS,并分别配置和启动了tracker(调度器)服务以及storage(数据存储器)服务,当然,配置相当简洁,只配置了日志和图片存放的路径以及tracker server的IP地址等,磁盘我们只模拟了一个,因此Storage.conf配置中只有一个store_path0,且storage的配置group_name我们也用了默认的group1,因为我们自己模拟的时候只有一台虚拟机,条件有限,但是在现实中,Storage server可能是一个集群,因此,配置还可以更复杂,但是不难;最后,我们利用FastDFS安装时自带的客户端测试工具fdfs_test测试了一下图片的upload,测试之前,仍需要修改配置文件,因为,我们要指定与其对应的配置文件client.conf中的tracker服务的IP,作为调度中心节点,这个一定不能忘,注意一个地方,如果你的Linux是32位的,那么,FastDFS的客户端连接包libfdfsclient.so,默认安装是在/home/lib64目录下面的,之前我们拷贝过一个common包,这个时候,需要将libfdfsclient.so包也拷贝到lib目录下。




如果你的Linux是64位的,那么你就不管考虑了。

经过上一篇的实战,我想,下面一张图,现在,你一定能明白个八九了





本篇,我们将实现http服务,访问FastDFS系统中的Storage server存储的图片,因为FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS模块(也可以叫FastDFS的Nginx模块)。其使用非常简单。


FastDFS的Nginx模块如下(上一篇中,我们只是上传了这个源码包,但是没有进行后续的操作)


源码包和完整安装word文档,在我的资源里下载(无法0分共享,最少就是1分,没办法)--->FastDFS相关资料下载



一、解压 fastdfs-nginx-module_v1.16.tar.gz




二、修改fastdfs-nginx-module的config配置文件



vim /src/config    如下


我们看一下,引用的地址,实际是在哪个目录下面的(common和clinet就不用说了吧,这两个肯定在/usr/lib64目录下面,所以上面的libs引用的路径根据自己的Linux系统而定,32位的就是 /usr/lib -lfastcommon -lfdfsclient ,64位的就改成/usr/lib64 -lfastcommon -lfdfsclient


ls -l|grep 'fast*'




使用 ls 搭配正则搜索,在include目录下列出 fast*开头的目录,然后就是 图上的两个 fastcommon 和 fastdfs,因此,fastdfs-nginx-module的config需要修改,修改两处,一个是去掉引用路径中的所有local,一个就是将lib改成lib64(如果是32位Linux,不用改)----->fastcommon和fastdfs目录下放的是c语言的头文件.h文件






修改后,我们保存一下,然后我们还要做一件事情,就是把src目录下的,fastdfs模块的配置文件mod_fastdfs.conf拷贝到FastDFS的配置目录/etc/fdfs/目录下,便于集中管理


cp mod_fastdfs.conf  /etc/fdfs/



我们稍后,装完Nginx后,在配置/etc/fdfs/mod_fastdfs.conf


三、安装Nginx,添加fastdfs-nginx-module模块目录


3.1 解压 nginx-1.13.5.targz

tar -zxf nginx-1.13.5.tar.gz          (带参数v,将输出解压过程的信息)




进入nginx-1.13.5目录执行configure命令之前,我们先为我们的nginx在/var目录下,创建一个临时目录  temp/nginx

mkdir -p temp/nginx     ------>-p参数,保证父目录不存在的情况下,先创建父目录,然后再创建子目录


切换到nginx-1.13.5目录,执行configure命令


./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 \--add-module=/root/fastdfs-nginx-module/src




回车执行--->





报错,好吧,我忘了自己的Linux系统当前是没有下载和安装Nginx依赖包的,(为了装FastDFS,换了一个纯净版的Linux64系统)


Nginx依赖包下载安装,看我的博文  ----->nginx依赖包安装


走一遍,安装(安装过的可以忽略)

yum -y install pcre pcre-devel

yum -y install zlib zlib-devel

yum -y install openssl openssl-devel


然后,我们再来一遍 configure



回车后,configure命令成功




然后就是 make 编译C源码,唰唰唰,make完成后,进行install安装




至此,Nginx安装完成


四、配置 /etc/fdfs/mod_fastdfs.conf


切换到,/etc/fdfs  目录下




vim mod_fastdfs.conf




第一个地方


base_path = /home/fastdfs/nginx-module


我们在/home/fastdfs/目录下,创建一个nginx-module的目录




第二个地方


我的本机tracker 服务IP是 192.168.xxx.xxx

tracker_server=192.168.153.134:22122


第三个地方



我的Storage server存放图片的路径(只有一个磁盘)在: /home/fastdfs/storage 目录下


store_path0=/home/fastdfs/storage



第四个地方




url_have_group_name = true


改后,退出保存!


五、配置Nginx的server节点,实现与storage server  对接


切换到Nginx的安装目录,/usr/local/nginx




修改 conf目录下的nginx.conf配置文件,对原有的server节点修改如下:


 server {        listen       80;        server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location /group1/M00/ {            #root   这里直接调用fastdfs的nginx插件,定位到/home/fastdfs/storage/data;    #安装nginx的时候,已经为其添加了一个module,指向/root/fastdfs-nginx-module/src            ngx_fastdfs_module;        }     }










修改后,保存nginx.conf,并启动nginx

切换到 cd /usr/local/nginx 目录





启动 ./sbin/nginx,我们可以看到,启动的时候,fastdfs的nginx的插件也启动了(多了一个进程);


我们需要设置一下Linux系统的防火墙,开放一个80端口(这样,外部才能访问80端口)

vim /etc/sysconfig/iptables

增加如下内容



保持并退出,重启防火墙

/etc/init.d/iptables restart




然后,我们外部访问一下nginx服务,是否正常




ok,一切顺利,下面让人打鸡血的部分



六、利用Nginx的Http服务,实现,FastDFS的storage server存储的图片url地址访问


先来一张图片,放到 /root/FastDFS 目录下,我们不用原来的广告图片,放一张美女的图片养养眼





6.1 启动 tracker和storage服务

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf


FastDFS的搭建和配置看我的上一篇文章---->FastDFS的搭建以及tracker和storage的配置




6.2 利用FastDFS自带的客户端工具实现图片 1.jpg的上传


 /usr/bin/fdfs_test /etc/fdfs/client.conf upload 1.jpg



上传后得到文件 url地址:example file url: http://192.168.153.134/group1/M00/00/00/wKiZhlnAq6mAECKrAAG6VRTd3uw792.jpg


文件名解析(storage server根据特定信息 自动生成):

192.168.153.134: nginx服务器的IP

group1:storage组名称(目前模拟的只有一台虚拟机,一个storage server,因此组名只有一个)

M00    :storage存储的磁盘,目前只有一个--->store_path0,两个的话,增加一个store_path1 --> M01,store_path2 --> M02....

00/00   :  数据两级目录,在storage的data目录下,里面存放文件

wKiZhlnAq6mAECKrAAG6VRTd3uw792.jpg:加密后的文件名,最开始的图片名是1.jpg




拿到这个地址,在外部浏览器中访问一下





ok了,利用fastdfs的nginx插件,再通过配置插件的conf和利用nginx提供的http服务配置 server(一个server就是一个虚拟主机,server中使用插件模块),最终访问到了我们测试上传的图片,且,nginx具有高并发性和反向代理以及可以提供负载均衡,二者结合起来非常的完美,对于小文件的分布式存储,十分高效,且配置简单。





原创粉丝点击