zoukankan      html  css  js  c++  java
  • nginx+lua_nginx+GraphicsMagick生成实时缩略图

    安装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需要的模块如下

    liujit             http://luajit.org  

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

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

    lua-nginx-module   https://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 zvxf ngx_cache_purge-1.6.tar.gz
    #下载nginx

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

    tar zvxf nginx-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

  • 相关阅读:
    Servlet CDI Example Analysis
    JSON续
    JSON
    Ubuntu 下安装 MySQL
    Filter介绍
    Annotation相关
    Container、Injection
    Java buildTools
    Http协议
    URI URL URN 的区别
  • 原文地址:https://www.cnblogs.com/langke93/p/2657425.html
Copyright © 2011-2022 走看看