ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Tengine+Lua+GraphicsMagick实现图片自动伸缩功能(ubuntu版)

2018-11-06 18:01:58  阅读:821  来源: 互联网

标签:


目录

 

上图先

配置环境

支持软件

安装步骤:

lua-5.3.1.tar.gz安装步骤

安装LuaJIT-2.0.4.tar.gz步骤

安装GraphicsMagick-1.3.30.tar.gz

安装tengine-master 

bug补齐

测试Tengine

nginx.conf配置

然后重启Tengline

结束!!!


上图先

配置环境

支持软件

在安装环境之前我们先,安装编译环境,按顺序安装下面的编译语句,报错不要紧!

apt-get install libreadline-dev

apt-get install libpcre3 libpcre3-dev

apt-get install openssl 

apt-get install libssl-dev

然后下载这个链接里面的文件

下载之后解压tengine-master的zip得到文件目录如上图

安装步骤:

将所有文件拖入ubuntu中

步骤很重要!!!

  1. 解压编译lua-5.3.1.tar.gz
  2. 解压编译LuaJIT-2.0.4.tar.gz
  3. 解压安装GraphicsMagick-1.3.30.tar.gz
  4. 进入tengine-master,编译安装

别急一步一步来安装!!!

lua-5.3.1.tar.gz安装步骤

tar -zxvf lua-5.3.1.tar.gz 

cd lua-5.3.1

make linux

make install

如果有编译失败,先确定是否有安装上面的编译环境语句?

安装LuaJIT-2.0.4.tar.gz步骤

回退到文件夹外部,解压安装下一个

tar -zxvf LuaJIT-2.0.4.tar.gz 

cd LuaJIT-2.0.4

make

make install

安装GraphicsMagick-1.3.30.tar.gz

安装前需安装该ps软件的环境支持,不然会有很多图片不支持

sudo apt-get install libjpeg8

sudo apt-get install libjpeg-dev
 
sudo apt-get install libpng12-0

sudo apt-get install libpng12-dev
 
sudo apt-get install giflib-tools
 
sudo apt-get install libfreetype6

一定要执行完上面的语句,才开始解压GM

tar -zxvf GraphicsMagick-1.3.30.tar.gz 

cd GraphicsMagick-1.3.30

chmod +x ./configure

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

make

make install

安装tengine-master 

cd tengine-master

chmod +x ./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

make

make install

bug补齐

安装完就已经可以了,但是会报一些bug,那么我们就先把这些bug解决了在启动

第一个bug:

执行

mkdir -p /usr/local/Tengine/lua

首先移动到方才复制到虚拟机中的 ImageResizer.lua 所在的文件夹 打开终端,获取root权限,执行

mv ImageResizer.lua /usr/local/Tengine/lua

这样就把该文件移到lua下了

然后给它设置权限:

chmod 777 /usr/local/Tengine/lua/ImageResizer.lua

第二个bug:

执行

whereis libluajit-5.1.so.2

如果出现下面的结果,说明可以继续下一步

制作软链,执行后没有提示信息,如果想看到效果可以到lib64文件夹下看看是否存在libluajit-5.1.so.2文件

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

第三个bug

mkdir -p /var/tmp/Tengine/client_body_temp

到此,bug执行完毕!!!

测试Tengine

pkill -9 nginx

/usr/local/Tengine/sbin/nginx

然后获取ip就可以看到首页

能跑出来说明就没问题了,接下来配置nginx.conf的配置

nginx.conf配置

cd /usr/local/Tengine/conf

chmod a+rwx nginx.conf

执行完以后,就直接点开该nginx.conf直接全选,然后粘贴下面的配置,保存,还有。。。 

 
#user  nobody;
#剪切工具必须要root用户才有权限使用
user  root;
worker_processes  1;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    #gzip  on;
 
    server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
	#这里我是拦截/pic即网络访问路径是 localhost/pic
	location /pic {
          #也可以使用alias,alias就不会将拦截路径自动添加进来。
	  #root比较鬼畜,它会将你上面配置的拦截自动加到路径内,即 localhost/demo/pic  demo文件是我直接放在nginx下的详细路径是/usr/local/Tengine/demo/pic/
	  root   demo/;
	  #我的首页放在/usr/local/Tengine/demo/pic/index.html,测试的图片与其同级!
	  index  index.html;
          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)$ {
	#这里必须设置,找不到要剪切文件的路径,如:图片所在路径是/usr/local/Tengine/demo/pic/1.jpg 必须要先指定根目录在哪,否则你在var/log/nginx/error文件里面看报错的路径来调了
           root demo;
           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 /usr/local/Tengine/demo$1;  #设置被剪切的图片文件地址(到图片的文件夹)
              set $width $3;     # 设置裁剪/缩放的宽度
              set $height $4;    # 设置裁剪/缩放的高度
              set $ext $5;      # 图片文件格式后缀
              content_by_lua_file /usr/local/Tengine/lua/ImageResizer.lua;  #加载外部 Lua 文件,就是上面配置的ImageResizer.lua,作用是执行图片剪切工具的脚本
            }
        }
 
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
    }
 
 
 
}

然后继续执行:

cd /usr/local/Tengine

mkdir demo

cd demo

mkdir pic

chmod a+rwx pic

然后执行完毕,在pic文件夹

创建一个index.html 并且拖进一张图片以作测试

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>img</title>
</head>
<body>
	<h1>SUCCESS!!!!!</h1>

</body>
</html>

然后重启Tengline

pkill -9 nginx

/usr/local/Tengine/sbin/nginx

在浏览器根据自己的ip输入

自己IP+/ipc/

http://192.168.1.5/pic/

因该能看到

输入

http://192.168.1.5/pic/1.jpg_100x100.jpg

就能看到缩略图了

结束!!!

标签:
来源: https://blog.csdn.net/jinqianwang/article/details/83789727

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有