文档章节

【Linux初学】nginx-lua-fastdfs-GraphicsMagick安装(八)

大白来袭
 大白来袭
发布于 2018/07/13 18:43
字数 1553
阅读 63
收藏 4

近期刚好有时间,整理一下nginx-lua-fastdfs-GraphicsMagick。简单说就是,在nginx配置图片请求lua脚本,脚本中通过GraphicsMagick命令将fastdfs文件系统上的图片变更成指定的尺寸。

先看看前辈们的案例:(等比例缩略图生成)

原图(800*800):http://gi1.md.alicdn.com/imgextra/i1/401612253/T2ASPfXE4XXXXXXXXX_!!401612253.jpg

60*60: http://gi1.md.alicdn.com/imgextra/i1/401612253/T2ASPfXE4XXXXXXXXX_!!401612253.jpg_60x60.jpg

80*80:http://gi1.md.alicdn.com/imgextra/i1/401612253/T2ASPfXE4XXXXXXXXX_!!401612253.jpg_80x80.jpg

一、nginx-lua 配置:

1.检查已经装的nginx路径和版本:

#find /|grep nginx.conf

/usr/local/nginx/conf

#/usr/local/nginx/sbin/nginx -v

nginx version: nginx/1.9.8

注:如果是nginx1.6以下是版本先看下面升级nginx的方法先升级,否则安装不了

2、 下载luajit 2.0.5并安装

# wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz

# tar -zxvf LuaJIT-2.0.5.tar.gz

# cd LuaJIT-2.0.5/

# make && make install

执行后会显示日志:==== Successfully built LuaJIT 2.0.5 ====

3、 下载ngx_devel_kit http://github.com/simpl/ngx_devel_kit/tags 解压

# wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz

# tar -zxvf v0.2.19.tar.gz

解压后将会看到:ngx_devel_kit-0.2.19文件

4、 下载nginx_lua_module http://github.com/chaoslawful/lua-nginx-module/tags 解压

# wget https://github.com/openresty/lua-nginx-module/archive/v0.10.0.tar.gz

# tar -zxvf v0.10.0.tar.gz

解压后将会看到:lua-nginx-module-0.10.0文件

5、导入环境变量,编译用,LuaJIT默认安装在(/usr/local/lib)

# ls /usr/local/lib

# ls /usr/local/include/

# export LUAJIT_LIB=/usr/local/lib

# export LUAJIT_INC=/usr/local/include/luajit-2.0

上面方法的PATH 在终端关闭 后就会消失。
vim /etc/profile
在文档最后,添加:
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
保存,退出,然后运行:
#source /etc/profile
不报错则成功。

6、 进入nginx源码文件夹,增加编译参数

# /usr/local/nginx/sbin/nginx -v

显示版本信息: nginx/1.9.8

# find /|grep nginx-1.9.8
# cd /usr/local/temp/nginx-1.9.8/

./configure --user=www --group=www --prefix=/usr/local/nginx --with-pcre=/usr/local/temp/pcre-8.37 --add-module=/usr/local/temp/ngx_cache_purge-2.3 --add-module=/usr/local/temp/ngx_devel_kit-0.2.19 --add-module=/usr/local/temp/lua-nginx-module-0.10.0

参数说明:
./configure --prefix=/etc/nginx \ #nginx的安装路径
--add-module=/home/user/ngx_devel_kit-0.2.19 \ #ngx_devel_kit 的源码路径
--add-module=/home/user/lua-nginx-module-0.10.0 #nginx_lua_module 的源码路径

7、执行安装

# cd /usr/local/temp/nginx-1.9.8/

# make

# make install

发现nginx版本太低安装不了,需要先升级
/home/user/lua-nginx-module-0.10.0/src/ngx_http_lua_common.h:26:2: error: #error at least nginx 1.6.0 is required but found an older version

版本太低,先进行下面步骤升级nginx

8、测试是否成功

# find /|grep nginx.conf
/usr/local/nginx/conf
加入
location /lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}

# /usr/local/nginx/sbin/nginx -t   --验证配置文件是否配置正常
# /usr/local/nginx/sbin/nginx -s stop   --上面失败后无法停止nginx

报错:error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

解决:

# find / -name  libluajit-5.1.so.2 --查找该包确实存在

# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2  --生成软链接

接下来再次停止

# /usr/local/nginx/sbin/nginx -s stop

# /usr/local/nginx/sbin/nginx

浏览器访问http://ip:port/lua,会出现“hello,lua”;或者使用#curl http://service.quivertree.com/lua,也会显示“hello,lua”。安装成功!

二、安装GraphicsMagick:

1、下载压缩包:GraphicsMagick:http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/

2、上传解压:tar -zxvf GraphicsMagick-1.3.30.tar.gz (windows下载)

或 tar -Jxvf GraphicsMagick-1.3.30.tar.xz (ios下载)

[/usr/local/temp/GraphicsMagick-1.3.30]# ./configure --prefix=/usr/local/GraphicsMagick --enable-shared

[/usr/local/temp/GraphicsMagick-1.3.30]# make

[/usr/local/temp/GraphicsMagick-1.3.30]# make install

[/usr/local/temp/GraphicsMagick-1.3.30]# /usr/local/GraphicsMagick/bin/gm version

会显示出GraphicsMagick支持的图片格式,即安装成功!

Feature Support:
Native Thread Safe     yes
Large Files (> 32 bit)     yes
Large Memory (> 32 bit)     yes
BZIP            no
DPS             no
FlashPix       no
FreeType     no
Ghostscript (Library)     no
JBIG             no
JPEG-2000   no
JPEG             no
Little CMS    no
Loadable Modules     no
OpenMP     yes (200805)
PNG             no
TIFF              no
TRIO             no
UMEM          no
WebP            no
WMF             no
X11                no
XML               no
ZLIB               yes

3、下载lib,支持JPEG、PNG

wget http://www.imagemagick.org/download/delegates/jpegsrc.v9b.tar.gz

wget http://www.imagemagick.org/download/delegates/libpng-1.6.31.tar.gz

tar -zxvf jpegsrc.v9b.tar.gz

tar -zxvf libpng-1.6.31.tar.gz

解压后生成文件:jpeg-9b、libpng-1.6.31

[jpeg-9b]# ./configure

[jpeg-9b]# ./make

[jpeg-9b]# ./make install

[libpng-1.6.31]# ./configure

[libpng-1.6.31]# ./make

[libpng-1.6.31]# ./make install

安装完成后,重新安装GraphicsMagick,即:

[/usr/local/temp/GraphicsMagick-1.3.30]# make

[/usr/local/temp/GraphicsMagick-1.3.30]# make install

[/usr/local/temp/GraphicsMagick-1.3.30]# /usr/local/GraphicsMagick/bin/gm version

提示错误:

/usr/local/GraphicsMagick/bin/gm: error while loading shared libraries: libjpeg.so.9: cannot open shared object file: No such file or directory

系统不知道libjpeg.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入libjpeg.so所在的目录。一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的libjpeg.so文件。所以,在/etc/ld.so.conf中加入/usr/local/lib这一行,保存之后,再运行:

[/]# /sbin/ldconfig -v   --更新一下配置即可。

[/usr/local/temp/GraphicsMagick-1.3.30]# /usr/local/GraphicsMagick/bin/gm version

Feature Support:
  Native Thread Safe       yes
  Large Files (> 32 bit)   yes
  Large Memory (> 32 bit)  yes
  BZIP                     no
  DPS                      no
  FlashPix                no
  FreeType              no
  Ghostscript (Library)    no
  JBIG                     no
  JPEG-2000           no
  JPEG                     yes
  Little CMS            no
  Loadable Modules   no
  OpenMP                   yes (200805)
  PNG                    yes
  TIFF                     no
  TRIO                    no
  UMEM                 no
  WebP                  no
  WMF                   no
  X11                      no
  XML                     no
  ZLIB                     yes

4、测试生成图片:

原图地址:/usr/local/test/1.jpg

[/usr/local/GraphicsMagick/bin]# gm convert -resize 100x80^ -gravity Center -crop 100x80+0+0 /usr/local/test/1.jpg /usr/local/test/2.jpg

执行成功,可以在/usr/local/下查看到新生成的图片2.jpg。

将gm命令设置成全局变量,即:

vi /etc/profile

设置 PATH=$JAVA_HOME/bin:$PATH:/usr/local/mongodb/bin:/usr/local/GraphicsMagick/bin

保存后,执行 source /etc/profile ,完成更新。

gm identify /usr/local/test/1.jpg

显示:/usr/local/test/1.jpg JPEG 1280x720+0+0 DirectClass 8-bit 137.5Ki 0.000u 0m:0.000004s

5、编写脚本vi ImageResizer.lua

local command = "/usr/local/GraphicsMagick/bin/gm convert " .. ngx.var.request_filepath .. " -resize " .. ngx.var.width .. "x" .. ngx.var.height .. " +profile \"*\" " .. ngx.var.request_filepath .. "_" .. ngx.var.width .. "x" .. ngx.var.height .. "." .. ngx.var.ext;
os.execute(command); // 执行裁剪命令
ngx.exec(ngx.var.request_uri); // 输出裁剪后的图片

6、修改nginx的配置文件nginx.conf

location ~ /pic/ {
            root /usr/local/tomcat/static;
                if ($uri ~* ^/pic/(.+\.(jpg|jpeg|gif|png))_(\d+)x(\d+)\.(jpg|jpeg|gif|png)) {
                        add_header X-Powered-By 'Lua GraphicsMagick';
                        add_header file-path $request_filename;
                        lua_code_cache on;
                        set $request_filepath /usr/local/tomcat/static/pic/$1;
                        set $width $3;
                        set $height $4;
                        set $ext $5;
                 }
 
                if (!-f $request_filename) {
                        content_by_lua_file /usr/local/nginx/ImageResizer.lua;
                }
        }

7、访问报错404/500

[/usr/local/nginx/logs]# tail -f error.log

如果报错信息为 /usr/local/GraphicsMagick/bin/gm convert: Unable to open file (/usr/local/tomcat/static/article/pic/110/1.jpg_80x80.jpg) [Permission denied].

发现没有对应权限,进行图片文件夹pic授权:

[/usr/local/tomcat/static/article/]chmod 777 -R pic

再次访问就可以了 ~over~

本文转载自:https://www.cnblogs.com/zdz8207/p/nginx_lua_module.html

大白来袭
粉丝 4
博文 41
码字总数 13667
作品 0
海淀
程序员
私信 提问
Tengine + Lua + GraphicsMagick 实现图片自动裁剪/缩放

一、背景 随着互联网的快速发展、需求频繁变更、内容数量的俱增、时间的持续增长,图片数量也会越来越多。在实际需求中,会出现在若干个页面或同一个页面不同位置,展示同一条信息以及其缩略...

开源中国董事会主席
2013/10/17
0
41
GraphicsMagick介绍及安装

GraphicsMagick 当前稳定版本:1.3.12(发布日期2010-03-08) 简单介绍: GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取...

long0419
2015/04/15
0
0
GraphicsMagick Linux安装

GraphicsMagick 简单介绍: GraphicsMagick号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格式,包括...

kearney
2012/10/11
0
0
高清缩略图之GraphicsMagick

GraphicsMagick号称图像处理领域的瑞士军刀,也称命令行版的Photoshop, 短小精悍的代码却提供了一个超棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格式,包括重...

一剑风徽
2012/11/18
0
2
用graphicsmagick去生成缩略图

@Gmuploader 你好,想跟你请教个问题: 我在linux下想用graphicsmagick去给各种格式的图片生成缩略图,在安装graphicsmagick之后呢我先是把 libjpeg,libpng,freetype,libzip等依赖库给安装了...

jiang_include
2015/07/24
1K
5

没有更多内容

加载失败,请刷新页面

加载更多

阿里maven仓库设置,不设置mirror防止覆盖项目pom指定repo

<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed wi......

dead_pools
35分钟前
2
0
在Springboot中编写Mock单元测试

1.概要 软件测试是一个应用软件质量的保证。java开发者开发接口往往忽视接口单元测试。作为java开发如果会Mock单元测试,那么你的bug量将会大大降低。spring提供test测试模块,所以现在小胖哥...

码农小胖哥
48分钟前
14
0
Qt编写自定义控件36-图片浏览器

一、前言 本控件主要用来作为一个简单的图片浏览器使用,可以上下翻页显示图片,图片还可以开启过度效果比如透明度渐变,应用场景有查看报警图片运行图片等。此控件非本人原创,来源于网络,...

飞扬青云
49分钟前
1
0
Java并发编程笔记——J.U.C之collections框架:ConcurrentLinkedQueue

一:ConcurrentLinkedQueue简介 ConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构使用单向链表实现,对于入队和出队操作使用CAS来实现线程安全。 Doug Lea在实现Concurren...

须臾之余
今天
2
0
cisco交换机配置ssh远程登陆

前言: 最近整理一些以前的学习笔记(有部分缺失,会有些乱,日后再补)。 过去都是存储在本地,此次传到网络留待备用。 cisco SSH远程登陆配置 0.配置ip,启动端口 Switch>enable ...

迷失De挣扎
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部