FastDFS+Nginx搭建分布式图片服务器

前言

FastDFS是用c语言编写的一款开源的分布式文件系统。充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。其流程如下所示
Alt text
其中tracker相当于一个管家,在storager与client之间进行交流,最终图片存在storager中。
而在传统图片存储中,一般都存在某个服务器的目录中,如果要集群的话,并发量大的话,另一台服务器就访问不到了,所以需要一个专门的图片服务器

上传与下载流程

上传
Alt text
下载
Alt text

环境搭建

一.上传需要的软件到linux上
Alt text
二.linux上安装必要的环境
1.安装gcc sudo apt-get install gcc
2.安装libevent工具包(ubuntu 16.04不能直接使用命令安装,具体也是谷歌了很久绕一大串才能安装)
三.安装libfastcommon(这里将所有文件放在了/usr/local/fast目录下)
1.解压缩到相应目录下
2.进行编译和安装
./make.sh && ./make.sh install
3.把/usr/lib64/libfastcommon.so文件向/usr/lib/下复制一份
四。安装Tracker服务
1、解压缩
2、./make.sh
3、./make.sh install
安装后在/usr/bin/目录下有以fdfs开头的文件都是编译出来的。
配置文件都放到/etc/fdfs文件夹
4、把/conf目录下的所有的配置文件都复制到/etc/fdfs下
5、配置tracker服务。修改/etc/fdfs/tracker.conf文件。
找到base_path=/home/yuqing/fastdfs
把后面的路径修改成你服务器上的路径,并且这个目录必须存在。我的是/usr/local/fast/fastdfs
6、启动tracker。/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
重启使用命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
五。安装storage服务
1、如果是在不同的服务器安装,第四步的1~4需要重新执行。
2、配置storage服务。修改/etc/fdfs/storage.conf文件
需要修改几处。
base_path与store_path0改成自己的,我的是/usr/local/fast/storage
tracker_server改成自己主机的ip:22122
3、启动storage服务。
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
六。安装测试
1、修改配置文件/etc/fdfs/client.conf将其中的base_path与tracker_server修改
2、测试
/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg
如果成功的话会提示图片存储路径
七。搭建nginx提供http服务
上传fastdfs-nginx-module_v1.16.tar.gz
1、解压插件压缩包
2、修改/fastdfs-nginx-module/src/config文件,把其中的local去掉,同时如果你的是64位的把lib改成lib64
3、对nginx重新config
./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=/usr/local/fast/fastdfs-nginx-module/src
注意最后一个是安装的路径,第一个是你自己的nginx路径
4、make
5、make install
6、把/fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下。修改
tracker_server=192.168.1.172:22122//改成自己的服务器ip地址
url_have_group_name = true //改为true,启动组
store_path0=/fastdfs/storage //改成自己的图片存储路径
7、nginx的配置
server {
listen 80;
server_name localhost;

location /group1/M00/{
        #root /home/FastDFS/fdfs_storage/data;
        ngx_fastdfs_module;
}

}
8、将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
9.启动nginx

遇到的错误

事情并非一帆风顺的,其中有几个坑需要注意
1.如果你的是64位,一定要把上面说的lib改成lib64
2.主要上面修改的配置文件中有http.server_port=8888默认的,改成你在nginx中配置的,我配置的是80,就全部改成80,另外cliet那个配置文件是8080,页改成80,不然会出现404错误
3.增加权限,在nginx.conf中第一行增加user root;权限
最后利用上传时显示的图片地址在浏览器中进行访问即可
Alt text

热评文章