SpringBoot+Redis+MemCache+Nginx+Lua實現(xiàn)三級緩存架構(gòu)(二)——Nginx環(huán)境安裝和整合Lua

前面我們已經(jīng)簡單的介紹過了三級緩存的概念噪漾,接下來的博文中往枷,我們需要搭建系統(tǒng)運行的環(huán)境菲驴、編寫功能實現(xiàn)代碼來實現(xiàn)我們的三級緩存架構(gòu),工欲善其事必先利其器错英,本片博文我們先來搭建Nginx環(huán)境以及整合Lua

Redis的環(huán)境搭建我們之前的博文 《Redis教程(一)——Redis安裝》 已經(jīng)搭建好了入撒,本文只是實現(xiàn)三級緩存架構(gòu),所以Redis這里我們這暫時不做分布式集群椭岩,只使用單機版即可茅逮,以后如果有需要將SpringBoot整合Redis的方便變更下即可,不需要做代碼層面上的改動判哥。

Redis環(huán)境我們準(zhǔn)備好了氮唯,現(xiàn)在我們開始在Centos7中搭建Nginx和Lua整合,這里我們使用流行的開源方案——OpenResty

為什么選擇OpenResty呢姨伟,OpenResty中集成了Nginx+Lua環(huán)境惩琉,并且還提供了Redis客戶端、mysql客戶端夺荒,http客戶端等大量的組件瞒渠,方便我們搭建環(huán)境和開發(fā),更方便的是技扼,這個是我們中國人發(fā)明的伍玖,官方文檔也是中文的,所以很方便我們查找相關(guān)的資料剿吻,對于英文不是很好的同學(xué)窍箍,真是極大的幫助了。

安裝的方法,可以參考OpenResty-安裝椰棘, 如果不想看官網(wǎng)的話纺棺,也可以閱讀下面的安裝方法,跟官網(wǎng)上的差不多

安裝環(huán)境校驗

首先查看Centos7是否安裝了一下的軟甲

    ## 查看是否存在gcc, Nginx依賴該環(huán)境
    rpm -qa|grep gcc
    
    ## 查看是否安裝 Perl,nginx 的 http 模塊使用 pcre 來解析正則表達(dá)式邪狞,所以需要在 linux 上安裝 pcre 庫祷蝌,pcre-devel 是使用 pcre 開發(fā)的一個二次開發(fā)庫。nginx也需要此庫
    rpm -qa|grep pcre
    rpm -qa|grep pcre-devel
    
    ## 查看是否安裝curl
    rpm -qa|grep curl
    
    ## 查看是否安裝 openssl
    rpm -qa|grep openssl
    rpm -qa|grep openssl-devel

上面那個軟件沒有安裝帆卓,則需要安裝巨朦,已安裝的可以不必再安裝

    yum install pcre-devel openssl-devel gcc curl

安裝 OpenResty

    ## 添加 openresty分庫,便于安裝或者更新軟件包
    yum install yum-utils
    yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
    
    ## 安裝openresty 和 resty命令行工具
    yum install openresty
    yum install openresty-resty
    
    ## 查看可安裝的組件(當(dāng)前可不安裝,后期想要安裝的時候剑令,再查看具體的安裝名稱
    yum --disablerepo="*" --enablerepo="openresty" list available

至此我們已經(jīng)安裝好penResty的環(huán)境了糊啡,接下來我們先看看怎么使用

    ## 創(chuàng)建nginx運行需要的目錄環(huán)境
    mkdir work
    cd work
    mkdir logs/ conf/
    
    ##創(chuàng)建nginx.conf文件
    cd conf
    vi nginx.conf

上述需要創(chuàng)建 nginx.conf文件,并且輸入一下內(nèi)容

    ## nginx.conf
    worker_processes  1;
    error_log logs/error.log;
    events {
        worker_connections 1024;
    }
    http {
        server {
            listen 8080;
            location / {
                default_type text/html;
                content_by_lua_block {
                    ngx.say("<p>hello, world</p>")
                }
            }
        }
    }

配置Nginx的環(huán)境變量

    ## 編輯 /etc/profile 文件吁津,配置好nginx的環(huán)境變量
    vi /etc/profile
    
    ......
    NGINX_HOME=/usr/local/openresty/nginx
    export PATH=$PATH:$NGINX_HOME/sbin
    ......
    
    ## 環(huán)境變量生效
    source /etc/profile

查看環(huán)境變量配置是否生效

    ## 如果執(zhí)行該命令 提示說查找不道nginx命令悔橄,則說明你的環(huán)境變量配置的 有問題,需要仔細(xì)查看下配置
    nginx -v
    

啟動Nginx環(huán)境

    ## 啟動Nginx環(huán)境 該命令必須在你剛才創(chuàng)建的work目錄下執(zhí)行腺毫,否則啟動失敗
    nginx -p `pwd`/ -c conf/nginx.conf

訪問 http://192.168.56.105:8080/ 看看瀏覽器是不是顯示 Hello world 癣疟,如果是則說明Nginx搭建成功

整合Lua

在整合之前我們先看下OpenResty目錄下是否存在 lualib文件夾,OpenResty默認(rèn)的安裝路徑是/usr/localhost/openresty這里面是lua的依賴潮酒,我們編寫腳本時睛挚,需要手動引入這些依賴

image

首先先定義我們的工程目錄結(jié)構(gòu):

--work
----conf
------nginx.conf
----lua
------requestDirect.conf
----lualib
------*.lua
------*.so

接下來我們需要在我們之前/work/conf/nginx.conf中的http模塊中添加lua的依賴

    -- nginx.conf
    
    worker_processes  1;
    error_log logs/error.log;
    events {
        worker_connections 1024;
    }
    http {
       lua_package_path "/usr/local/openresty/lualib/?.lua;;";
       lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
       include lua/requestDirect.conf;
       server {
          listen 8080;
          location / {
             default_type text/html;
             content_by_lua_block {
                 ngx.say("<p>hello, world</p>")
             }
          }
       }
    }

requestDirect.conf文件的內(nèi)容

    -- requestDirect.conf
    server {
        listen     8080;
        server_name _;
        location /lua {  
          default_type 'text/html';  
          content_by_lua_block {
                 ngx.say("<p>hello, world</p>")
          }
        } 
    }

此時文件就添加完成了,先來測試下是否能啟動成功

    ## 進(jìn)入到 /home/work 目錄下
    cd /home/work
    
    ## 編譯 看看能否編譯通過
    nginx -t
    
    ## 查看端口是否被占用
    losf -i:8080
    ## 刪除進(jìn)程 pid 此處的pid是lsof命令查詢出來的急黎,有幾個就執(zhí)行幾次
    kill -9 pid
    
    ## 啟動nginx服務(wù)
    nginx -p `pwd`/ -c /home/work/conf/nginx.conf

啟動完成之后扎狱,訪問 http://192.168.56.105:8080/lua 就能看到返回的結(jié)果了

項目工程文件

上面是我們測試Nginx是否集成Lua成功的,現(xiàn)在我們將項目工程話勃教,目錄結(jié)構(gòu)依舊跟上面是一樣的淤击,我們將業(yè)務(wù)代碼獨立出來,不跟系統(tǒng)相關(guān)的代碼放在一起故源。

上面還有一點污抬,我們每次更新都需要手動kill掉nginx的進(jìn)程,很麻煩绳军,我們可以使用nginx的 reload方式來重新加載lua的配置

目錄結(jié)構(gòu)如下:

--work
----conf
------nginx.conf
----lua
------requestDirect.lua
--lualib
----*.lua
----*.so
  • 按照上述的工程目錄結(jié)構(gòu),我們創(chuàng)建項目需要的文件夾
    ## /home/work下創(chuàng)建文件 conf文件夾 lua文件夾
    cd /home/work
    mkdir conf
    mkdir lua
    
    ## 創(chuàng)建 nginx.conf 和  lua/requestDirect.lua
    vi nginx.conf
    vi lua/requestDirect.lua
    

/home/work/conf/nginx.conf中添加如下的代碼

  -- 注意這里的路徑必須是絕對路徑才行印机,如果是相對路徑,則會直接請求到nginx的安裝路徑下门驾,請求時報找不到對應(yīng)文件的錯誤
    server {
      listen 80;
      location /lua {
         default_type text/html;
         content_by_lua_file /home/work/conf/lua/requestDirect.lua;
      }
   }

/home/work/conf/lua/requestDirect.lua文件中添加如下的代碼

    ngx.say("hello world,this is nginx_lua project file");

將nginx目錄下的 lualib依賴拷貝到 /home/work/lualib

   ## 在/home/work中拷貝 nginx目錄下的lualib依賴文件
   cd /home/work
   cp -r /usr/local/openresty/lualib/ .
  • 我們需要更新nginx源目錄下的conf/nginx.conf文件射赛,并且在其中引入我們的工程目錄的conf文件
    ## 進(jìn)入到nginx的根目錄下
    cd /usr/local/openresty/nginx/
    
    vi conf/nginx.conf
    ## 在nginx.conf 中的http模塊中添加
    
    ....
    lua_package_path "/home/work/lualib/?.lua;;";
    lua_package_cpath "/home/work/lualib/?.so;;";
    include /home/work/conf/nginx.conf
    ....
    
  • 上面的文件添加完成之后我們就可以使用nginx本身自帶的命令來啟動nginx了
    ## 先查看能否編譯成功,如果編譯不通過會提示具體的錯誤
    nginx -t
    
    ## 重新加載
    nginx -s reload

至此我們的nginx整合lua在項目工程中配置的Demo示例已經(jīng)完成了奶是,在瀏覽器中訪問 http://192.168.56.105:8080/lua 就可以看到打印的信息了

下篇博文我們將在此基礎(chǔ)上楣责,完成請求定向分發(fā)的功能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竣灌,一起剝皮案震驚了整個濱河市渺氧,隨后出現(xiàn)的幾起案子衩侥,更是在濱河造成了極大的恐慌,老刑警劉巖御雕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛔屹,死亡現(xiàn)場離奇詭異削樊,居然都是意外死亡豁生,警方通過查閱死者的電腦和手機兔毒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甸箱,“玉大人育叁,你說我怎么就攤上這事∩种常” “怎么了豪嗽?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長豌骏。 經(jīng)常有香客問我龟梦,道長,這世上最難降的妖魔是什么窃躲? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任计贰,我火速辦了婚禮,結(jié)果婚禮上蒂窒,老公的妹妹穿的比我還像新娘躁倒。我一直安慰自己,他們只是感情好洒琢,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布秧秉。 她就那樣靜靜地躺著,像睡著了一般衰抑。 火紅的嫁衣襯著肌膚如雪象迎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天呛踊,我揣著相機與錄音挖帘,去河邊找鬼。 笑死恋技,一個胖子當(dāng)著我的面吹牛拇舀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜻底,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼骄崩,長吁一口氣:“原來是場噩夢啊……” “哼聘鳞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起要拂,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抠璃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后脱惰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搏嗡,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年拉一,在試婚紗的時候發(fā)現(xiàn)自己被綠了采盒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔚润,死狀恐怖磅氨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫡纠,我是刑警寧澤烦租,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站除盏,受9級特大地震影響叉橱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜者蠕,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一窃祝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蠢棱,春花似錦锌杀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至玉转,卻和暖如春突想,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背究抓。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工猾担, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刺下。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓绑嘹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親橘茉。 傳聞我的和親對象是個殘疾皇子工腋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容