当前位置 : 主页 > 网络编程 > 其它编程 >

安装Tengine+Lua+GM实现图片自动裁剪缩放

来源:互联网 收集:自由互联 发布时间:2023-07-02
标题使用TengineLuaGM实现图片自动裁剪缩放需求背景3个东西的下载地址lua下载二、安装与配置亲测可用1、软件列表准备软件按 标题 使用TengineLuaGM实现图片自动裁剪缩放 需求背景 3个东西
标题使用TengineLuaGM实现图片自动裁剪缩放需求背景3个东西的下载地址lua下载二、安装与配置亲测可用1、软件列表准备软件按

标题

    • 使用TengineLuaGM实现图片自动裁剪缩放
      • 需求背景
  • 3个东西的下载地址
  • lua下载
      • 二、安装与配置亲测可用
        • 1、软件列表准备软件 按上面下载软件即可
        • 2、依赖包和类库
        • 3、安装Lua
          • 1安装依赖
          • 2安装Luan源码编译安装
          • 3安装LuaJIT源码编译安装
          • 4查看Lua版本
        • 4、安装Tengine
        • 5、安装GraphicsMagick
        • 6、配置Lua脚本文件
        • 7、Tengine配置
      • 三、功能测试
  • 自己安装过程应该可以不建议试 用后面的
  • 最终成功版

使用TengineLuaGM实现图片自动裁剪缩放

需求背景

在这里插入图片描述 在这里插入图片描述

3个东西的下载地址

在这里插入图片描述

Tengine下载 在这里插入图片描述 在这里插入图片描述 Tengine tengine-master.zip 下载 因为上面下载安装时报错换这个

lua下载

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 luajit下载 在这里插入图片描述 在这里插入图片描述

GraphicsMagick下载 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 点进去后不用动大概1分左右就会跳出链接 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

二、安装与配置亲测可用

首先上传下面内容到/opt下 在这里插入图片描述

1、软件列表准备软件 按上面下载软件即可

软件名称安装包下载地址Tenginetengine-master.ziphttps://github.com/alibaba/tengineLualua-5.3.1.tar.gz LuaJIT-2.0.4.tar.gzLua依赖包http://www.lua.org/ftp/ http://luajit.org/download.htmlGraphicsMagickGraphicsMagick-1.3.18.tar.gzhttps://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/

2、依赖包和类库

# 使用阿里下载源 这个下载就很快[rootdesktop-dm818pf ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[rootdesktop-dm818pf ~]# yum makecache (可能需要执行两次)rm -rf /var/run/yum.pid# 安装依赖包和类库这个是支持各种图片的类库的依赖[rootdesktop-dm818pf ~]# yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel

3、安装Lua

1安装依赖

[rootdesktop-dm818pf ~]# yum install -y readline readline-devel gcc gcc-c pcre-devel openssl-devel zlib-devel

2安装Luan源码编译安装

[rootdesktop-dm818pf ~]# tar zxvf lua-5.3.1.tar.gz[rootdesktop-dm818pf ~]# cd lua-5.3.1[rootdesktop-dm818pf lua-5.3.1]# make linux[rootdesktop-dm818pf lua-5.3.1]# make install

3安装LuaJIT源码编译安装

[rootdesktop-dm818pf ~]# tar zxvf LuaJIT-2.0.4.tar.gz[rootdesktop-dm818pf ~]# cd ~/LuaJIT-2.0.4/[rootdesktop-dm818pf LuaJIT-2.0.4]# make[rootdesktop-dm818pf LuaJIT-2.0.4]# make install

4查看Lua版本

[rootbogon LuaJIT-2.0.4]# lua -vLua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio

4、安装Tengine

进入Tengine源码目录使用configure配置安装路径以及需要安装的模块

[rootdesktop-dm818pf ~]# unzip tengine-master.zip[rootdesktop-dm818pf ~]# cd tengine-master/[rootdesktop-dm818pf tengine-master]# ./configure --prefix/usr/local/Tengine --dso-path/usr/local/Tengine/modules --with-ipv6 --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

安装Tengine 源码编译安装

[rootdesktop-dm818pf tengine-master]# make desktop-dm818pf tengine-master]# vim /etc/profile# 增加tengine的环境变量export tengine_home/usr/local/Tengineexport PATH$PATH:$tengine_home/sbin[rootdesktop-dm818pf tengine-master]# source /etc/profileecho $tengine_home

启动tengine

[rootdesktop-dm818pf ~]# nginx# /lib64/是快捷方式 [rootdesktop-dm818pf ~]# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/[rootdesktop-dm818pf ~]# nginx[rootdesktop-dm818pf ~]# mkdir -p /var/tmp/Tengine/client_body_temp[rootdesktop-dm818pf ~]# nginx[rootdesktop-dm818pf ~]# ps -ef | grep nginx[rootdesktop-dm818pf ~]# curl http://localhost在数组机查看 关闭防火墙rootdesktop-dm818pf ~]# systemctl stop firewalld然后打开浏览器输入虚拟机ip地址 出现welcome to tengine成功

在这里插入图片描述

5、安装GraphicsMagick

安装依赖包和类库

下面这步前面安装过了 这里不再执行下面内容[rootdesktop-dm818pf ~]# yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel[rootdesktop-dm818pf ~]# cd /opt[rootdesktop-dm818pf ~]# tar zxvf GraphicsMagick-1.3.18.tar.gz[rootdesktop-dm818pf ~]# cd GraphicsMagick-1.3.18/[rootdesktop-dm818pf GraphicsMagick-1.3.18]# ./configure --prefix/usr/local/GraphicsMagick --enable-shared[rootdesktop-dm818pf GraphicsMagick-1.3.18]# make desktop-dm818pf GraphicsMagick-1.3.18]# /usr/local/GraphicsMagick/bin/gm version

6、配置Lua脚本文件

文件名ImageResizer.lua

位置/usr/local/Tengine/lua/ImageResizer.lua

权限可执行

cd /usr/local/Tengine/mkdir /usr/local/Tengine/luavim /usr/local/Tengine/lua/ImageResizer.lua 输入下面的文件内容ll /usr/local/Tengine/lua/ImageResizer.lua 列举查看是没有执行权限的 设置执行权限chmod 777/usr/local/Tengine/lua/ImageResizer.lua

文件内容

local command "/usr/local/GraphicsMagick/bin/gm convert " .. 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);

7、Tengine配置

文件名nginx.conf

位置/usr/local/Tengine/conf/nginx.conf 查看里面内容 可不执行这一块只是普及怎么把注释给去掉查看 再来编辑也比较方便 但是没必要 cat /usr/local/Tengine/conf/nginx.conf cat /usr/local/Tengine/conf/nginx.conf | grep -v “#” 现在要修改文件 保险起见你应该弄个副本用cp命里 这里我就不采用了 我现在的位置是 /usr/local/Tengine/ mv ./conf/nginx.conf ./conf/nginx.conf.bak cat ./conf/nginx.conf.bak | grep -v “#” >/usr/local/Tengine/conf/nginx.conf cat ./conf/nginx.conf 这次里面没有任何注释内容 vim ./conf/nginx.conf 文件内容 就是在首行添加 user root; server块直接copy下面的跟文件里的server块并行即可 因为可以有多个server块 注释应该没影响不排除你的好使 必要时去掉注释

user root;# 新增一个server块server {listen 80;server_name img.itrip.project.bdqn.cn;root /data/itrip/uploadimg;location / {root /data/itrip/uploadimg; # 站点根目录expires 1h; # 缓存时间add_header Cache-Control max-age3600; # 缓存时间access_log /var/log/Tengine/host_access.log;}#如果 url 格式如xxxx.gif_数字x数字.giflocation ~* ^(.\.(jpg|jpeg|gif|png))_(\d)x(\d)\.(jpg|jpeg|gif|png)$ {# 这里必须设置否则根目录# 即 $document_root 会是 Nginx 默认的 Nginx Root/html在 Lua 中会得不到期望的值root /data/itrip/uploadimg;# 如果文件不存在时才需要裁剪if (!-f $request_filename) { # 此HTTP Header无实际意义用于测试add_header X-Powered-By Lua GraphicsMagick; # 此 HTTP Header无实际意义用于测试add_header file-path $request_filename; # 在编写外部 Lua脚本时设置为off Nginx不会缓存 Lua方便调试lua_code_cache on; # 设置原始图片路径如/document_root/1.gifset $request_filepath /data/itrip/uploadimg$1; set $width $3; # 设置裁剪/缩放的宽度set $height $4; # 设置裁剪/缩放的高度set $ext $5; # 图片文件格式后缀# 加载外部 Lua 文件content_by_lua_file /usr/local/Tengine/lua/ImageResizer.lua; }}}

创建站点目录配置文件自己写的路径 也是测试图片的上传位置

mkdir -p /data/itrip/uploadimg

重启nginx:

nginx -s reload

三、功能测试

不上传403 上传图片到站点目录/data/itrip/uploadimg

[rootdesktop-dm818pf ~]# yum install tree[rootdesktop-dm818pf ~]# tree /data/itrip/uploadimg/data/itrip/uploadimg├── 111.jpg

在浏览器地址栏输入一下内容

http://localhost/111.jpg_800x480.jpg

自动在站点目录下生成以111.jpg为原图的800x400的缩略图。

[rootdesktop-dm818pf ~]# tree /data/itrip/uploadimg/data/itrip/uploadimg├── 111.jpg└── 111.jpg_800x480.jpg

在这里插入图片描述

自己安装过程应该可以不建议试 用后面的

可参考教程1 可参考教程2 1.准备好最开始需要下载的4个工具 在opt下创建个包叫tengine 在该目录下点击上传一次选中4个要上传的成功如下 在这里插入图片描述

在这里插入图片描述

2.打开虚拟机连网状态执行下面命令

# 安装依赖包和类库 执行第一条即可一次完工省事yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-develyum install -y libjpeg libjpeg-develyum install -y libpng libpng-develyum install -y giflib giflib-develyum install -y freetype freetype-devel#安装Lua 源码编译安装yum install -y readline readline-devel gcc gcc-c pcre-devel openssl-devel zlib-develyum install -y readline readline-develyum install -y openssl-devel gcc-c# 如果你安装的时候半天安不好 ctrlc后 记得 yum -y updata (当然这里不会出现)cd /opt/tengine/tar zxvf lua-5.4.0.tar.gztar zxvf LuaJIT-2.0.5.tar.gztar zxvf GraphicsMagick-1.3.35.tar.gzcd lua-5.4.0/make linux make install#安装LuaJIT 源码编译安装cd ../LuaJIT-2.0.5/makemake installlua -v# 安装Tengine 源码编译安装#进入Tengine源码目录,使用configure配置安装路径需要安装的模块#下面这一块内容不做尝试 说下情况 然后从下面 tengine-master.zip开始cd ..tar zxvf tengine-2.3.2.tar.gzcd tengine-2.3.2/# 下面运行这一大块应该会出错./configure --prefix/usr/local/Tengine --dso-path/usr/local/Tengine/modules --with-ipv6 --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#因此上传tengine-master.zip上面写了下载地址来到/opt/tengine/解压此zipunzip tengine-master.zipcd tengine-master/./configure --prefix/usr/local/Tengine --dso-path/usr/local/Tengine/modules --with-ipv6 --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# 我都弄到了前面命令里 这里应该不会出现下面的错误 如果只是日志的错误问题不大 执行下面命令就好了#上面执行如果权限不够的话 chmod 777 ./configure 如果没有PCRE就 yum install pcre-devel再次执行上面#如果没有OpenSSL就 yum install openssl yum install openssl-devel [rootdesktop-dm818pf tengine-master]# make desktop-dm818pf tengine-master]# vim /etc/profile# 增加tengine的环境变量export tengine_home/usr/local/Tengineexport PATH$PATH:$tengine_home/sbin[rootdesktop-dm818pf tengine-master]# source /etc/profile#启动tengine[rootdesktop-dm818pf ~]# nginx# [rootdesktop-dm818pf ~]# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/[rootdesktop-dm818pf ~]# nginx[rootdesktop-dm818pf ~]# mkdir -p /var/tmp/Tengine/client_body_temp[rootdesktop-dm818pf ~]# nginx[rootdesktop-dm818pf ~]# curl http://localhost

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

最终成功版

中间的意外建议参考 地址一 地址二

24 yum install readline25 yum install readline-devel下面凡是虚拟机从网上下载的 当然了我网不行下载不下来 不建议这种方式 如果你可以下载下来记得执行下面这个命令yum makecache 是 将服务器上的软件包信bai息 现在本地缓存,以提高 搜索 安装软件的速度26 wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz不要再虚拟机执行 下不下来的复制链接到迅雷下载上传到虚拟机/opt下27 cd /opt28 tar -xzf LuaJIT-2.0.5.tar.gz29 ll30 make /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//这里错问题不大37 make /usr/local/GraphicsMagick --enable-shared60 make 大概第二行 1.把user改为root用户把这一块弄成下面即可location / {root /home/hadoop/images;index index.html index.htm;}location /lua/ {default_type text/html;content_by_lua ngx.say("

hello, ttlsa lua

");}location ~* ^(.\.(jpg|jpeg|gif|png))_(\d)x(\d)\.(jpg|jpeg|gif|png)$ {root /home/hadoop/images; if (!-f $request_filename) { lua_code_cache off; set $request_filepath /home/hadoop/images/$1; set $width $3; set $height $4; set $ext $5; content_by_lua_file /usr/local/tengine/lua/ImageResizer.lua;}} 70 cd /usr/local/tengine/71 mkdir lua72 cd lua/73 vi ImageResizer.lualocal command "/usr/local/GraphicsMagick/bin/gm convert " .. 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);# cd /usr/local/tengine/sbin/# ./nginx 因为前面测试的时候我们启动过了 再次启动必然报错# ./nginx -t #查看编译是否成功# ./nginx -s reload #重启nginx上传几张图片到opt下cd /opt82 mkdir /home/hadoop/images 这个我们配置的地址83 mkdir -p /home/hadoop/images84 mv 1.jpg 2.jpg 3.jpg /home/hadoop/images/去测试吧 成功

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

【文章出处:盐城网页设计公司 http://www.1234xp.com/yancheng.html 提供,感恩】
上一篇:《庐山》翻译原文赏析诗人明高启
下一篇:没有了
网友评论