背景: 1.作了图片上传小项目。 2.图片上传,须要多图管理。 3.图片上传,须要存储到Fastdfs。 4.Fastdfs上的图片,和Nginx结合。 5.Nginx从Fastdfs得到的图片,须要使用缩略图。 a.在不须要缩略图,小图的状况下,可使用原图。 b.须要缩略图的状况下,指定目标宽度和高度,得到指定宽度和高度的缩略图。 关键的几个参考资料 1.安装成功的nginx如何添加未编译安装模块 http://blog.csdn.net/gebitan505/article/details/17612845 2.nginx命令:启动,中止及命令参数详解 http://blog.csdn.net/aidenliu/article/details/6413342 3.nginx图片过滤处理模块http_image_filter_module安装配置笔记 http://www.cnblogs.com/tintin1926/archive/2012/07/11/2586624.html 第1步:查看nginx编译安装时的命令,安装了哪些模块 /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) configure arguments: --add-module=/root/soft/fastdfs-nginx-module-master/src cd /root/soft/nginx-1.8.0 ./configure --prefix=/root/soft/ --add-module=/root/soft/fastdfs-nginx-module-master/src --with-http_image_filter_module --with-http_realip_module --with-debug 报错啦 ./configure: error: the HTTP image filter module requires the GD library. You can either do not enable the module or install the libraries. 第2步:安装the GD library #这种不行,我本身YY的 yum install gd Running Transaction Installing : libXpm-3.5.10-2.el6.x86_64 1/2 Installing : gd-2.0.35-11.el6.x86_64 2/2 Verifying : libXpm-3.5.10-2.el6.x86_64 1/2 Verifying : gd-2.0.35-11.el6.x86_64 2/2 Installed: gd.x86_64 0:2.0.35-11.el6 Dependency Installed: libXpm.x86_64 0:3.5.10-2.el6 Complete! 按照本身yy的方式,没法启动。 百度搜索“the HTTP image filter module requires the GD library”,找到如下方式~ #这种方式能够 yum install gd-devel Installed: gd-devel.x86_64 0:2.0.35-11.el6 Dependency Installed: fontconfig-devel.x86_64 0:2.8.0-5.el6 freetype-devel.x86_64 0:2.3.11-15.el6_6.1 libX11-devel.x86_64 0:1.6.0-6.el6 libXau-devel.x86_64 0:1.0.6-4.el6 libXpm-devel.x86_64 0:3.5.10-2.el6 libXt.x86_64 0:1.1.4-6.1.el6 libjpeg-turbo-devel.x86_64 0:1.2.1-3.el6_5 libpng-devel.x86_64 2:1.2.49-1.el6_2 libxcb-devel.x86_64 0:1.9.1-3.el6 xorg-x11-proto-devel.noarch 0:7.7-9.el6 Dependency Updated: fontconfig.x86_64 0:2.8.0-5.el6 freetype.x86_64 0:2.3.11-15.el6_6.1 libX11.x86_64 0:1.6.0-6.el6 libX11-common.noarch 0:1.6.0-6.el6 libxcb.x86_64 0:1.9.1-3.el6 Complete! 第3步:这个目录下有二进制文件 /root/soft/nginx-1.8.0/objs 仍然在“/root/soft/nginx-1.8.0”这个目录下 原来的nginx二进制文件 -rwxr-xr-x 1 root root 3322288 Oct 29 14:29 nginx 编译生成的Nginx -rwxr-xr-x 1 root root 3480087 Nov 5 18:10 nginx 稍微变大了一点,这应该是增长了一个模块的效果 cp ./objs/nginx /usr/local/nginx/sbin/ [root@AY1304131823374920ac nginx-1.8.0]# cp ./objs/nginx /usr/local/nginx/sbin/ cp: overwrite `/usr/local/nginx/sbin/nginx'? y cp: cannot create regular file `/usr/local/nginx/sbin/nginx': Text file busy 第4步:中止Nginx的2个进程,再次cp [root@AY1304131823374920ac conf]# ps -ef|grep nginx root 11648 5064 0 18:18 pts/0 00:00:00 grep nginx root 30321 1 0 Oct29 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 30322 30321 0 Oct29 ? 00:00:08 nginx: worker process [root@AY1304131823374920ac conf]# ps -ef|grep nginx root 11668 5064 0 18:19 pts/0 00:00:00 grep nginx root 30321 1 0 Oct29 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 30322 30321 0 Oct29 ? 00:00:08 nginx: worker process [root@AY1304131823374920ac conf]# kill -9 30321 [root@AY1304131823374920ac conf]# ps -ef|grep nginx root 11670 5064 0 18:19 pts/0 00:00:00 grep nginx nobody 30322 1 0 Oct29 ? 00:00:08 nginx: worker process [root@AY1304131823374920ac conf]# kill -9 30322 [root@AY1304131823374920ac conf]# ps -ef|grep nginx root 11672 5064 0 18:19 pts/0 00:00:00 grep nginx 从新执行cp命令 第5步:检查配置,发现启动报错 [root@AY1304131823374920ac conf]# /usr/local/nginx/sbin/nginx -t nginx: [alert] could not open error log file: open() "/root/soft//logs/error.log" failed (2: No such file or directory) 2015/11/05 18:20:52 [emerg] 11697#0: open() "/root/soft//conf/nginx.conf" failed (2: No such file or directory) nginx: configuration file /root/soft//conf/nginx.conf test failed 应该是编译制定了--prefix /root/soft致使的,以前安装的时候,没有指定,默承认能是“/usr/local”. 第6步:能够经过指定配置文件的路径,来启动~ nginx -c </path/to/config> 此命令参数指定一个新的nginx配置文件来替换默认的nginx配置文件,若是你不肯定新的nginx配置文件语法是否正确,你能够经过nginx命令-t参数来测试,-t参数表明不运行配置文件,而仅仅只是测试配置文件,即 nginx -t -c </path/to/config> 此次,我仍是从新编译算了~ ./configure --prefix=/usr/local/nginx --add-module=/root/soft/fastdfs-nginx-module-master/src --with-http_image_filter_module --with-http_realip_module --with-debug make cp ./objs/nginx /usr/local/nginx/sbin/ 第7步:image_filter指令,不会再报错了。 location ~ group1/M00/(.+)\.?(.+){ alias /home/fastdata/data; ngx_fastdfs_module; image_filter resize 200 220; }