1. 程式人生 > >openresty lua zlib整合安裝 讓lua支援解壓服務端壓縮過的資料

openresty lua zlib整合安裝 讓lua支援解壓服務端壓縮過的資料

來源於http://www.tuicool.com/articles/EZZZFn3的整理

openresty在編譯安裝的時候就加入了lua支援,所以無需再對nginx進行改造。但lua下對gzip進行解壓,需要藉助一個庫:lua- zlib(https://github.com/brimworks/lua-zlib) lua是一個和C語言結合緊密的指令碼語言,實際上lua-zlib就是一個C語言編寫的庫,我們現在需要做的就是將其編譯成一個動態連結庫 zlib.so,讓lua來引用。

去github下載最新的lua-zlib    https://codeload.github.com/brimworks/lua-/zip/master
下載後解壓 進到解壓目錄執行以下編譯命令 cmake -DLUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1 -DLUA_LIBRARIES=/usr/local/openresty/luajit/lib -DUSE_LUAJIT=ON -DUSE_LUA=OFF make && make install 編譯後,將其複製到/usr/local/openresty/lualib/ 目錄下,下面內容有說

以上程式碼解釋一下。首先執行cmake來生成編譯配置檔案。系統若提示沒有cmake的命令的話,請用yum安裝:yum install cmake

LUA_INCLUDE_DIR指定luajit的include檔案 夾,LUA_LIBRARIES指定luajit的lib資料夾。USE_LUAJIT=ON和USE_LUA=OFF指定我們使用的是luajit而不 是lua:

再執行make && make install即可:

這時候已經編譯好了zlib.so,拷貝到openresty的lib目錄下即可:

cp zlib.so /usr/local/openresty/lualib/zlib.so

使用方式:

local zlib = require("zlib")
local stream = zlib.inflate()
#resp.body是指壓縮的內容,r是返回解壓後的內容
local r=stream(resp.body);