Tengine+Lua+GraphicsMagick网页图片处理

软件列表:

Tengine

安装包: tengine-master.zip或者tengine.tar.gz

下载地址:https://github.com/alibaba/tengine

Lua

安装包:lua-5.3.4.tar.gz和luaJIT-2.0.5.tar.gz

下载地址:http://www.lua.org/ftp/            http://luajit.org/download.html

GraphicdMagick

安装包GraphicsMagick-1.3.30.tar.gz

下载地址: https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/


依赖包和类库,可yum安装:

yum install readline

yum install readline-devel

yum install libjpeg

yum install libjpeg-devel

yum install libpng

yum install libpng-devel

yum install giflib

yum install giflib-devel

yum install freetype

yum install freetype-devel


安装

1. 安装lua

解压文件到/usr/local/lua/lua-5.3.30

到目录下执行make linux

然后make install

验证安装成功: lua -v

2.  安装luaJIT

解压文件到/usr/local/luajit/luajit-XXX

到目录下执行make

然后make install

3. 安装tengine(使用tengine-master.zip安装包)

源文件安装,解压后有configure文件的软件安装, 在./configure --prefix=/usr/local/tengine的时候指定安装目录

解压到/software/tengine-XXXX

到目录下执行

./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

执行完之后,执行make然后是make install

验证安装成功: /usr/local/tengine/tengine.XXX/sbin/nginx

4. 安装GraphicsMagick

解压到/software/解压到/software/GraphicsMagick-XXXX

到目录下执行

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

make

make install

验证安装成功: /usr/local/GraphicsMagick/graphicsmagick.xxxx/bin/gm version


文件配置

/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);

/usr/local/Tengine/conf/nginx.conf文件配置

user root;

root /data/itrip/uploadimg;#转到访问图片所在文件的图片文件
    ###################裁剪图片配置###########################
        location / {
     root /data/itrip/uploadimg; # 站点根目录
             expires 1h;    # 缓存时间
             add_header Cache-Control max-age=3600; # 缓存时间
             access_log   /var/log/Tengine/host_access.log;
        }
#如果 url 格式如:xxxx.gif_数字x数字.gif
        location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)x(\d+)\.(jpg|jpeg|gif|png)$ {
           root /data/itrip/uploadimg;    #这里必须设置,否则根目录,即 $document_root 会是 Nginx 默认的 Nginx Root/html,在 Lua 中会得不到期望的值
           if (!-f $request_filename) { #如果文件不存在时才需要裁剪
              add_header X-Powered-By 'Lua GraphicsMagick';  #此HTTP Header无实际意义,用于测试
              add_header file-path $request_filename;  #此 HTTP Header无实际意义,用于测试
              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 文件
            }
        }






猜你喜欢

转载自blog.csdn.net/qq_42237676/article/details/80926917