使用Tengine+Lua+GM实现图片自动裁剪
1.把需要的tar包放进虚拟机
(1)GraphicsMagick-1.3.18.tar.gz
(2)lua-5.3.1.tar.gz
(3)LuaJIT-2.0.5.tar.gz
2.解压并且安装依赖
(1)安装依赖
yum -y install readline
yum -y install readline-devel
(2)安装Lua
make linux
make install
(3)安装LuaJIT
make
make install
可以在LuajIT目录下检查lua版本 : lua -v
3.安装Tengine
(1)使用configure配置安装路径
首先权限:chmod 777 configure
使用configure配置安装路径(执行以下命令)
./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
(2)启动: sbin/nginx
报错:sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory 找不到 libluajit-5.1.so.2
执行软连接:
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
再次启动后浏览器访问:IP地址
4.GraphicsMagick安装依赖
yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel
进入GM目录,使用configure配置安装路径以及需要安装的模块
./configure --prefix=/usr/local/GraphicsMagick --enable-shared
5.安装GM
先解压 然后去GM的目录下make&make install
6.配置
(1)找到Lua脚本文件:/usr/local/Tengine/lua/ImageResizer.lua
(2)创建目录:mkdir -p /usr/local/Tengine/lua/
(3)创建文件:vi /usr/local/Tengine/lua/ImageResizer.lua
(4)文件中添加一下信息
location ~* ^(.+.(jpg|jpeg|gif|png))_(\d+)x(\d+).(jpg|jpeg|gif|png)$ {
root /data/itrip/uploadimg;
if (!-f $request_filename) {
lua_code_cache on;
set $request_filepath /data/itrip/uploadimg$1;
set $width $3;
set $height $4;
set $ext $5;
content_by_lua_file /usr/local/Tengine/lua/ImageResizer.lua;
}
}
(5)授予权限,可执行:chmod 777 /usr/local/Tengine/lua/ImageResizer.lua
(6)编辑 nginx.conf
1.把user改为root用户(把前面的#号去掉):
user root;
2.修改servier_name 给定一个名字
server_name itrip.images.project;
root /data/itrip/uploadimg;
3.创建图片路径并在配置文件中添加
mkdir -p /data/itrip/uploadimg
4.location配置(把原来的那两行删掉)
root /data/itrip/uploadimg;
expires 1h;
add_header Cache-Control max-age=3600;
access_log /var/log/Tengine/host_access.log;
5.图片裁剪过滤:(在location配置下面)
location ~* ^(.+.(jpg|jpeg|gif|png))_(\d+)x(\d+).(jpg|jpeg|gif|png)$ {
root /data/itrip/uploadimg;
if (!-f $request_filename) {
lua_code_cache on;
set $request_filepath /data/itrip/uploadimg$1;
set $width $3;
set $height $4;
set $ext $5;
content_by_lua_file /usr/local/Tengine/lua/ImageResizer.lua;
}
}
7.重新启动Tengine
sbin/nginx -s reload