nginx+lua_nginx+GraphicsMagick生成实时缩略图

2016-08-04 10:42:40来源:oschina作者:langke人点击

安装graphi magic


wget http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.16/GraphicsMagick-1.3.16.tar.gz/download


./configure --prefix=/usr/local/GraphicsMagick-1.3.16


make;make install

安装nginx需要的模块如下


liujithttp://luajit.org


ngx_devel_kit https://github.com/simpl/ngx_devel_kit


echo-nginx-module https://github.com/agentzh/echo-nginx-module


lua-nginx-modulehttps://github.com/chaoslawful/lua-nginx-module


#下载luajit
http://luajit.org/download/LuaJIT-2.0.0-beta10.tar.gz
cd LuaJIT-2.0.0-beta10
make && make install PREFIX=/usr/local/lj2
ln -sf luajit-2.0.0-beta10 /usr/local/lj2/bin/luajit
#下载 ngx_devel_kit 模块
https://github.com/simpl/ngx_devel_kit/zipball/master
unzip simpl-ngx_devel_kit-v0.2.17-10-g4192ba6.zip
#下载 lua-nginx-module 模块
https://github.com/chaoslawful/lua-nginx-module/tarball/master
unzip chaoslawful-lua-nginx-module-v0.6.0-3-g936653c.zip
#下载echo https://github.com/agentzh/echo-nginx-module/zipball/master unzip echo-nginx-module.zip #下载cache http://labs.frickle.com/files/ngx_cache_purge-1.6.tar.gz tar zvxfngx_cache_purge-1.6.tar.gz #下载nginx

wget http://nginx.org/download/nginx-1.2.1.tar.gz


tar zvxfnginx-1.2.1.tar.gz

设置环境变量

export LUAJIT_LIB=/usr/local/lj2/lib


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


export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH


export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH


GM_HOME=/usr/local/GraphicsMagick-1.3.16;


PATH=$GM_HOME/bin:$PATH;


export PATH


export GM_HOME


使环境变量生效:source /etc/profile


编译参数:


--prefix=/usr/local/nginx --user=tomcat--with-http_stub_status_module --add-module=/usr/src/simpl-ngx_devel_kit-4192ba6 --with-ld-opt=-Wl,-rpath,/usr/local/lj2/lib --add-module=/usr/src/ngx_cache_purge-1.6 --with-http_perl_module --add-module=/usr/src/chaoslawful-lua-nginx-module-936653c --add-module=/usr/src/agentzh-echo-nginx-module-b3ad5c1


注意:图片存储目录的用户需要跟nginx运行用户是同一用户,否则会出现缩略图文件不可写情况


lua模块测试


nginx.conf配置


location /lua1 {


default_type 'text/plain';


content_by_lua 'ngx.say("hello, lua")';


}

location /image {


set $image_root /mnt/mfs/web/sq/webroot;


set $file "$image_root$uri";


if (!-f $request_filename) {


rewrite_by_lua '


local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)");


local originalUri = string.sub(ngx.var.uri, 0, index-2);


local area = string.sub(ngx.var.uri, index);


index = string.find(area, "([.])");


area = string.sub(area, 0, index-1);


local image_sizes = {"140x140", "800x800", "90x90"};

function table.contains(table, element)


for _, value in pairs(table) do


if value == element then


return true


end


end


return false


end

if table.contains(image_sizes, area) then


local command = "/usr/local/GraphicsMagick-1.3.16/bin/gm convert " .. ngx.var.image_root .. originalUri .. " -thumbnail " .. area .. " -gravity center -extent " .. area .. " " .. ngx.var.file;


os.execute(command);


else


ngx.exit(401);


end;


';


}


alias /mnt/mfs/web/sq/webroot/image/;


expires 7d;

}


访问图片在原图片url后加.140x140.jpg

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台