使用FastDFS搭建图片服务器(单实例)

一、背景描述

之前公司的图片服务器已经不能胜任了(直接使用tomcat),需要重新搭建图片服务器,这两天研究了下FastDFS,感觉挺好用记录下来以供日后参考。

二、FastDFS官方介绍

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过
专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、
HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

    1、FastDFS架构图

图1:FastDFS架构图

1)Tracker cluster中各个tracker server相互独立,不进行相互通信。

2)Storage cluster中各个storage组(Volume1,Volume2...)相互独立,不进行相互通信,也就是说各个组之间保存的数据是不相同的。但是各个组中的storage server之间是属于互相备份的关系,也就是说storage server之间保存相同的数据。

3)每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息。

2、文件上传和下载的时序图

图2:文件上传时序图

1)Client通过Tracker server将文件上传到Storage server。

2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。

3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。

4)上传完成,Storage server返回Client一个文件ID,文件上传结束。

图3:文件下载时序图

1)Client通过Tracker server下载指定Storage组中某个Storage server上的某个文件(文件名包括Storage组名称)。

2)Tracker server向Client返回一台可用的Storage server的IP地址和端口号。

3)Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件下载。

三、安装并配置FastDFS

    1、运行环境及相关软件

    CentOS 6.5

FastDFS_v5.08.tar.gz

nginx-1.8.1.tar.gz

fastdfs-nginx-module_v1.16.tar.gz

libfastcommon

2、服务器规划

服务器名称
IP地址和端口
备注
fastdfs-tracker 172.18.10.232:22122 跟踪服务器/调度服务器
fastdfs-storage 172.18.10.233:23000 存储服务器

3、安装FastDFS

    1)首先创建工具目录(非必须)

[[email protected] ~]# mkdir -p /home/oldcat/tools
[[email protected] ~]# cd /home/oldcat/tools/

    2) 下载并安装FastDFS依赖包libfastcommon

[[email protected] tools]# wget https://codeload.github.com/happyfish100/libfastcommon/zip/master
[[email protected] tools]# unzip master
[[email protected] tools]# cd libfastcommon-master/
[[email protected] libfastcommon-master]# ls
HISTORY  INSTALL  libfastcommon.spec  make.sh  php-fastcommon  README  src
[[email protected] libfastcommon-master]# ./make.sh
[[email protected] libfastcommon-master]# ./make.sh install

    3)下载并安装FastDFS  

[[email protected] tools]# wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz
[[email protected] tools]# tar xf FastDFS_v5.08.tar.gz
[[email protected] tools]# cd FastDFS
[[email protected] FastDFS]# ./make.sh && ./make.sh install

    采用默认方式安装后的文件及目录:

    1)服务脚本:

[[email protected] ~]# ll /etc/init.d/ |grep fdfs
-rwxr-xr-x. 1 root root   918 4月  22 22:08 fdfs_storaged
-rwxr-xr-x. 1 root root   920 4月  22 22:08 fdfs_trackerd

2)样例配置文件

[[email protected]tdfs-tracker ~]# ll /etc/fdfs/
总用量 20
-rw-r--r--. 1 root root 1461 4月  22 22:08 client.conf.sample
-rw-r--r--. 1 root root 7927 4月  22 22:08 storage.conf.sample
-rw-r--r--. 1 root root 7200 4月  22 22:08 tracker.conf.sample

    3)命令行工具

[[email protected] ~]# ll /usr/bin|grep fdfs
-rwxr-xr-x.   1 root root     252272 4月  22 22:08 fdfs_appender_test
-rwxr-xr-x.   1 root root     252225 4月  22 22:08 fdfs_appender_test1
-rwxr-xr-x.   1 root root     242449 4月  22 22:08 fdfs_append_file
-rwxr-xr-x.   1 root root     242013 4月  22 22:08 fdfs_crc32
-rwxr-xr-x.   1 root root     242508 4月  22 22:08 fdfs_delete_file
-rwxr-xr-x.   1 root root     243627 4月  22 22:08 fdfs_download_file
-rwxr-xr-x.   1 root root     243369 4月  22 22:08 fdfs_file_info
-rwxr-xr-x.   1 root root     255657 4月  22 22:08 fdfs_monitor
-rwxr-xr-x.   1 root root     863913 4月  22 22:08 fdfs_storaged
-rwxr-xr-x.   1 root root     258712 4月  22 22:08 fdfs_test
-rwxr-xr-x.   1 root root     257881 4月  22 22:08 fdfs_test1
-rwxr-xr-x.   1 root root     365232 4月  22 22:08 fdfs_trackerd
-rwxr-xr-x.   1 root root     243547 4月  22 22:08 fdfs_upload_appender
-rwxr-xr-x.   1 root root     244453 4月  22 22:08 fdfs_upload_file

    注意:虽然FastDFS区分tracker和storage服务器,但是安装的软件及步骤均相同,只是不同的配置文件而已,因此以上安装适用tracker server和storage server


    4、配置跟踪服务器(tracker server)

    1)拷贝tracker server和client端样例配置文件并重命名

[[email protected] ~]# cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
[[email protected] ~]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

2)编辑tracker server配置文件tracker.conf,需要修改内容如下:

    disabled=false(默认为false,表示是否无效)
    port=22122(默认为22122)
    base_path=/data/fastdfs/tracker

3)编辑client端的配置文件client.conf,需要修改内容如下

    base_path=/data/fastdfs/tracker
    tracker_server=172.18.10.232:22122

4)创建tracker server数据目录

[[email protected] ~]# mkdir -p /data/fastdfs/tracker

5)测试启动tracker server,启动成功会自动在/data/fastdfs/tracker目录新建data和logs目录

[[email protected] ~]# cd /data/fastdfs/tracker/
[[email protected] tracker]# ls
[[email protected] tracker]# /etc/init.d/fdfs_trackerd start
Starting FastDFS tracker server:
[[email protected] tracker]# ss -lntup|grep 22122
tcp    LISTEN     0      128                    *:22122                 *:*      users:(("fdfs_trackerd",3785,5)) 
[[email protected] tracker]# ls
data  logs

    6)关闭tracker server

[[email protected] tracker]# /etc/init.d/fdfs_trackerd stop
waiting for pid [3785] exit ...
pid [3785] exit.

    5、配置存储服务器(storage server)

    1)拷贝storage server样例配置文件并重命名

[[email protected] ~]# cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

    2)编辑storage server配置文件storage.conf,需要修改内容如下:

    disabled=false(默认为false,表示是否无效)
    port=23000(默认为23000)
    base_path=/data/fastdfs/storage
    tracker_server=172.18.10.232:22122
    store_path0=/data/fastdfs/storage
    http.server_port=8888(默认为8888,nginx中配置的监听端口那之一致)

3)创建storage server数据目录

[[email protected] ~]# mkdir -p /data/fastdfs/storage

    4)测试启动storage server,启动成功会自动在/data/fastdfs/tracker目录新建data和logs目录(启动storage server的前提是tracker server必须事先已启动)

[[email protected] ~]# cd /data/fastdfs/storage/
[[email protected] storage]# ls
[[email protected] storage]# /etc/init.d/fdfs_storaged start
Starting FastDFS storage server:
[[email protected] storage]# ss -lntup|grep 23000
tcp    LISTEN     0      128                    *:23000                 *:*      users:(("fdfs_storaged",3786,5))
[[email protected] storage]# ls
data  logs

    6、文件上传测试

    执行如下上传命令:

[[email protected] ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/oldcat/imgs/test.jpg
group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg
返回文件ID即说明文件已经上传成功

四、存储服务器(storage server)安装并配置nginx

1)安装fastdfs-nginx-module模块

注:FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

[[email protected] tools]# tar xf fastdfs-nginx-module_v1.16.tar.gz 
[[email protected] tools]# cd fastdfs-nginx-module/src/
[[email protected] src]# vim config
编辑config文件,执行如下命令进行批量替换并保存退出
:%s+/usr/local/+/usr/+g

2)拷贝fastdfs-nginx-module模块中配置文件到/etc/fdfs目录中并编辑

[[email protected] ~]# cp /home/oldcat/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
[[email protected] ~]# vim /etc/fdfs/mod_fastdfs.conf
修改内容如下:
connect_timeout=10
base_path=/tmp(默认为/tmp)
tracker_server=172.18.10.232:22122
storage_server_port=23000(默认配置为23000)
url_have_group_name = true
store_path0=/data/fastdfs/storage
group_name=group1(默认配置为group1)

3)安装nginx依赖库

[[email protected] nginx-1.8.1]# yum install -y pcre-devel zlib-devel

4)安装nginx

[[email protected] tools]# tar xf nginx-1.8.1.tar.gz 
[[email protected] tools]# cd nginx-1.8.1
[[email protected] nginx-1.8.1]# ./configure --prefix=/application/nginx/ --add-module=../fastdfs-nginx-module/src/
[[email protected] nginx-1.8.1]# make && make install

5)拷贝FastDFS中的部分配置文件到/etc/fdfs目录中

[[email protected] ~]# cp /home/oldcat/tools/FastDFS/conf/http.conf /etc/fdfs/
[[email protected] ~]# cp /home/oldcat/tools/FastDFS/conf/mime.types /etc/fdfs/

6)配置nginx,如下所示:

[[email protected] ~]# vim /application/nginx/conf/nginx.conf
    user  root;    
    worker_processes  1;
    events {
       worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ {
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }
    }

说明:

a、"user root"是解决下载操作时报404的问题

b、8888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应

c、storage对应有多个group的情况下,访问路径带group名称,例如:/group1/M00/00/00/**,对应nginx配置:

location ~/group[0-9]/ {
           ngx_fastdfs_module;
     }

7)拷贝nginx服务到/etc/init.d/目录下并启动

[[email protected] ~]# cp /application/nginx/sbin/nginx /etc/init.d/
[[email protected] ~]# /etc/init.d/nginx
[[email protected] ~]# ss -lntup|grep 8888
tcp    LISTEN     0      128                    *:8888                  *:*      users:(("nginx",7308,6),("nginx",7309,6))

8)通过浏览器访问之前已经上传的文件

浏览器可以成功访问到上传的图片,说明使用FastDFS搭建的图片服务器成功完成!

时间: 2024-11-08 19:27:52

使用FastDFS搭建图片服务器(单实例)的相关文章

使用FastDFS搭建图片服务器单实例

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用.准确地讲,Google FS以及FastDFS.mogileFS. HDFS.TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务.  1.FastDFS架构图 图1:FastDFS架构图 1)Tracker cluster中各个tracke

ueditor搭建图片服务器

最近用使用富文本编辑器,之前一直使用kindeditor和eWebEditor来着,有同事给推荐说使用百度推出的Ueditor,所以咯,自己新项目就将它引进来了,这里说一下心得, 说实话,Ueditor的官网文档真的一般,但是还是能让人看懂的,只不过有些地方写法实在操蛋.不过简单的上手还是很容易的,好了,废话不多说,直接上干货. 一.简单的使用 1 <%@ page language="java" contentType="text/html; charset=UTF-

Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG

Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置 [大型连续免费公开课]Oracle 18c rac+dg+13.3的emcc部署配置(2018年最后一次免费公开课) 报名连接:https://ke.qq.com/course/315575 讲师:小麦苗 预计课时:6课时 开课时间:11月9日20点 相关软件下载地址:https://share.weiyun.com/57HUxNi 听课福利: 1.获得讲课文档pdf和课

vsftpd+nginx搭建图片服务器的一些问题

前言 五月份做了一个项目,其中有一个vsftpd+nginx搭建图片服务器的部分,一直出现错误,在控制台上显示上传成功,可是访问相关图片页面却一直访问不了,想了几天也没解决,于是这个bug就一直放在那,直到今天才解决. 一.安装vsftpd+nginx 这里网上都是资料,不多阐述 二.vsftpd遇到的错误    1.启动systemctl start vsftpd 发生错误: 解决方法 1)按照网上说的,把vsftpd.conf配置文件下的#listen_ipv6=YES注释掉或者改为NO 2

nginx搭建图片服务器

http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建议使用. 安装nginx wget http://nginx.org/download/nginx-1.7.3.tar.gz 安装gd yum install gd-devel 安装p

nginx+ftp搭建图片服务器(Windows Server服务器环境下)

几种图片服务器的对比 1.直接使用ftp服务器,访问图片路径为 ftp://账户:密码@192.168.0.106/31275-105.jpg 不采用这种方式,不安全容易暴露ftp账户信息 2.直接使用IIS或Tomcat等服务器在项目中访问,图片少的情况可以考虑.商城网站则不行,图片访问处理需搭建图片服务器 3.ftp+nginx服务器,ftp负责上传图片,nginx负责图片的访问 一.需要的组件 1.ftp服务器(图片上传,本文选用IIS为容器) ps Linux操作系统  可安装vsftp

170116、centos6.4下nginx和ftp搭建图片服务器

一.需要的组件 图片服务器两个服务: Nginx(图片访问): 1.http服务:可以使用nginx做静态资源服务器.也可以使用apache.推荐使用nginx,效率更高. 2.反向代理 实现 负载均衡 ftp服务(图片上传): 使用Linux做服务器,在linux中有个ftp组件vsftpd. 二.Nginx服务器搭建 1.安装Nginx 要求安装vmware虚拟机. Linux:CentOS6.4(32) Nginx:1.8.0 Vsftpd:需要在线安装. 虚拟机以及Linux安装很简单此

搭建rac对单实例的MAA

一:实验环境 系统:redhat 4 三台计算机rac1,rac2,dg. --其中rac为主库,单实例为备库 已在虚拟机里搭建好集群环境(rac1,rac2); dg计算机里没有建任何数据库(只安装了Oracle软件). 二:实验步骤 单实例环境部署请参考文档‘Linux下安装Oracle 10g(redhat 4)’. 3.1:enable forced logging --将主库设为强制归档 SQL> select force_logging from v$database; FOR --

Linux中用Nginx和FTP搭建WS幸运飞艇平台搭建图片服务器

一.需要的组件WS幸运飞艇平台搭建论坛:haozbbs.com Q1446595067 图片服务器两个服务:Nginx(图片访问): 1.http服务:可以使用nginx做静态资源服务器.也可以使用apache.推荐使用nginx,效率更高. 2.反向代理 实现 负载均衡ftp服务(图片上传): 使用linux做服务器,在linux中有个ftp组件vsftpd.二.Nginx服务器搭建1.安装Nginx 要求安装vmware虚拟机. Linux:CentOS6.4(32) Nginx:1.8.0