Tengine下载
Tengine tengine-master.zip 下载 因为上面下载安装时报错换这个
luajit下载
GraphicsMagick下载
点进去后不用动大概1分左右就会跳出链接
首先上传下面内容到/opt下
软件名称 | 安装包 | 下载地址 |
---|---|---|
Tengine | tengine-master.zip | https://github.com/alibaba/tengine |
Lua | lua-5.3.1.tar.gz LuaJIT-2.0.4.tar.gz(Lua依赖包) | http://www.lua.org/ftp/ http://luajit.org/download.html |
GraphicsMagick | GraphicsMagick-1.3.18.tar.gz | https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/ |
# 使用阿里下载源 这个下载就很快
[root@desktop-dm818pf ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@desktop-dm818pf ~]# yum makecache (可能需要执行两次)
(rm -rf /var/run/yum.pid)
# 安装依赖包和类库(这个是支持各种图片的类库的依赖)
[root@desktop-dm818pf ~]# yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel
[root@desktop-dm818pf ~]# yum install -y readline readline-devel gcc gcc-c++ pcre-devel openssl-devel zlib-devel
[root@desktop-dm818pf ~]# tar zxvf lua-5.3.1.tar.gz
[root@desktop-dm818pf ~]# cd lua-5.3.1
[root@desktop-dm818pf lua-5.3.1]# make linux
[root@desktop-dm818pf lua-5.3.1]# make install
[root@desktop-dm818pf ~]# tar zxvf LuaJIT-2.0.4.tar.gz
[root@desktop-dm818pf ~]# cd ~/LuaJIT-2.0.4/
[root@desktop-dm818pf LuaJIT-2.0.4]# make
[root@desktop-dm818pf LuaJIT-2.0.4]# make install
[root@bogon LuaJIT-2.0.4]# lua -v
Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio
进入Tengine源码目录,使用configure配置安装路径以及需要安装的模块
[root@desktop-dm818pf ~]# unzip tengine-master.zip
[root@desktop-dm818pf ~]# cd tengine-master/[root@desktop-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 (源码编译安装)
[root@desktop-dm818pf tengine-master]# make && make install
配置tengine环境变量
cd /usr/local/Tengine/sbin
pwd
[root@desktop-dm818pf tengine-master]# vim /etc/profile
# 增加tengine的环境变量
export tengine_home=/usr/local/Tengine
export PATH=$PATH:$tengine_home/sbin
[root@desktop-dm818pf tengine-master]# source /etc/profile
echo $tengine_home
启动tengine
[root@desktop-dm818pf ~]# nginx
# /lib64/是快捷方式
[root@desktop-dm818pf ~]# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/
[root@desktop-dm818pf ~]# nginx[root@desktop-dm818pf ~]# mkdir -p /var/tmp/Tengine/client_body_temp
[root@desktop-dm818pf ~]# nginx
[root@desktop-dm818pf ~]# ps -ef | grep nginx[root@desktop-dm818pf ~]# curl http://localhost
在数组机查看 关闭防火墙
root@desktop-dm818pf ~]# systemctl stop firewalld
然后打开浏览器输入虚拟机ip地址 出现welcome to tengine成功
安装依赖包和类库
下面这步前面安装过了 这里不再执行下面内容
[root@desktop-dm818pf ~]# yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel[root@desktop-dm818pf ~]# cd /opt
[root@desktop-dm818pf ~]# tar zxvf GraphicsMagick-1.3.18.tar.gz
[root@desktop-dm818pf ~]# cd GraphicsMagick-1.3.18/
[root@desktop-dm818pf GraphicsMagick-1.3.18]# ./configure --prefix=/usr/local/GraphicsMagick --enable-shared
[root@desktop-dm818pf GraphicsMagick-1.3.18]# make && make install
下面能出现版本信息成功
[root@desktop-dm818pf GraphicsMagick-1.3.18]# /usr/local/GraphicsMagick/bin/gm version
文件名:ImageResizer.lua
位置:/usr/local/Tengine/lua/ImageResizer.lua
权限:可执行
cd /usr/local/Tengine/
mkdir /usr/local/Tengine/lua
vim /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);
文件名: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-age=3600; # 缓存时间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
[root@desktop-dm818pf ~]# yum install tree
[root@desktop-dm818pf ~]# tree /data/itrip/uploadimg
/data/itrip/uploadimg
├── 111.jpg
在浏览器地址栏输入一下内容:
http://localhost/111.jpg_800x480.jpg
自动在站点目录下生成以111.jpg为原图的800x400的缩略图。
[root@desktop-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-devel
yum install -y libjpeg libjpeg-devel
yum install -y libpng libpng-devel
yum install -y giflib giflib-devel
yum install -y freetype freetype-devel
#安装Lua 源码编译安装
yum install -y readline readline-devel gcc gcc-c++ pcre-devel openssl-devel zlib-devel
yum install -y readline readline-devel
yum install -y openssl-devel gcc-c++
# 如果你安装的时候半天安不好 ctrl+c后 记得 yum -y updata (当然这里不会出现)
cd /opt/tengine/
tar zxvf lua-5.4.0.tar.gz
tar zxvf LuaJIT-2.0.5.tar.gz
tar zxvf GraphicsMagick-1.3.35.tar.gz
cd lua-5.4.0/
make linux
make install
#安装LuaJIT 源码编译安装
cd ../LuaJIT-2.0.5/
make
make install
lua -v
# 安装Tengine 源码编译安装
#进入Tengine源码目录,使用configure配置安装路径需要安装的模块
#下面这一块内容不做尝试 说下情况 然后从下面 tengine-master.zip开始
cd ..
tar zxvf tengine-2.3.2.tar.gz
cd 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
[root@desktop-dm818pf tengine-master]# make && make install
#配置tengine环境变量
[root@desktop-dm818pf tengine-master]# vim /etc/profile
# 增加tengine的环境变量
export tengine_home=/usr/local/Tengine
export PATH=$PATH:$tengine_home/sbin
[root@desktop-dm818pf tengine-master]# source /etc/profile
#启动tengine
[root@desktop-dm818pf ~]# nginx
#
[root@desktop-dm818pf ~]# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/
[root@desktop-dm818pf ~]# nginx[root@desktop-dm818pf ~]# mkdir -p /var/tmp/Tengine/client_body_temp
[root@desktop-dm818pf ~]# nginx[root@desktop-dm818pf ~]# curl http://localhost
中间的意外建议参考
地址一
地址二
24 yum install readline
25 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 && make install31 cd LuaJIT-2.0.5/32 make && make install33 cd ..这里同理下载好上传到/opt wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz34 tar -xzf tengine-2.2.0.tar.gz35 cd tengine-2.2.036 ./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//这里错问题不大37 make && make install38 ll39 cd ~40 lua -v41 42 cd /usr/local/tengine/43 ll44 sbin/nginx45 ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.246 sbin/nginx47 mkdir -p /var/tmp/Tengine/client_body_temp48 sbin/nginx49 再次启动后浏览器访问你的ip 页面出现Welcome Tengine则成功50 yum -y install libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel51wget https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.26/GraphicsMagick-1.3.26.tar.gz/download 这里面就不用这个了 用前面我们下载的就好了56 tar -xzf GraphicsMagick-1.3.35.tar.gz57 cd GraphicsMagick-1.3.35/58 cd /usr/local/GraphicsMagick/59 ./configure --prefix=/usr/local/GraphicsMagick --enable-shared60 make && make install//验证是否成功 有yes 有no61 cd /usr/local/GraphicsMagick /bin/62 ./gm version修改tengine配置文件64 cd /usr/local/tengine/conf/65 cp nginx.conf nginx.conf.bak66 cd nginx.conf67 vim nginx.conf
修改内容
user root;(大概第二行 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/去测试吧 成功