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..tar.gz cd GraphicsMagick-1.3. ./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..tar.gz cd LuaJIT-2.0. make && make install PREFIX=/usr/local/lj2 ln -sf LuaJIT-2.0. /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 ;
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();end;
local originalUri = string.sub(ngx.var.uri, , index-);
local area = string.sub(ngx.var.uri, index);
index = string.find(area, "([.])");
area = string.sub(area, , index-);
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();
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
Nginx+lua_Nginx+GraphicsMagick来实现实时缩略图的更多相关文章
- nginx+lua_nginx+GraphicsMagick生成实时缩略图
暂做笔记,带后续验证通过后,再补充 1.2.3 步. 一.安装 lua 首先确认是否安装 readline yum -y install readline-devel ncurses-devel 进入 ...
- Nginx 整合 Lua 实现动态生成缩略图
原文地址:Nginx 整合 Lua 实现动态生成缩略图 博客地址:http://www.extlight.com 一.前提 最近在开发一个项目,涉及到缩略图的功能,常见的生成缩略图的方案有以下几个: ...
- OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能
http://www.hopesoft.org/blog/?p=1188 http://www.imagemagick.org/download/ 2.用法 原始图片是input.jpg,尺寸:160 ...
- Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx
第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...
- 如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放
如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放 参考网站:nginx-lua-fas ...
- nginx实现本地图片生成缩略图
nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x ...
- GoAccess安装及分析nginx实时日志
GoAccess是一个基于终端的快速日志分析器.其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器(如果您希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作),终端输出是默 ...
- 两年来的core折腾之路几点总结,附上nginx启用http2拿来即用的配置
序:一年多没更新博客园的内容了,core已经发生了翻天覆地的变化,想起2014年这时候,我就开始了从当时还叫k的那套preview都不如的vnext搭建这套系统,陆陆续续它每一次升级,我也相应地折腾, ...
- Nginx-rtmp 直播媒体实时流实现
0. 前言 这段时间在搭建一个IPCamera项目服务器.视频点对点通话,客户端会查看设备端的音视频实时流.为了省流量,是通过P2P进行穿透.但是由于NAT设备的原因和IPV4的枯竭.有些设备是无法进 ...
随机推荐
- MySQL多表查询合并结果union all,内连接查询
MySQL多表查询合并结果和内连接查询 1.使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tab ...
- 自定义类实现原生SQL的GROUP_CONCAT的功能
大家都知道,原生的SQL为我们提供了分组之后查找组内数据的办法:GROUP_CONCAT方法:但是对于用Django开发的程序员来说-Django自带的ORM并没有内置这样功能的方法,而每一次遇到这样 ...
- Oracle Flashback Drop
Ensure that the prerequisites described in Prerequisites of Flashback Drop are met. The following li ...
- 二十四、python中sys模块
'''1.sys.argv:命令行参数List,第一个元素是程序本身路径''' import sys print (sys.argv)-------------------------------[' ...
- 关于问题的四个单词区别: question problem matter issue
[[ 网上讨论的 problem, question, issue, matter这些名词均含"问题"之意.problem: 指客观上存在的.难以处理或难以理解的问题.questi ...
- python-网络编程requests模块
urllib模块去请求的确比较麻烦,需要不断的encode和decode:而requests模块就比较方便了,它是基于requests模块开发的第三方模块,安装简单只需要 pip install r ...
- python 网络编程 代码版
写博客最怕写什么? 系统原理,框架内核... #!/usr/bin/env python # -*- coding:utf-8 -*- import socket sk = socket.socket ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_1_序列化和反序列化的概述
- ubuntu环境下重启mysql服务报错“No directory, logging in with HOME=-”
前提:使用系统的环境 3.13.0-24-generic mysql的版本:5.6.33 错误描述: 首先用mysqld_safe启动报错如下: root@zabbix-forFunction:~# ...
- Redux 中间件与函数式编程
为什么需要中间件 接触过 Express 的同学对"中间件"这个名词应该并不陌生.在 Express 中,中间件就是一些用于定制对特定请求的处理过程的函数.作为中间件的函数是相互独 ...