1、查看 zlib在centos 中是否存在?
rpm -qa | grep zlib
显示:
zlib-devel-1.2.3-29.el6.x86_64
zlib-1.2.3-29.el6.x86_64
2、安装cmake编译器
yum install -y gcc gcc-c++ make automake
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -zxvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
./bootstrap
gmake
gmake install
检查cmake安装
cmake --version
显示
cmake version 2.8.10.2
表示安装成功
3、下载lua-zlib包,并解压
unzip lua-zlib-master.zip
cd /usr/local/software/lua-zlib-master
cmake -DLUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1
若报错:CMake Error at CMakeLists.txt:27 (find_package):
By not providing "FindLua.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Lua", but
CMake did not find one.
make
cp zlib.so /usr/local/openresty/lualib/zlib.so
4.lua脚本调用 local zip = require 'zlib'
local uncompress = zip.inflate()
local compress = zip.deflate()
local deflated, eof, bytes_in,bytes_out =compress("asdasdasdasdasdasdasdasdasd", 'finish')
print(deflated, eof, bytes_in,bytes_out)
local uss,ret,getin,getout=uncompress(deflated)print(uss,ret,getin,getout)
print(uss,ret,getin,getout)
5.zlib库不能直接压缩gzip格式,使用lua-ffi-zlib
源码路径:https://github.com/hamishforbes/lua-ffi-zlib
调用:
local ffi_zlib = require "lib.ffi-zlib"
local chunk = 16384
local count = 0
local input = function(bufsize)
local start = count > 0 and bufsize*count or 1
local data = str:sub(start, (bufsize*(count+1)-1))
if data == "" then
data = nil
end
print(data)
count = count + 1
return data
end
local output_table = {}
local output = function(data)
insert(output_table, data)
end
local ok, err = ffi_zlib.deflateGzip(input, output, chunk)
if not ok then
print(err)
end
local compress = concat(output_table,'')
ngx.header["Content-Encoding"] = "gzip"
ngx.print(compress)