Tengine+Lua+GM图片剪裁

Tengine+Lua+GM图片剪裁

环境:centOS 7
需求:同一个图片需要不同尺寸的缩略图
Tengine:nginx集成了Lua。
Tengine调用lua脚本去操作GM,真正操作图片裁剪图片的是GM。

需要的依赖
在这里插入图片描述
1.打开虚拟机,启动centOS,使用finalShell连接虚拟机进行操作。把3个tar包+1个Tengine-master文件夹拖进/opt下:[
2.查看文件:cd /opt, ls
安装依赖库:yum -y install readline
完毕,安装开发依赖库:yum -y install readline-devel

3.安装lua
解压lua:tar -zxvf lua-5.3.1.tar.gz
查看并进入lua:在opt下ls,cd lua-5.3.1,ls
装在linux系统下:make linux
安装:make install

4.安装LuaJIT
返回上一级到opt:cd …
解压LuaJIT:tar -zxvf LuaJIT的tar包名称
进入LuaJIT:cd LuaJIT-2.0.5,ls
编译:make
安装:make install
检查版本:lua -v

5.安装Tengine
返回上一级到opt:cd …
进入Tengine:cd tengine-master,ls
(由于Tengine是直接传过来的文件夹,所以没有权限,需要授权。如果是传进来的tar包自己进行解压则有权限)
给配置文件授权(所以权限:777):chmod 777 configure
查看权限:ll
使用配置文件安装:

./configure --prefix=/usr/local/Tengine --dso-path=/usr/local/Tengine/modules --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_concat_module --with-http_lua_module --http-proxy-temp-path=/var/tmp/Tengine/proxy_temp --http-fastcgi-temp-path=/var/tmp/Tengine/fastcgi_temp --http-uwsgi-temp-path=/var/tmp/Tengine/uwsgi_temp --http-scgi-temp-path=/var/tmp/Tengine/cgi_temp --http-client-body-temp-path=/var/tmp/Tengine/client_body_temp --http-log-path=/var/log/Tengine/access.log --error-log-path=/var/log/Tengine/error.log

如果报错ssl:

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl= option.

解决办法:

SSL模块需要OpenSSL库。
执行:yum -y install openssl openssl-devel

配置文件安装完毕后,编译:make
安装:make install
检查Tengine是否安装成功:cd /usr/local/,ls
在这里插入图片描述
启动:cd Tengine/ ,ls,sbin/nginx
报错:软连接错误,目录找不到:

解决办法:
指定目录位置:

ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

再报错,缺失文件夹:

解决办法:创建需要的文件夹

mkdir -p /var/tmp/Tengine

成功后,再次启动:sbin/nginx
到浏览器输入虚拟机IP测试访问(端口默认是80,所以IP后面不需要再跟端口):

6.关nginx
访问成功Tengine的前提是关闭nginx

7.装gm依赖库

yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel

8.安装gm
到opt:cd /opt/,ls
解压GraphicsMagick:tar -zxvf GraphicsMagick的tar包名称
进入GraphicsMagick:cd GraphicsMagick-1.3.18,ls
使用configure配置安装路径以及需要安装的模块:

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

编译:make
安装:make install

9.关闭Tengine防止占用进程:

10.GM安装完毕,检查版本:

/usr/local/GraphicsMagick/bin/gm version

有如下版本信息即可

11.进入到/usr/local/Tengine,新建文件夹lua

编辑文本放入lua,ImageResizer.lua文本内容如下:

local command = "/usr/local/GraphicsMagick/bin/gm convert -auto-orient -strip " … ngx.var.request_filepath … " -resize " … ngx.var.width … “x” … ngx.var.height … " +profile “*” " … ngx.var.request_filepath … “_” … ngx.var.width … “x” … ngx.var.height … “.” … ngx.var.ext;
os.execute(command);
ngx.exec(ngx.var.request_uri);

(实际文本内容是两个点)

进入lua文件夹,并给.lua文件授权:

12.Tengine配置(nginx.conf ),并编辑文件 nginx.conf

修改第一处:

修改第二处:

创建图片路径:mkdir -p /data/itrip/uploadimg
修改第三处:

修改第四处,删除一行并增加如下内容:

expires 1h; # 缓存时间
add_header Cache-Control max-age=3600; # 缓存时间
access_log /var/log/Tengine/host_access.log;


创建log日志目录:mkdir -p /var/log/Tengine

修改第五处,增加图片裁剪的相关内容:
(引用时删掉注释)

location ~* ^(.+.(jpg|jpeg|gif|png))_(\d+)x(\d+).(jpg|jpeg|gif|png)$ {
root /data/itrip/uploadimg; #这里必须设置,否则根目录,即 $document_root 会是 Nginx 默认的
if (!-f $request_filename) { #如果文件不存在时才需要裁剪
lua_code_cache on; #在编写外部 Lua脚本时,设置为off Nginx不会缓存 Lua,方便调试
set $request_filepath /data/itrip/uploadimg$1; #设置原始图片路径,如:/document_root/1.gif
set $width $3; # 设置裁剪/缩放的宽度
set $height $4; # 设置裁剪/缩放的高度
set $ext $5; # 图片文件格式后缀
content_by_lua_file /usr/local/Tengine/lua/ImageResizer.lua; #加载外部 Lua 文件
}
}


完毕,保存并退出。
13.上传图片并测试
打开uploadimg文件夹,放入图片:

启动Tengine:/usr/local/Tengine/sbin/nginx

到浏览器访问时会报403,因为刚才关闭了

直接带图访问,成功:

14.到本机hosts文件配置图片域名地址并映射

Mac找到本机hosts文件参考如下:
添加链接描述
https://jingyan.baidu.com/article/f3ad7d0f55154309c3345bdd.html
修改完毕后到浏览器输入网址带图访问即可:

15.按规则裁剪图片:

完毕后图片路径会生成对应的图:

整理了2个小时,整理得这么优秀,感觉自己很棒!!!

有下载需求的可以参考:
https://www.cnblogs.com/cn-7876/p/7757762.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值