国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

這篇具有很好參考價值的文章主要介紹了【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、前言

二、Lua基礎(chǔ)語法??

hello world

保留關(guān)鍵字

注釋

變量

字符串

空值

布爾類型

作用域

控制語句

if-else

for循環(huán)

函數(shù)

賦值

返回值?

Table

數(shù)組

遍歷

成員函數(shù)

三、openresty的安裝

(一)預(yù)編譯安裝

(二)源碼編譯安裝

(三)服務(wù)命令

(四)測試lua腳本以文件的形式

代碼熱部署

獲取nginx請求頭信息

獲取post請求參數(shù)

Http協(xié)議版本

請求方法

原始的請求頭內(nèi)容

body內(nèi)容體

(五)Nginx緩存

Nginx全局內(nèi)存緩存

lua-resty-lrucache

lua-resty-redis訪問redis

lua-resty-mysql


一、前言

Lua 是由巴西里約熱內(nèi)盧天主教大學(xué)(Pontifical Catholic University of Rio de Janeiro)里的一個研究小組于1993年開發(fā)的一種輕量、小巧的腳本語言,用標(biāo)準(zhǔn) C 語言編寫,其設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。

官網(wǎng):The Programming Language Lua

學(xué)習(xí)lua語言之前需要先安裝lua版本,并在ideal下載插件,具體的可以看下面這篇文章

Lua環(huán)境安裝+Idea配置_idea配置lua_xiaowu714的博客-CSDN博客https://blog.csdn.net/xiaowu714/article/details/127763087?spm=1001.2014.3001.5506

二、Lua基礎(chǔ)語法??

hello world

在ideal新建lua項目并創(chuàng)建lua文件后輸入以下內(nèi)容

local function main()
    print("Hello world!")
end

main()

運(yùn)行結(jié)果

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

保留關(guān)鍵字

and break do else elseif end false for function 
if in local nil not or repeat return then true 
until while

注釋

-- 兩個減號是行注釋

--[[

 這是塊注釋

 這是塊注釋.

 --]]

變量

數(shù)字類型

Lua的數(shù)字只有double型,64bits

你可以以如下的方式表示數(shù)字

num = 1024?

num = 3.0?

num = 3.1416

?num = 314.16e-2

?num = 0.31416E1

?num = 0xff?

num = 0x56

字符串

可以用單引號,也可以用雙引號

也可以使用轉(zhuǎn)義字符‘\n’ (換行), ‘\r’ (回車), ‘\t’ (橫向制表), ‘\v’ (縱向制表), ‘\’ (反斜杠), ‘\”‘ (雙引號), 以及 ‘\” (單引號)等等

下面的四種方式定義了完全相同的字符串(其中的兩個中括號可以用于定義有換行的字符串)

a = 'alo\n123"'

a = "alo\n123\""

a = '\97lo\10\04923"'

a = [[alo

123"]]

空值

C語言中的NULL在Lua中是nil,比如你訪問一個沒有聲明過的變量,就是nil

布爾類型

只有nil和false是 false

數(shù)字0,‘’空字符串(’\0’)都是true

作用域

lua中的變量如果沒有特殊說明,全是全局變量,那怕是語句塊或是函數(shù)里。

變量前加local關(guān)鍵字的是局部變量。

控制語句

while循環(huán)

local function main()

    local i = 0
    local max = 10
    while i <= max do
        print(i)
        i = i + 1
    end
end

main()

運(yùn)行結(jié)果

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

if-else

local function main()

    local age = 30

    local sex = 'Malee'

    if age <= 40 and sex == "Male" then
        print("男人四十一枝花")
    elseif age > 40 and sex ~= "Female" then -- ~=  等于 !=
        io.write("old man")
    elseif age < 20 then
        print("too young too simple")
    else
        print("Your age is "..age)   --Lua中字符串的連接用..

    end

end

main()

for循環(huán)

local function main()

    for i = 10, 1 , -1 do   -- i<=1, i--
        print(i)
    end
    for i = 1, 10 , 1 do    -- i<=10, i++
        print(i)
    end

end

main()

函數(shù)

local function main()

    function myPower(x,y) -- 定義函數(shù)

        return      y+x

    end

    power2 = myPower(2,3)  -- 調(diào)用

    print(power2)
end

main()
local function main()

    function newCounter()

        local i = 0
        return function()     -- anonymous function(匿名函數(shù))

            i = i + 1

            return i

        end
    end



    c1 = newCounter()

    print(c1())  --> 1

    print(c1())  --> 2

    print(c1())
end

main()

賦值

local function main()
    name, age,bGay = "yiming", 37, false, "yimingl@hotmail.com" -- 多出來的舍棄

    print(name,age,bGay)
end

main()

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

返回值?

local function main()
    function isMyGirl(name)
        return name == 'xiao6' , name
    end

    local bol,name = isMyGirl('xiao6')

    print(name,bol)
end

main()

?【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

Table

KV形式,類似map

local function main()
    dog = {name='111',age=18,height=165.5}

    dog.age=35

    print(dog.name,dog.age,dog.height)

    print(dog)

end

main()

數(shù)組

local function main()
    local function main()
        arr = {"string", 100, "dog",function() print("wangwang!") return 1 end}

        print(arr[4]())
    end
    main()
end

main()

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

遍歷

local function main()
    arr = {"string", 100, "dog",function() print("wangwang!") return 1 end}

    for k, v in pairs(arr) do

        print(k, v)
    end
end

main()

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

成員函數(shù)

local function main()

person = {name='旺財',age = 18}

  function  person.eat(food)

    print(person.name .." eating "..food)

  end
person.eat("骨頭")
end
main()

三、openresty的安裝

(一)預(yù)編譯安裝

以CentOS舉例 其他系統(tǒng)參照:OpenResty - OpenResty? Linux 包

你可以在你的 CentOS 系統(tǒng)中添加 openresty 倉庫,這樣就可以便于未來安裝或更新我們的軟件包(通過 yum update 命令)。運(yùn)行下面的命令就可以添加我們的倉庫:

? yum install yum-utils

? yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

然后就可以像下面這樣安裝軟件包,比如 openresty:

? yum install openresty

如果你想安裝命令行工具 resty,那么可以像下面這樣安裝 openresty-resty 包:

? sudo yum install openresty-resty

(二)源碼編譯安裝

官網(wǎng)下載tar.gz包

OpenResty - 下載

最小版本基于nginx1.21

./configure

然后在進(jìn)入 openresty-VERSION/目錄, 然后輸入以下命令配置:

./configure

默認(rèn), --prefix=/usr/local/openresty 程序會被安裝到/usr/local/openresty目錄。

依賴 gcc openssl-devel pcre-devel zlib-devel

安裝:yum install gcc openssl-devel pcre-devel zlib-devel postgresql-devel

您可以指定各種選項,比如

./configure --prefix=/opt/openresty \

            --with-luajit \

            --without-http_redis2_module \

            --with-http_iconv_module \

            --with-http_postgres_module

試著使用 ./configure --help 查看更多的選項。

make && make install

查看openresty的目錄

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

(三)服務(wù)命令

啟動

Service openresty start

停止

Service openresty stop

檢查配置文件是否正確

Nginx -t

重新加載配置文件

Service openresty reload

查看已安裝模塊和版本號

Nginx -V

測試Lua腳本

在Nginx.conf 中寫入
   location /lua {

        default_type text/html;
        content_by_lua '
           ngx.say("<p>Hello, World!</p>")
         ';
      }

啟動nginx

./nginx -c /usr/local/openresty/nginx/conf/nginx.conf

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

(四)測試lua腳本以文件的形式


       location /lua {

        default_type text/html;
        content_by_lua_file lua/hello.lua;
      }

?在nginx目錄下創(chuàng)建lua目錄并寫入hello.lua文件,文件內(nèi)容

ngx.say("<p>hello world!!!</p>")

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

代碼熱部署

hello.lua腳本每次修改都需要重啟nginx,很繁瑣,因此可以通過配置開啟熱部署

?lua_code_cache off;

?會提示開啟該功能可能影響nginx的性能

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

獲取nginx請求頭信息

local headers = ngx.req.get_headers()                         

ngx.say("Host : ", headers["Host"], "<br/>")  

ngx.say("user-agent : ", headers["user-agent"], "<br/>")  

ngx.say("user-agent : ", headers.user_agent, "<br/>")

for k,v in pairs(headers) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ","), "<br/>")  

    else  

        ngx.say(k, " : ", v, "<br/>")  

    end  

end  

?【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

獲取post請求參數(shù)

ngx.req.read_body()  

ngx.say("post args begin", "<br/>")  

local post_args = ngx.req.get_post_args()  

for k, v in pairs(post_args) do  

    if type(v) == "table" then  

        ngx.say(k, " : ", table.concat(v, ", "), "<br/>")  

    else  

        ngx.say(k, ": ", v, "<br/>")  

    end  
end

?【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

Http協(xié)議版本

ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "<br/>")

請求方法

ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "<br/>")  

原始的請求頭內(nèi)容

ngx.say("ngx.req.raw_header : ",  ngx.req.raw_header(), "<br/>")  

body內(nèi)容體

ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "<br/>")

(五)Nginx緩存

Nginx全局內(nèi)存緩存

nginx配置文件的http塊中添加

lua_shared_dict shared_data 1m; # 申請一兆內(nèi)存作為內(nèi)存緩存,該內(nèi)存可以被所有的進(jìn)程進(jìn)行共享的且可以保持原子性

hello.lua腳本內(nèi)容

local shared_data = ngx.shared.shared_data  

  

local i = shared_data:get("i")  

if not i then  

    i = 1  

    shared_data:set("i", i)  

    ngx.say("lazy set i ", i, "<br/>")  
end  
 

i = shared_data:incr("i", 1)  

ngx.say("i=", i, "<br/>")

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

接下來每次都會從訪問ii都會+1

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

lua-resty-lrucache

Lua 實現(xiàn)的一個簡單的 LRU 緩存,適合在 Lua 空間里直接緩存較為復(fù)雜的 Lua 數(shù)據(jù)結(jié)構(gòu):它相比 ngx_lua 共享內(nèi)存字典可以省去較昂貴的序列化操作,相比 memcached 這樣的外部服務(wù)又能省去較昂貴的 socket 操作

https://github.com/openresty/lua-resty-lrucache

引用lua文件

       location /lua {

        default_type text/html;
#        content_by_lua_file lua/hello.lua;

            content_by_lua_block {
                require("my/cache").go()
            }
      }

當(dāng)不知道nginx是在哪個文件下查找時可以先重啟nginx,然后訪問報錯試一下,然后在error.log文件中可以看到默認(rèn)在哪些文件下查找

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

我們在lualib下創(chuàng)建my目錄,并在my目錄下創(chuàng)建cache.lua腳本,腳本內(nèi)容如下:

local _M = {}


lrucache = require "resty.lrucache"

c, err = lrucache.new(200)  -- allow up to 200 items in the cache
ngx.say("count=init")


if not c then
    error("failed to create the cache: " .. (err or "unknown"))
end

function _M.go()

count = c:get("count")


c:set("count",100)
ngx.say("count=", count, " --<br/>")


if not count then  


    c:set("count",1)

    ngx.say("lazy set count ", c:get("count"), "<br/>")  

else


c:set("count",count+1)
 


ngx.say("count=", count, "<br/>")
end


end
return _M

記得開啟lua_code_cache,即代碼緩存,不然每次代碼都會重復(fù)執(zhí)行,永遠(yuǎn)都拿不到count的值

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

lua-resty-redis訪問redis

官網(wǎng):GitHub - openresty/lua-resty-redis: Lua redis client driver for the ngx_lua based on the cosocket API

常用方法

local res, err = red:get("key")

local res, err = red:lrange("nokey", 0, 1)

ngx.say("res:",cjson.encode(res))

創(chuàng)建連接

red, err = redis:new()

ok, err = red:connect(host, port, options_table?)

timeout

red:set_timeout(time)

keepalive

red:set_keepalive(max_idle_timeout, pool_size)

close

ok, err = red:close()

pipeline

red:init_pipeline()

results, err = red:commit_pipeline()

認(rèn)證

    local res, err = red:auth("foobared")

    if not res then

        ngx.say("failed to authenticate: ", err)

        return
end

nginx的配置

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    lua_code_cache off;
    lua_shared_dict shared_data 1m;
    server {
        listen       888;
        server_name  localhost;

       location /lua {

        default_type text/html;
        content_by_lua_file lua/redis.lua;

        }
        location / {
            root   html;
            index  index.html index.htm;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

redis.lua腳本

  local redis = require "resty.redis"
                local red = redis:new()

                red:set_timeouts(1000, 1000, 1000) -- 1 sec

  local ok, err = red:connect("127.0.0.1", 6379)
  local res, err = red:auth("zjy123...000")

    if not res then

        ngx.say("failed to authenticate: ", err)

        return
  end
 if not ok then
                    ngx.say("failed to connect: ", err)
                    return
                end

                ok, err = red:set("dog", "an animal")
                if not ok then
                    ngx.say("failed to set dog: ", err)
                    return
                end

                ngx.say("set result: ", ok)

                local res, err = red:get("dog")
                if not res then
                    ngx.say("failed to get dog: ", err)
                    return
                end

                if res == ngx.null then
                    ngx.say("dog not found.")
                    return
                end


              ngx.say("dog: ", res)

訪問結(jié)果

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

?驗證

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝

總結(jié)

lua-resty-redis直接訪問redis可以節(jié)省原本的一些步驟,比如:

客戶端請求--nginx--tomcat--redis--tomcat--nginx--客戶端

優(yōu)化為:

客戶端請求--nginx--redis--nginx--客戶端

對于一些不常更新的放在redis的資源可以使用該方式,節(jié)省了不必要的步驟

lua-resty-mysql

官網(wǎng): GitHub - openresty/lua-resty-mysql: Nonblocking Lua MySQL driver library for ngx_lua or OpenResty

配置文件

    charset utf-8;
    lua_code_cache off;
    lua_shared_dict shared_data 1m;
    server {
        listen       888;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;


       location /lua {

        default_type text/html;
        content_by_lua_file lua/mysql.lua;

       }
    }

?mysql.lua

local mysql = require "resty.mysql"
                local db, err = mysql:new()
                if not db then
                    ngx.say("failed to instantiate mysql: ", err)
                    return
                end

                db:set_timeout(1000) -- 1 sec


                local ok, err, errcode, sqlstate = db:connect{
                    host = "192.168.102.100",
                    port = 3306,
                    database = "atguigudb1",
                    user = "root",
                    password = "123456",
                    charset = "utf8",
                    max_packet_size = 1024 * 1024,
                }


                ngx.say("connected to mysql.<br>")



                local res, err, errcode, sqlstate = db:query("drop table if exists cats")
                if not res then
                    ngx.say("bad result: ", err, ": ", errcode, ": ", sqlstate, ".")
                    return
                end


                res, err, errcode, sqlstate =
                    db:query("create table cats "
                             .. "(id serial primary key, "
                             .. "name varchar(5))")
                if not res then
                    ngx.say("bad result: ", err, ": ", errcode, ": ", sqlstate, ".")
                    return
                end

                ngx.say("table cats created.")



                res, err, errcode, sqlstate =
                    db:query("select * from student")
                if not res then
                    ngx.say("bad result: ", err, ": ", errcode, ": ", sqlstate, ".")
                    return
                end

                local cjson = require "cjson"
                ngx.say("result: ", cjson.encode(res))


                local ok, err = db:set_keepalive(10000, 100)
                if not ok then
                    ngx.say("failed to set keepalive: ", err)
                    return
                end
 

【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝文章來源地址http://www.zghlxwxcb.cn/news/detail-445189.html

到了這里,關(guān)于【Nginx高級篇】Lua基礎(chǔ)語法和OpenResty的安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • openresty 安裝, nginx與 openresty

    openresty 安裝, nginx與 openresty

    openresty VS nginx Nginx 是一款高性能的 Web 服務(wù)器和反向代理服務(wù)器,具備基礎(chǔ)的功能如HTTP服務(wù)、負(fù)載均衡、反向代理以及動靜分離等。它是許多互聯(lián)網(wǎng)應(yīng)用的核心組件,因其模塊化和可擴(kuò)展的設(shè)計而受到歡迎。1 OpenResty 是基于 Nginx 的 Web 平臺,它通過Lua腳本語言擴(kuò)展了Nginx的功

    2024年01月25日
    瀏覽(16)
  • 黑馬Redis視頻教程高級篇(安裝OpenResty)

    黑馬Redis視頻教程高級篇(安裝OpenResty)

    目錄 一、安裝 1.1、安裝開發(fā)庫 1.2、安裝OpenResty倉庫 1.3、安裝OpenResty 1.4、安裝opm工具 1.5、目錄結(jié)構(gòu) 1.6、配置nginx的環(huán)境變量 二、啟動和運(yùn)行 三、備注 首先你的Linux虛擬機(jī)必須聯(lián)網(wǎng)。 首先要安裝OpenResty的依賴開發(fā)庫,執(zhí)行命令: 你可以在你的 CentOS 系統(tǒng)中添加 openresty 倉庫

    2024年02月08日
    瀏覽(23)
  • 使用openresty替換線上nginx網(wǎng)關(guān)之openresty安裝細(xì)節(jié)

    線上跑了多年的一個網(wǎng)關(guān)業(yè)務(wù),隨著部門的拆分,逐漸有了一個痛點(diǎn)。該網(wǎng)關(guān)業(yè)務(wù)主要處理app端請求,app端發(fā)起的請求,采用http協(xié)議,post方法,content-type采用 application/x-www-form-urlencoded ,表單中有一個固定的字段,叫功能號,即funcNo=1000100這樣,然后表單中其他業(yè)務(wù)字段就根

    2024年02月07日
    瀏覽(13)
  • lua基礎(chǔ)語法篇一

    單行注釋 多行注釋 Lua有8種基本類型,如下表 類型 說明 nil 空值,只包含一個nil boolean 布爾類型 number 數(shù)值類型 string 字符串,用單引號或雙引號表示 table Lua中的表,其實是一個關(guān)聯(lián)數(shù)組,數(shù)組的索引可以是數(shù)字、字符串或表類型 function 函數(shù),由C或Lua編寫的函數(shù) userdata 表示

    2024年02月02日
    瀏覽(21)
  • OpenResty安裝-(基于Nginx的高性能Web平臺,可在Nginx端編碼業(yè)務(wù))

    OpenResty安裝-(基于Nginx的高性能Web平臺,可在Nginx端編碼業(yè)務(wù))

    首先你的Linux虛擬機(jī)必須聯(lián)網(wǎng) 首先要安裝OpenResty的依賴開發(fā)庫,執(zhí)行命令: 你可以在你的 CentOS 系統(tǒng)中添加 openresty 倉庫,這樣就可以便于未來安裝或更新我們的軟件包(通過 yum check-update 命令)。運(yùn)行下面的命令就可以添加我們的倉庫: 如果提示說命令不存在,則運(yùn)行:

    2024年02月07日
    瀏覽(53)
  • 多級緩存架構(gòu)(三)OpenResty Lua緩存

    多級緩存架構(gòu)(三)OpenResty Lua緩存

    通過本文章,可以完成多級緩存架構(gòu)中的Lua緩存。 在 docker/docker-compose.yml 中添加nginx服務(wù)塊。 刪除原來docker里的 multiCache 項目并停止 springboot 應(yīng)用。 nginx 部分配置如下,監(jiān)聽端口為 8080 ,并且將請求反向代理至 172.30.3.11 ,下一小節(jié),將 openresty 固定在 172.30.3.11 。 重新啟動

    2024年01月16日
    瀏覽(26)
  • openResty+lua+redis實現(xiàn)接口訪問頻率限制

    OpenResty??是一個基于?Nginx?與 Lua 的高性能 Web 平臺,其內(nèi)部集成了大量精良的 Lua 庫、第三方模塊以及大多數(shù)的依賴項。用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動態(tài) Web 應(yīng)用、Web 服務(wù)和動態(tài)網(wǎng)關(guān)。 OpenResty??通過匯聚各種設(shè)計精良的?Nginx?模塊(主要由 OpenResty 團(tuán)

    2024年02月11日
    瀏覽(22)
  • Openresty原理概念篇(九)LuaJIT分支和標(biāo)準(zhǔn)Lua有什么不同

    Openresty原理概念篇(九)LuaJIT分支和標(biāo)準(zhǔn)Lua有什么不同

    一??LuaJIT分支和標(biāo)準(zhǔn)Lua有什么不同 ①? 背景 luajit官方? ?標(biāo)準(zhǔn)lua官方? ?openresty自身維護(hù)的luajit? 編譯luajit ②??LuaJIT 在 OpenResty 整體架構(gòu)中的位置 ③?? 標(biāo)準(zhǔn) Lua 和 LuaJIT 的 關(guān)系 ④? 為什么 選擇LuaJIT ⑤? lua特別之處 pairs和ipairs看table的內(nèi)部結(jié)構(gòu) nil、ngx.null、cjson.null、user

    2024年02月11日
    瀏覽(16)
  • Nginx安裝Lua

    Nginx安裝Lua 1.安裝Lua(兩個二選一) yum install readline-devel (CentOS) sudo apt-get install libreadline-dev (Ubuntu) sudo apt-get install libncurses5-dev (Ubuntu) wget -O LuaJIT-2.0.4.tar.gz http://luajit.org/download/LuaJIT-2.0.4.tar.gz tar -zxvf LuaJIT-2.0.4.tar.gz make make install wget -O lua-5.1.5.tar.gz http://www.lua.org/ftp/lua-5.1.5.tar.gz

    2024年02月21日
    瀏覽(23)
  • Openresty(二十二)ngx.balance和balance_by_lua終結(jié)篇

    Openresty(二十二)ngx.balance和balance_by_lua終結(jié)篇

    一? 灰度發(fā)布鋪墊 ①??init_by_lua* init_by_lua? ? init_by_lua_block ?? 當(dāng)配置重載時,init_by_lua* 不會清空其內(nèi)的lua_shared_dict共享數(shù)據(jù) lua執(zhí)行系統(tǒng)命令方法os.execute和io.popen?? ???init_by_lua_file不能連接redis init_by_lua_file? ②? init_worker_by_lua* init_worker_by_lua init_worker_by_lua_block ?ngx.worker

    2024年02月07日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包