热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

安装graphimagicwgethttp://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.16/GraphicsMagick-1.3.16.tar.gz/download./configure--prefix/usr/local/G

安装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;

 

        }


 

 



推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • Imdevelopinganappwhichneedstogetmusicfilebystreamingforplayinglive.我正在开发一个应用程序,需要通过流 ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • buildah是用来修改和改造镜像的工具,和podman同源,很多参数相似!只是podman用来纯粹运行容器,一个纯粹建造容器!1.获取容器并赋名buildah--nametest ... [详细]
  • 打开文件管理器_【教程】模组管理器3.1食用指南
    文编:byakko最近有部分小伙伴反应还不会使用unity模组管理器,现在我就给大家讲一下unity模组管理器——从下载到使用。完整视频版以下是无WiF ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
author-avatar
会长大的幸福7007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有