搭建带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 /usr/local/lib/libluajit-5.1.so.2 /usr/lib/libluajit-5.1.so.2

ldconfig

二、安装ImageMagick工具。

用yum装就行了,挺方便的。

yum install -y ImageMagick

三、下载nginx以及ngx_devel_kit和nginx_lua_module模块,解压到指定路径。如果本机已装有nginx请忽略下载安装nginx。

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

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

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

tar xf nginx-1.12.0.tar.gz && tar xf v0.3.0.tar && tar xf v0.10.9rc5.tar.gz

四、编译安装nginx,如果本机已装有nginx请忽略安装,但需要重新编译,然后将老nginx执行文件备份,并把新的弄过去。

./configure --prefix=/usr/local/nginx \

--add-module=(你的解压路径)/ngx_devel_kit-0.3.0 \

--add-module=(你的解压路径)/lua-nginx-module-0.10.9rc5

(本机如果已经装了nginx的,要把你nginx曾经编译的参数也加上)

make

没有装nginx的,直接make install装了的,参考http://zhukeqiang.blog.51cto.com/8692790/1847357

进行nginx执行文件的替换。

五、验证nginx是否已经加上了两个新模块。

/usr/local/nginx/sbin/nginx -V

六、编写nginx配置文件。以下内容可供参考。

location ~ ‘/pdgpath/([0-9a-z_]+).jpg$‘ {

root   /opt/qikanjpg;

}

location ~ ‘/pdgpath/([0-9a-z_]+)\@([0-9]+)x([0-9]+)\.(gif|jpg|png|jpeg)$‘ {

root /opt/qikanjpg;

set $image_root ‘/opt/qikanjpg/pdgpath‘;

set $fileName $1;

set $width $2;

set $height $3;

set $origin $image_root/$fileName.jpg;

set $file_1 $image_root/${fileName}@${width}x${height}.jpg;

if (!-f $file_1) {

rewrite_by_lua ‘

local comd = "convert -sample "..ngx.var.width.."x"..ngx.var.height.." "..ngx.var.origin.." "..ngx.var.file_1;

os.execute(comd);

‘;

}

}

location ~ ‘/pdgpath/([0-9a-z_]+)\@([0-9]+)x([0-9]+)_f\.(gif|jpg|png|jpeg)$‘ {

root /opt/qikanjpg;

set $image_root ‘/opt/qikanjpg/pdgpath‘;

set $fileName $1;

set $width $2;

set $height $3;

set $origin $image_root/$fileName.jpg;

set $file $image_root/${fileName}@${width}x${height}_f.jpg;

if (!-f $file) {

rewrite_by_lua ‘

local command = "convert -strip -quality 80% -resize "..ngx.var.width.."x"..ngx.var.height.."^ gravity center -crop "..ngx.var.width.."x"..ngx.var.height.."+0+0 "..ngx.var.origin.." "..ngx.var.file;

os.execute(command);

‘;

}

}

七、访问图片,进行测试。

以上面的配置文件,在/opt/qikanjpg/pdgpath/放一个1.jpg。

原图http://(your_server_ip):(your_server_port)/pdgpath/1.jpg

按宽和高较小值等比缩放原图http://(your_server_ip):(your_server_port)/pdgpath/[email protected]宽x高.jpg

按宽和高较大值等比缩放原图再从中间切一次宽和高那么大一个区域http://(your_server_ip):(your_server_port)/pdgpath/[email protected]宽x高_f.jpg

更多的切割功能,请convert --help查看自行琢磨,然后添加到local command =里面就行了。

时间: 2024-08-04 19:45:44

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

自动安装带nginx_upstream_check_module模块的Nginx脚本

#!/bin/bash    useradd -s /sbin/nologin -M nginx     yum install pcre pcre-devel zlib zlib-devel openssl-devel openssl patch gcc -y mkdir /software;cd /software    wget http://nginx.org/download/nginx-1.4.6.tar.gz     wget http://labs.frickle.com/fil

生产环境上nginx 不覆盖添加lua模块

需求如下: 需要在nginx配置文件中判断请求中是否带某参数变量,nginx配置本身没有此判断功能. 网上查找资料,可以在nginx中添加lua模块,使用lua的脚本去判断.比较靠谱的文章:CentOS系统下,如何安装 nginx_lua_module 模块 以及 echo-nginx-module 模块 主要安装: lua-nginx-module-master ngx_devel_kit-master LuaJIT 三个模块,但找了一圈发现都是需要**重新编译nginx并且覆盖安装**. 再

nginx多域名ssl证书以及lua模块的编译安装

#!/bin/bash #unzip zip&tar file function  untarfile(){ for i in $( ls . |grep -v .sh) do val=$(echo $i | grep ".zip$" |wc -l) if [[ "$val"  -eq  1 ]];then dirname=$(echo $i|sed "s/.zip//") if [[ ! -d $dirname ]];then echo

Nginx编译安装Lua模块

Nginx编译安装Lua模块 一.安装Lua环境及相关库 官网网址:https://github.com/openresty/lua-nginx-module LuaJIT ` wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz make install PREFIX=/usr/local/LuaJIT export LUAJIT_LIB=/usr/local/LuaJIT/lib export LUAJIT_INC=/usr/local/Lu

nginx安装lua模块实现高并发

nginx安装lua扩展模块 1.下载安装LuaJIT-2.0.4.tar.gz wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar xzvf LuaJIT-2.0.4.tar.gz cd LuaJIT-2.0.4 make install PREFIX=/usr/local/luajit #注意环境变量! export LUAJIT_LIB=/usr/local/luajit/lib export LUAJIT_INC=/usr

[nginx] 由Lua 粘合的Nginx生态环境-- agentzh tech-club.org

[nginx] 由Lua 粘合的Nginx生态环境-- agentzh tech-club.org 演讲听录 [复制链接] kindle LT管理团队 Rank: 9Rank: 9Rank: 9 未绑定新浪微博 签到222 注册时间1970-1-1最后登录2015-6-5在线时间168 小时阅读权限200积分19025帖子119主题35精华2UID9223 LT总司令 LT元老 LT教授 串个门加好友打招呼发消息 电梯直达跳转到指定楼层 1# 发表于 2013-1-12 12:43:47 |只看

ngx lua模块源码简单解析

ngx lua模块源码简单解析分类: nginx 2014-07-11 11:45 2097人阅读 评论(0) 收藏 举报nginxlua数据结构架构目录(?)[+]对nginx lua模块的整个流程,原理简单解析.由于nginx lua模块相关配置,指令,API非常多,所以本文档只以content_by_lua指令举例说明. 读本文档最好配合读源码. 不适合对nginx和lua一点都不了解的人看.1.相关配置详细配置见 https://github.com/openresty/lua-ngin

python服务器环境搭建Flask,uwsgi和nginx

python服务器环境搭建Flask,uwsgi和nginx 环境配置 服务器配置 [部署系统环境Ubuntu] 使用python的Flask框架搭建好网页后台后,便要开始将网站部署到服务器平台了.为了部署python服务器,我选择使用uwsgi和nginx. 使用Nginx和uWSGI来运行Python应用 Nginx Nginx是高效的Web服务器和反向代理服务器,同时并发高,部署简单,内存消耗小,最重要的是,支持uWSGI的uwsgi协议,可以直接使用,一个简单的uwsgi_pass就可以

lua模块注册

Lua自带的模块并不多,好处就是Lua足够的小,毕竟它的设计目标是定位成一个嵌入式的轻量级语言的. 相关的函数index2adr static TValue *index2adr (lua_State *L, int idx) { if (idx > 0) { TValue *o = L->base + (idx - 1); api_check(L, idx <= L->ci->top - L->base); if (o >= L->top) return