Linux 安装FastDFS图片服务器以及配合nginx实现图片查看

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liboyang71/article/details/78736893

各位同学,今天我们来学习一下如何安装FastDFS图片服务器,首先我们先来介绍一下什么是图片服务器。

1.什么是FastDFS

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2.FastDFS架构

FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。

Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。

Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器。

3.搭建FastDFS

以下所涉及到的下载文件本人都会上传到网上供各位同学下载使用

3.1 环境准备

首先我们需要安装一些所需环境在linux中

yum install gcc-c++
yum -y install libevent
yum install perl

3.2 安装libfastcommon

FastDFS 5.05版本不再依赖libevent,而依赖于libfastcommon,因此需要先安装libfastcommon。
软件包下载地址:https://github.com/happyfish100/libfastcommon
下载后将其上传至/usr/local下进行解压

# 切换目录
cd /usr/local
# 解压(没有unzip命令的同学自行安装)
unzip libfastcommon-master.zip -d libfastcommon-master
# 进到解压后的文件目录下
cd libfastcommon-master
# 进行安装
./make.sh
./make.sh install

3.3 安装FastDFS

将FastDFS压缩包上传至服务器/usr/local下

# 解压
tar -zxvf FastDFS_v5.05.tar.gz
# 切换盘符
cd FastDFS
# 安装
./make.sh
./make.sh install

如果安装成功,则可以看到/etc/fdfs目录下生成了3个文件
这里写图片描述

3.4 配置tracker节点

上面我们也提到了关于客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载的步骤,所以我们现在需要配置tracker节点

#创建tracker的数据文件和日志存储目录
mkdir -p /data/fastdfs
# 切换盘符  
cd /etc/fdfs
# 重命名
mv tracker.conf.sample tracker.conf
#修改的文件内容如下(基础配置,不考虑性能调优情况下):
vi tracker.conf 
base_path=/data/fastdfs  #设置 tracker 的数据文件和日志目录(需预先创建)
http.server_port=6666  #设置http端口号,默认为8080

保存并退出,之后创建软连接

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
#启动tracker节点
service fdfs_trackerd start  

启动成功后,在/data/fastdfs目录下生成了data和logs两个目录。
查看日志如下:
这里写图片描述

3.5 配置storage节点

#创建
mkdir /data/fastdfs-storage  
# 切换盘符
cd /etc/fdfs/
#重命名
mv storage.conf.sample storage.conf
#修改的文件内容如下(基础配置,不考虑性能调优情况下):
vi storage.conf
group_name=group1   #组名,可根据实际情况修改
base_path=/data/fastdfs-storage #设置storage数据文件和日志目录,需预先创建
store_path_count=1  #存储路径个数,需要和 store_path 个数匹配、
store_path0=/data/fastdfs-storage #存储路径
tracker_server=192.168.116.145:22122 # #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功。
http.server_port=8888  #设置 http 端口号
#创建软连
ln -s /usr/bin/fdfs_storaged /usr/local/bin
#启动storage
service fdfs_storaged start

查看日志以确保正常启动

cat /data/fastdfs-storage/logs/storaged.log

这里写图片描述

确认启动成功后,可以运行 fdfs_monitor 查看 storage服务器是否已经登记到 tracker服务器。

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

看到“ACTIVE”即可确认 storage 运行正常。
这里写图片描述

3.6 使用fdfs_test上传图片测试

为确保fastdfs正常运行,我们使用fdfs_test进行图片上传

# 切换盘符
cd /etc/fdfs/
# 重命名
mv client.conf.sample client.conf
# 修改配置
vi client.conf
base_path=/data/fastdfs-storage/logs
tracker_server=10.10.169.140:22122
#上传测试(最后即表示上传的图片)
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /data/yanjiang.png

如下图所示并生成url即表示上传成功
这里写图片描述

好了 现在我们的fastdfs就算是搭建完成了,但是我们现在使用生成的url在浏览器中是无法看到上传的图片的。想要看到上传好了的图片的话,我们还需要使用nginx与fastdfs进行配合才能完成。

4.在Storage上安装nginx

因为我们现在是单体的,所以不需要在tracker上安装nginx,我们现在的主要目的是为了进行上传图片的查看,因此在Storage上安装nginx即可。

4.1 安装FastDFS-nginx-module

将FastDFS-nginx-module_v1.16.tar.gz传至/usr/local/下

# 切换盘符
cd /usr/local/
# 下载
wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
# 解压
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
#修改config文件将/usr/local/路径改为/usr/
vi /usr/local/fastdfs-nginx-module/src/config

这里写图片描述

# 将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下
cp mod_fastdfs.conf /etc/fdfs/
# 修改mod_fastdfs.conf的内容
vi /etc/fdfs/mod_fastdfs.conf
base_path=/data/fastdfs-storage/logs
tracker_server=10.10.169.140:22122
#tracker_server=10.10.169.141:22122(多个tracker配置多行)
url_have_group_name=true        #url中包含group名称
store_path0=/data/fastdfs-storage   #指定文件存储路径

修改配置文件后进行保存,之后将http.conf 与 mime.types拷贝到/etc/fdfs下

# 切换盘符
cd /usr/local/FastDFS/conf/
# 拷贝文件
cp http.conf mime.types /etc/fdfs/

4.2 安装nginx

安装nginx的步骤在这里不做过多的解释,如果有不理解的同学,可以看我之前写过的Nginx简单介绍以及linux下使用Nginx进行负载均衡的搭建来详细的了解,首先我们先将nginx上传到服务器的/usr/local中。

# 解压
tar -zxvf nginx-1.8.0.tar.gz
# 切换目录
cd nginx-1.8.0
# 环境准备
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
yum install gd-devel
# 执行
./configure \
--prefix=/data/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/fastdfs-nginx-module/src \
--with-http_image_filter_module
# 执行
make
make install
# 切换目录
cd /data/nginx/conf/
# 修改配置文件
vi nginx.conf
#添加location
location /group1/M00/{
                ngx_fastdfs_module;
        }

这里写图片描述

启动nginx,我们来使用刚才测试的时候生成的图片url,如下图所示,成功
这里写图片描述

5.nginx配合fastdfs实现图片自动更改尺寸(附加)

好了,现在基本的功能我们已经完成了,图片上传以及根据url查看图片,现在我们来说一个附加的功能,我们希望可以根据url不同的图片长和宽数据来更改我们查看到的图片的大小,例如我们访问http://10.10.169.140/group1/M00/00/00/CgqpjFomDiOAUON_AASxcvqVW8Y340_big.png这个图片url显示如下图所示:
这里写图片描述

稍作修改
http://10.10.169.140/group1/M00/00/00/CgqpjFomDiOAUON_AASxcvqVW8Y340_big!150x100.png,图片就如下图所示
这里写图片描述

其实,想实现此功能主要用到了nginx的http_image_filter_module插件,当然如果你按照上面的步骤安装了此nginx,你会发现此插件已经安装好了,只要将nginx中的配置文件的配置进行修改即可,修改如下图所示
这里写图片描述

location ~ /group1/M00/(.*)!([0-9]+)x([0-9]+)\.(jpg|gif|png){
           root /data/fastdfs-storage/data;
           ngx_fastdfs_module;
           set $w $2;
           set $h $3;
              if ($w != "0") {
                    rewrite /group1/M00/(.+)!(\d+)x(\d+)\.(jpg|gif|png)$ /group1/M00/$1.$4 break;
              }
              image_filter resize $w $h;
              image_filter_buffer 100M;
        }

         location ~ group1/M00/(.+)\.?(.+){
             alias /data/fastdfs-storage/data;
             ngx_fastdfs_module;
        }

好了,以上就是搭建FastDFS图片服务器全过程以及一些附加功能,希望可以帮助更多的同学可以少踩一些坑,下篇文章我们将会展示如何将fastDFS与java进行结合在实际开发中进行图片的上传等操作。
所需资源下载地址http://download.csdn.net/download/liboyang71/10148823

猜你喜欢

转载自blog.csdn.net/liboyang71/article/details/78736893
今日推荐