软件列表:
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 文件
}
}