前面研究了fastdfs的安装部署,并且做了多机同步。

这次我们解决下FastDFS做文件服务器并处理缩略图的问题。

有两个方案,方案1,在上传过程中生成多张图片,服务器存备。方案2,只上传一张图片,在下载时候进行调整。我们这里采用方案2。

①安装gd,HttpImageFilterModule模块需要依赖gd-devel的支持

yum -y install gd-deve

出错了,怎么办。

查找参数来列出gd-deve相关的包名:

yum search gd-devel

yum -y install gd-devel.x86_64

安装成功

②将http_image_filter_module包含进来

1、 cd nginx-1.14.0

  # nginx-1.14.0是我们的nginx安装包目录

2、./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src --with-http_image_filter_module

  #只是比前面配置多加了个--with-http_image_filter_module

3、 make && make install 重新安装

③修改配置

vim /usr/local/nginx/conf/nginx.conf

结果

        location ~ group1/M00/(.+)_([-]+)x([-]+)\.(jpg|gif|png) {
alias /data0/fastdfs/storage/storage0/data;
ngx_fastdfs_module;
set $w $;
set $h $; if ($w != "") {
rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$.$ break;
} if ($h != "") {
rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group1/M00$.$ break;
} #根据给定的长宽生成缩略图
image_filter resize $w $h; #原图最大2M,要裁剪的图片超过2M返回415错误,需要调节参数image_filter_buffer
image_filter_buffer 2M; #try_files group1/M00$.$ $.jpg;
} location ~ group1/M00/(.+)\.?(.+){
alias /data0/fastdfs/storage/storage0/data;
ngx_fastdfs_module;
}

④测试

还是用我们之前的图,虽然有点小

原图

http://192.168.50.20/group1/M00/00/00/wKgyFFtm9mWAZfJhAAANHkI1RM4732.gif

缩略图

http://192.168.50.20/group1/M00/00/00/wKgyFFtm9mWAZfJhAAANHkI1RM4732_80x50.gif

差别只是最后gif前加了个"_80x50"


GD是什么?

1、GD库是php平台的一个关于图像处理的扩展。

PHP通过GD扩展去操作图片,是先在内存中处理,处理完以后以文件流的方式输出,可以输出到浏览器,也可以输出到磁盘上。因此一般的步骤是:

  1. 创建画布。其实就是在内存中开辟一块区域。
  2. 在画布上绘制图形。可以填充颜色,绘制“点”、“线”、“文本”、“图像”等
  3. 输出图像(浏览器或者磁盘)。
  4. 销毁图像,释放资源。

我们这里不介绍太多,具体看园友的链接  GD库简介和使用

2、http_image_filter_module是什么?

http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版,可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息 。

相关阅读:

CentOS7最小化安装-Linux-1

安装配置fastDFS文件服务器 - Linux

FastDFS 配置 Nginx 模块,并实现分布式同步-Linux

FasDfs缩略图解决方案 -- Linux

C# 使用FastDFS 文件服务

FasDfs缩略图解决方案 -- Linux的更多相关文章

  1. Addrss already in user 解决方案 (linux)

    Addrss already  in user 解决方案 查pid netstat -lptu 查看当前用户的进程 pid kill -9 pid 杀进程 重复上面步骤一次, 因为一遍杀不死.他会换一 ...

  2. Mycat分布式数据库架构解决方案--Linux安装运行Mycat

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Myc ...

  3. FastDFS 配置 Nginx 模块,并实现分布式同步-Linux

    1.搭建虚拟机 a.复制虚拟机文件 首先复制我们之前安装好的fastdfs虚拟机,因为我们现在要设置它的IP为21,改名为CentOS-fastdfs - 21. b.设置网络 生成新的MAC地址 设 ...

  4. 安装配置fastDFS文件服务器 - Linux

    一.配置linux环境 1.新建虚拟机 把上次安装的CentOS7的文件复制一份,并改名 打开VM>打开虚拟机,选择刚才复制好的虚拟机,并启动.这样做的目的主要是为了保留一份最基础的母本,为了将 ...

  5. CentOS7最小化安装-Linux-1

    CentOS 7的安装其实很简单,主要是网络配置. 选英文.设置时区等 最小化安装 先启动一个网络 Begin 吧 在安装的时候设置好root密码.很简单 别去点安装tools. 等待安装完成后,点击 ...

  6. Linux下Crontab定时任务的使用教程 以及 无法执行定时任务的解决方案

     前言 本文学习思路:Linux的corntab定时任务的使用教程  --> 定时任务无效的解决方案  Linux的corntab定时任务的使用教程 1. 首先,输入命令 打开crontab定时 ...

  7. Linux权限:提示-bash: ./startup.sh: Permission denied的解决方案

    Linux权限:提示-bash: ./startup.sh: Permission denied的解决方案 Linux上启动Tomcat,结果弹出:-bash: ./startup.sh: Permi ...

  8. Linux 下 netbeans 字体抗锯齿正解

    转自:http://leenjewel.blog.163.com/blog/static/601937922010124444051/ 说来这个不难,主要是我看网上有的写的不是很明确,甚至有的写的根本 ...

  9. Linux 双向 SSH 免密登录

    原理 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录.双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他所有 ...

随机推荐

  1. xcode Xcode_9.2.xip 官方离线下载地址

    一.打开下面的链接 https://developer.apple.com/downloads/ 二.在左侧搜索框中搜索:xcode 三.展开你要下载的版本,点列表右边的蓝色链接如:Xcode 9.2 ...

  2. 排序算法<No.2>【快速排序】

    最近因为项目需要,研究AI相关的东西,主要是算法相关的. 有感触,所以决定,来一个系列的博文,可能会耗时很久,那就是要完成算法系列.起点,从最常用最基本的排序开始.后续会跟进其他类型的,比如树,图等领 ...

  3. 使用PHPMAILER实现PHP发邮件功能

    第一步: 打开网址https://github.com/PHPMailer/PHPMailer/ 下载PHPMailer,PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ ...

  4. golang中defer的详解 转自https://blog.csdn.net/skh2015java/article/details/77081250

    Go里的defer很有用,尤其在很多执行模块化操作时,初始化时给各个需要执行的模块传入参数,但是这些参数有些事在模块执行过程中才赋值的. 这时候有了defer就不会把代码写的很凌乱. Go的defer ...

  5. C#中winform使用相对路径读取文件的方法

    http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73b6cd0d3027fa3cf1fd579080101 ...

  6. JS获取坐标

    1.js获取对象的绝对坐标 方法1: function getAbsPoint(e) { var x = e.offsetLeft, y = e.offsetTop; while(e=e.offset ...

  7. 流媒体技术笔记(DarwinStreamingServer相关)

    简介 Darwin Streaming Server简称DSS.DSS是Apple公司提供的开源实时流媒体播放服务器程序.整个程序使用C++编写,在设计上遵循高性能,简单,模块化等程序设计原则,务求做 ...

  8. python "爬虫+有道词典"实现一个简单翻译程序

    抓包软件使用的是Fiddler4 新版的查询接口 比较负责,引入了salt和sign http://fanyi.youdao.com/translate?smartresult=dict&sm ...

  9. 《Java并发编程实战》笔记-锁与原子变量性能比较

    如果线程本地的计算量较少,那么在锁和原子变量上的竞争将非常激烈.如果线程本地的计算量较多,那么在锁和原子变量上的竞争会降低,因为在线程中访问锁和原子变量的频率将降低. 在高度竞争的情况下,锁的性能将超 ...

  10. C++之单例类模板

    单例类模板:一个类只能有一个对象,比如超市收银系统中清点物品的仪器只有一个 设计思路: 1.构造函数,拷贝构造函数必须设计为private,防止自己生成新的对象 2.且类的指针要设计为static类型 ...