lua zlib模組安裝 使用

2021-10-07 21:45:03 字數 2412 閱讀 5970

github:

在nginx上對gzip資料進行解壓需要使用lua,借助乙個庫:lua-zlib, lua是乙個和c語言結合緊密的指令碼語言,實際上lua-zlib就是乙個c語言編寫的庫,我們現在需要做的就是將其編譯成乙個動態鏈結庫zlib.so,讓lua來引用。

注:lua-zlib這個庫可以對gzip解壓,無法壓縮成gzip,只能壓縮成deflate。

編譯該庫時需要lua環境,由於安裝了openresty(內建了lua環境),所以無需單獨安裝lua環境。編譯時通過lua_include_dir、lua_libraries指定openresty中的lua路徑即可。

1、安裝:

根據官網說明,需要確認安裝zlib、並且需要使用cmake編譯。

1.1)檢查centos上是否安裝zlib:

$ rpm -qa zlib

zlib-1.2.3-29.el6.x86_64

如果沒有,需要先安裝zlib。

1.2)安裝cmake:

首先檢查gcc、g++、make是否安裝;

gcc -v

g++ -v

make -v

如果沒有通過如下命令安裝:yum install -y gcc gcc-c++ make automake

然後,安裝cmake:

cd /usr/local

wget

tar -xvzf 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

1.3)lua-zlib安裝:

cd /usr/local

wget /archive/master.zip

unzip lua-zlib-master.zip

2)編譯:

cd /usr/local/lua-zlib-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

注:編譯時指定openresty中的lua環境

make

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

參考:

2、使用lua-zlib:

2.1)在lua指令碼中使用:

local src_dir, build_dir = ...

src_dir = src_dir or "./"

build_dir = build_dir or "/usr/local/openresty/lualib/"

package.path = src_dir .. "?.lua;" .. package.path

package.cpath = build_dir .. "?.so;" .. package.cpath

local lz = require("zlib")

local test_string = "aaaaaaaaaaaaaaaaa"

--壓縮

local deflated = lz.deflate()(test_string, "finish")

print(deflated)

--解壓

local inflated = lz.inflate()(deflated, "finish")

print(inflated)

執行

$ lua test.lua 

xkld

aaaaaaaaaaaaaaaaa

2.2)在openresty中使用lua-zlib:

}}注:在openresty中遇到的問題:

guard:12: writing a global lua variable ('zlib') which may lead to race conditions between concurrent requests, so prefer the use of 'local' variables

解答:

模組的安裝使用

第3方開源模組的安裝使用 2.直接通過pip安裝 軟體一般會被自動安裝你python安裝目錄的這個子目錄裡 pip install 模組名 i 使用import paramiko ssh paramiko.sshclient ssh.set missing host key policy param...

nginx gridfs模組的安裝使用

參考文章 專案主頁 通過nginx gridfs,可以直接用http 來訪問gridfs 中的檔案。1.安裝 安裝各種依賴包 zlib pcre,openssl 在ubuntu 下可能是以下命令 sudo apt get install zlib1g dev 貌似sudo apt get insta...

使用pip安裝MySQL python模組

在python程式中連線mysql會用到mysqldb,而mysqldb是在mysql python這個模組中。在安裝了pip後,可以使用 pip install mysql python嘗試安裝,一般會碰到 environmenterror mysql config not found這個錯誤。解...