Nginx+lua+openresty最佳原創 | 第一篇:openresty介紹

轉載請註明出處:https://blog.csdn.net/YAO_IT/article/details/85318930
——YAO_IT的博客

Nginx+lua+openresty最佳原創 系列目錄
Nginx+lua+openresty最佳原創 | 第一篇:openresty介紹
Nginx+lua+openresty最佳原創 | 第二篇:nginx虛擬主機
Nginx+lua+openresty最佳原創 | 第三篇:nginx反向代理
Nginx+lua+openresty最佳原創 | 第四篇:nginx負載均衡
Nginx+lua+openresty最佳原創 | 第五篇:nginx緩存
Nginx+lua+openresty最佳原創 | 第六篇:lua入門
Nginx+lua+openresty最佳原創 | 第七篇:openresty企業級應用1
Nginx+lua+openresty最佳原創 | 第八篇:openresty企業級應用2

OpenResty安裝

初衷:我們在學習一種陌生的技術時,會遇到各種坑和不解,最坑的倒不是這個,而應該是學習過之後長時間不用,會忘。。。尤其是細節的東西,現在需要學習的東西太多了,學了就忘,那還有啥用。俗話說的好啊,好記性不如爛筆頭,把當時研究該技術的整個過程記錄下來,未嘗不是一件好事,不僅便於以後熟悉查看,而且可以分享給熱愛技術的朋友們,供大家參考。

筆者就用自己的親身實踐,記錄下來研究一種技術的整個過程和心得,一方面加深瞭解,另一方面也給那些還不熟悉這種技術的同學一個參考

學習一種技術或者工具時,基本要遵循以下步驟,這玩意是什麼(概念),有什麼用能幹嘛(功能),然後纔是怎麼幹(應用),爲什麼它能這麼幹(原理)

1.什麼是openresty

我以前從未聽說過這門技術(孤陋寡聞。。),直到項目中遇到需要對請求流量進行拷貝和流量百分比切入(比如50%請求到A域名,50%請求去B域名)的時候,才知道還有這麼一個東西。這玩意是咱中國人自己搞出來的技術,作者是章亦春,功能非常強大。

既然是openresty這門技術,爲何筆者的標題中會有Nginx和lua這兩個東東呢,這兩者又是做什麼的呢?瞭解了openresty之後,這一切將不在疑惑

進入正題:openresty是一個全功能的web應用服務器,它打包了Nginx的核心和很多常用的第三方模塊。那麼問題來了,什麼是Nginx???

我們知道Nginx是俄國佬的大佬開發的,它是一個正宗的HTTP和反向代理服務器。它具有很多優勢,高併發情況下性能異常的好,內存和CPU等系統資源消耗的卻非常的低。它可以做虛擬主機(啥玩意?),反向代理(這又是啥玩意?),緩存等等,且運行非常的穩定。但是Nginx是用C語言開發的,衆所周知,C語言學習起來是相當的有難度的,比起其他語言例如Java和Python。所以Nginx固然好,但是在Nginx上擴展開發成了一道難題——你必須會C語言,這就是openresty的誕生的一大原因。當然了openresty的產生自2007年就已經出現了,在雅虎中國的一個項目中,後來經過章大爺和他同事王曉哲的改造,通過使用lua這門小巧的腳本語言,讓開發者輕鬆定製擴展Nginx的開發,不用再去學習C語言去做Nginx的模塊開發。

簡而言之,openresty其實就是對Nginx的又一次封裝(個人理解),它集成了Nginx核心和常用模塊,再基於lua這個腳本語言,讓開發者對Nginx的功能擴展和定製不再困難。所以,研究openresty首先要研究Nginx的一些常用功能和特點,然後需要研究lua腳本,然後綜合兩大技術,對openresty有一個整體的認識。lua是一個小巧的腳本,可以嵌入到Nginx中,語法很簡單,對於已經掌握一種開發語言的摳腳大漢來說兩三天就可以大致掌握

2.openresty能幹嘛?

目前有兩大目標:1.作爲通用的web服務器2.對Nginx擴展編程
Nginx的特點

  1. 高併發性能超好,Nginx官方測試5萬併發性能良好
  2. 內存消耗少
  3. 成本低。在做負載均衡時可以作爲F5(負載均衡設備)的替代品
  4. 穩定
  5. 支持熱部署
    openresty功能
  6. 根據lua腳本,可以對請求和響應 進行改造(主要還是基於lua開發)
  7. 也可以做虛擬主機、反向代理、緩存(很有用),如果只是純虛擬主機或者反向代理還是推薦用nginx
  8. web服務器
    因爲是對nginx的封裝 ,所以優勢基本就是nginx所具有的的,再加上lua的支持又新增些東西

3.openresty安裝

相信讀者已經對openresty有了一定的瞭解,那麼瞭解之後接下來就是要用它去做一些事情。那麼怎麼用呢?是不是像軟件一樣需要安裝?我們就得去官網看看了。
在這裏插入圖片描述
openresty官網有中英文可以切換,不習慣英文的可以用中文,但是切換到中文以後,還是有部分是英文寫的。我們點擊download鏈接,可以看到有很多操作系統都可以安裝。開發測試都可以在Linux上(但是不推薦,因爲寫代碼不方便),Windows上也可以開發,並且會idea的話開發很方便,有相關插件。

Linux安裝

很簡單,下載地址,找到自己的Linux系統的版本,按照官網的指令安裝即可(不會Linux基本操作的的話需要惡補),我的系統是VMware虛擬機裝的,centos版本,所以按照下面操作即可,三行命令就能搞定
在這裏插入圖片描述

windows安裝

非常簡單 下載地址,按照自己的Windows系統是多少位就下載多少位的,然後下載之後解壓即可
在這裏插入圖片描述
解壓之後如圖:
在這裏插入圖片描述
最好把該目錄配置到環境變量中,玩過Java的都會配吧,很簡單,配置根目錄就可以了。否則可能會有些問題

4.開發工具

由於在Linux上寫代碼比較費勁,所在我就不演示在Linux上的使用,各位大佬直接在官網的getting start即可,很直觀。
幸運的是idea有Nginx的插件,開發起來非常方便,操作如下(筆者的配置都會說明)

idea版本:IntelliJ IDEA 2018.1.5 x64
安裝插件
在這裏插入圖片描述
我們順便把lua腳本的插件也安裝上,可以讓lua語法高亮,並且有代碼提示,開發起來就比在Linux上敲舒服多了,插件沒有就點擊browse repositories,這裏可以下載到,和上面安裝nginx插件一樣。
安裝之後重啓idea。
在這裏插入圖片描述
新建項目
新建一個lua項目,之前安裝了lua插件就可以創建了,一路next就可以了,創建自己的項目名稱,lua的SDK可以不選擇。
在這裏插入圖片描述
項目建好以後,就光禿禿的一個項目名稱。下面啥文件也沒有,爲了管理方便,我們把關於nginx的配置文件都放在conf目錄下,lua腳本都放在src下,創建這兩個目錄即可。
在這裏插入圖片描述在這裏插入圖片描述
項目建好了是不是就該寫helloworld了,是不是得先啓動nginx啊,熟悉Tomcat的同學肯定知道怎麼配置Tomcat服務器,那麼一樣的nginx也是服務器,它也需要配置一下才能在idea中啓動
在這裏插入圖片描述
我們要點擊configure把nginx的exe文件加載進來
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這裏說的純nginx是指不是openresty內嵌的nginx,而是真正的nginx  window版本
好了到這裏爲止,nginx就可以使用了,那麼我們點擊啓動按鈕,如果操作都沒問題的話應該是可以啓動的了
沒有紅色字體報錯,就說明啓動正常。然後訪問以下:localhost即可 不用端口號默認80
在這裏插入圖片描述
到這裏說明配置成功
在這裏插入圖片描述
有很多人會很奇怪,明明項目就是個空項目,啥也沒幹,建了兩個空文件夾而已嘛,是的,沒錯!此時的nginx啓動和項目沒有任何關係,它是用openresty的根目錄conf下的ngin.conf配置文件啓動的,所以和項目沒啥關係,那我們爲啥還要建項目呢!

建項目是爲了維護方便,我們要在項目裏寫代碼,寫配置文件。難不成我還得把conf下的nginx.conf文件導入到nginx嗎?嗯,這麼做是可以的,但是相當於在openresty的眼皮子底下幹活,一不小心是不是就把openresty安裝的相關文件搞亂了或者是不小心刪了怎麼辦。所以要另起爐竈,我們可以在項目裏寫一個新的nginx.conf文件。然後讓nginx用這個文件去啓動,或者把該文件拷貝到openresty的根目錄下的conf下,覆蓋掉原來的nginx.conf。筆者選擇在openresty根目錄下新建一個workspace目錄,把項目相關文件都放在這裏(因爲相對路徑的存在,最好把項目文件都放在openresty目錄下,像我這樣)。那麼問題來了,我項目的路徑又不是在openresty根目錄下的,難不成我每次要手動拷貝到這個目錄???肯定不行,所以就有一個叫Ant的東西,可以解決這個問題,它可以在nginx啓動之前把項目的文件全部生成到你指定目錄。配置起來也很方便

Ant插件idea默認是支持的,不支持的話像安裝nginx插件再裝一下
在這裏插入圖片描述
新建一個xml文件 名稱隨便,稍微看一下就能看懂啥意思

<?xml version="1.0" encoding="UTF-8"?>
<project name="nginx" default="dist" basedir=".">
    <description>
        run pic-server
    </description>
    <!-- set global properties for this build -->
    <property name="openresty-home" location="E:\Java\openresty-1.13.6.2-win64"/>
    <property name="conf" location="${basedir}/conf"/>
    <property name="src" location="${basedir}/src"/>
    <property name="target-conf" location="${openresty-home}/workspace/conf"/>
    <property name="target-src" location="${openresty-home}/workspace"/>

    <echo>######開發版本的ant配置#####</echo>
    <target name="clean" depends="">
        <echo>清理openresty目錄 ${dist}下的conf,logs,janus,januslib</echo>
        <delete dir="${target-conf}"/>
        <delete dir="${target-src}"/>
        <!--<delete>-->
            <!--<fileset dir="${openresty-home}/logs" includes="*.log"></fileset>-->
        <!--</delete>-->
    </target>

    <target name="init" depends="clean">
        <echo>創建安裝目錄</echo>
        <mkdir dir="${target-conf}"/>
        <mkdir dir="${target-src}"/>
    </target>

    <target name="dist" depends="init" description="generate the distribution" >
        <echo>複製安裝文件</echo>
        <copy todir="${target-conf}">
            <fileset dir="${conf}"></fileset>
        </copy>
        <copy todir="${target-src}">
            <fileset dir="${src}"></fileset>
        </copy>
    </target>

</project>

加載ant配置文件
在這裏插入圖片描述
加入配置文件
在這裏插入圖片描述
效果圖
在這裏插入圖片描述

然後需要配置一下nginx服務器 讓nginx去找openresty根目錄下的workspace/conf/nginx.conf
在這裏插入圖片描述
啓動nginx前 加載ant配置
在這裏插入圖片描述
選擇dist
在這裏插入圖片描述
效果圖
在這裏插入圖片描述
到這裏插件配置結束,我們就需要在項目裏配置nginx.conf文件了

把openresty根目錄/conf/nginx.conf文件內容拷貝至我們新建的nginx.conf文件,先把圖片的這行刪除,後面介紹爲啥刪掉
在這裏插入圖片描述

然後啓動nginx即可,訪問localhost這裏可能會加載不到配置文件,那就是讀者配置的地方寫錯了,所以仔細檢查 兩處nginx加載配置文件的目錄,和你項目中ant配置的目的地目錄要一致
在這裏插入圖片描述

到這裏openresty的所有基本配置算是告一段了了,我用了整整三個小時,把這篇基礎博客寫完。還是覺得不夠詳細,怕出漏子,怕漏了一步讀者就不能繼續到下一步。

俗話說一步一個腳印,在研究一個技術的時候,我總想兩三天就把它搞定,太急躁了,殊不知這樣的技術人家多少年才研究透,蘊含了多少汗水和智慧,哪是我幾天就能掌握的,所以在研究技術的時候,一定要先選擇一個方向,一個方面,着手,然後常用的功能都研究的差不多了,再整合一下,這個技術也就搞定了。比如我們在研究openresty的時候,我們要分部去看 虛擬主機,反向代理和緩存,一點點喫肉,慢慢就喫完了,切忌浮躁
後面我將介紹 nginx的其他功能,先把nginx的功能搞的差不多,再搞lua去開發,會更容易些

轉載請註明出處:https://blog.csdn.net/YAO_IT/article/details/85318930
——YAO_IT的博客

Nginx+lua+openresty最佳原創 系列目錄
Nginx+lua+openresty最佳原創 | 第一篇:openresty介紹
Nginx+lua+openresty最佳原創 | 第二篇:nginx虛擬主機
Nginx+lua+openresty最佳原創 | 第三篇:nginx反向代理
Nginx+lua+openresty最佳原創 | 第四篇:nginx負載均衡
Nginx+lua+openresty最佳原創 | 第五篇:nginx緩存
Nginx+lua+openresty最佳原創 | 第六篇:lua入門
Nginx+lua+openresty最佳原創 | 第七篇:openresty企業級應用1
Nginx+lua+openresty最佳原創 | 第八篇:openresty企業級應用2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章