Nginx+lua_Nginx+GraphicsMagick来实现实时缩略图

1、安装GraphicsMagick

cd /usr/local/src

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

tar -zxvf  GraphicsMagick-1.3.20.tar.gz

cd GraphicsMagick-1.3.20

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

make && make install 

2、下载luajit

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

tar -zxvf  LuaJIT-2.0.2.tar.gz

cd LuaJIT-2.0.2

 make && make install PREFIX=/usr/local/lj2

  ln -sf LuaJIT-2.0.2 /usr/local/lj2/bin/luajit 

3、下载  ngx_devel_kit 模块

wget https://github.com/simpl/ngx_devel_kit/archive/master.zip

unzip master.zip

4、下载 lua-nginx-module 模块

https://github.com/openresty/lua-nginx-module/archive/master.zip

unzip master.zip

5、下载echo

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

unzip echo-nginx-module.zip  

6、下载cache

wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz

tar -zxvf ngx_cache_purge-2.1.tar.gz

cd ngx_cache_purge-2.1

...

7、下载nginx

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

8、设置环境变量

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;

PATH=$GM_HOME/bin:$PATH;

export PATH

export GM_HOME

source /etc/profile 

9、nginx 编译安装

--prefix=/usr/local/nginx  --with-http_stub_status_module --add-module=/usr/src/simpl-ngx_devel_kit --with-ld-opt=-Wl,-rpath,/usr/local/lj2/lib --add-module=/usr/src/ngx_cache_purge-2.1 --with-http_perl_module --add-module=/usr/local/src/lua-nginx-module --add-module=/usr/local/src/echo-nginx-module-master 

如果编译有错,请把pcre扩展附加上

10、nginx配置

11、虚拟目录vhost

server {
        listen 80;
        server_name image.host.com;
        root /usr/local/nginx/html/test;
        index index.html index.htm index.php;

        location /lua1 {

            default_type ‘text/plain‘;
            content_by_lua ‘ngx.say("hello, lua")‘;
        }

         location  /image {

            set $image_root /usr/local/nginx/html/test;

            set $file "$image_root$uri";

            if (!-f $file) {
                        rewrite_by_lua ‘
                                local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)");
                                if (index == nil) then
                                   ngx.exit(404);end;
                                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 = {"160x160","400x300"};
                                local image_big = {"80x60^", "120x90^", "160x120^"};
                                function table.contains(table, element)
                                for _, value in pairs(table) do
                                        if value == element then
                                                return true
                                        end
                                end
                                return false
                        end
               # print(table.contains(image_big, area))
                if table.contains(image_big, area) then
                        local command = "/usr/local/GraphicsMagick/bin/gm convert " .. ngx.var.image_root ..  originalUri  .. " -thumbnail " .. area .. " -background gray -gravity center -extent " .. area .. " " .. ngx.var.image_root .. ngx.var.uri
                        os.execute(command);
                else
                        if table.contains(image_sizes, area) then
                        local command = "/usr/local/GraphicsMagick/bin/gm convert " .. ngx.var.image_root ..  originalUri  .. " -thumbnail "  .. area .. " " .. ngx.var.image_root .. ngx.var.uri;
                        os.execute(command);
                        else
                        ngx.exit(404);
                        end;
                end;
                ‘;
          }
          # alias /usr/local/nginx/html/test/image;

          expires 7d;
    }
}

12、赋予权限

chmod o+w /usr/local/nginx/html/test/image

13、访问

原地址:http://image.rose.com/image/2.jpg

缩略图地址:http://image.rose.com/image/2.jpg.400x300.jpg

时间: 2024-10-17 15:10:21

Nginx+lua_Nginx+GraphicsMagick来实现实时缩略图的相关文章

ftp+nginx+lua_Nginx+GraphicsMagick来实现目录浏览、实时缩略图

一.FTP服务器安装配置 1.rpm -ivh vsftpd-2.2.2-11.el6_4.1.i686.rpm 2.service vsftpd start 3.chkconfig vsftpd on 4.配置 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak vim /etc/vsftpd/vsftpd.conf 12 anonymous_enable=NO 禁止匿名访问...121 chroot_local_user=yes 禁锢

nginx+lua_nginx+GraphicsMagick缩略图+tfs获取原图+ngx_cache_purge

环境介绍 [email protected]:~# uname -aLinux ubuntu-1.230 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux[email protected]:~# cat /etc/issueUbuntu 12.04.1 LTS \n \l [email protected]:~# PS:以下操作我只在如上系统操作,仅供参考 1.安

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

暂做笔记,带后续验证通过后,再补充 1.2.3 步. 一.安装 lua 二.安装 GraphicsMagick 三.安装nginx 四.配置 nginx nginx.conf http { lua_package_path '/usr/local/openresty/nginx/lua/?.lua;;'; server { listen 80; server_name img.rhythmk.org; root /home/wwwroot/static/image; #对类似_100x100.g

nginx+lua+GraphicsMagick生成实时缩略图-CentOS7

背景 大多数的系统都会涉及缩略图的处理,比如新闻系统和电商系统,特别是电商系统,每个商品大图都会对应一系列尺寸的缩略图用于不同业务场景的使用.部分系统也会生成不同尺寸的缩略图以供PC.手机端.ipad端使用. 解决方案探索: 直接加载原图,使用css样式表来控制图片的宽高.显然不太合适,大家也尽量不要这样做. web程序在上传成功后,同时生成相应缩略图.这种做法效率较低,如果遇到批量导入的业务时严重影响性能.并且同步生成缩略图会占用一定量的存储空间,如果能按需生成岂不更好? 使用七牛.阿里云提供

使用nginx+lua+GraphicsMagick实现图片自动 裁剪

在做网站尤其是以内容为主的过程中,常常会遇到一张图片各种地方都要引用,且每个引用的地方要求的图片尺寸都不一样的.一般中大型的网站都会对这一类的图片做自动裁剪功能.本文介绍在centos6操作系统上,采用nginx.lua和GraphicsMagick工具简单实现图片的自动裁剪功能.其中nginx负责展示图片和调度lua脚本,GraphicsMagick负责对原图进行裁剪. 一.基础软件包安装groupadd wwwuseradd -g www www -s /bin/falseyum -y in

OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能

http://www.hopesoft.org/blog/?p=1188 2.用法 原始图片是input.jpg,尺寸:160×120 1)只缩小不放大 1 gm convert input.jpg -resize "500x500>" output_1.jpg 加了>,表示只有当图片的宽与高,大于给定的宽与高时,才进行“缩小”操作.生成的图片大小是:160×120,未进行操作如果不加>,会导致图片被比等放大. 2)等比缩图 (缺点:产生白边) 1 gm conver

搭建带lua模块的nginx调用ImageMagick工具实现实时剪切缩放图片功能

一.安装LuaJIT. wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar xf LuaJIT-2.0.4.tar.gz cd LuaJIT-2.0.2 make make install 设置环境变量,设置后不要切换控台,否则会失效. export LUAJIT_LIB=/usr/local/lib export LUAJIT_INC=/usr/local/include/luajit-2.0 做软链接,并加载模块 ln -s /us

nginx实现本地图片生成缩略图

nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x100xz.jpg这种格式,也是缩略图的应用:接下来在nginx中实现缩略图效果 首先查看nginx在安装时开启了哪些模块,使用 ./nginx -V 可以查看模块开启情况,更准确的说是将安装nginx时编译阶段执行的 ./configure 命令的原样输出,如果编译的时候添加了 --with-ht

缩略图相关

图片服务器上缩略图的那些事儿 最近一周又对图片服务器进行了一次升级,当然不是硬件上的. 作为一个图片类网站,我相信你会不可避免的遇到以下问题. 1 怎么搭建独立的图片服务器? 2 图片服务器的目录结构怎么设计? 3 web服务器怎么跟图片服务器打交道? 4 每张图片有很多尺寸的缩略图,上传之后要全部生成吗? 5 怎么提高程序中生成缩略图的效率,做到不影响用户体验? 6 该死的产品经理又增加了许多新的需求,多出了几种缩略图尺寸,我该怎么办? 不管你想不相信,这些问题我都遇到了,而且对于没有任何经验