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的特点

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就可以使用了,那么我们点击启动按钮,如果操作都没问题的话应该是可以启动的了
没有红色字体报错,就说明启动正常。然后访问以下: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

相关内容

    暂无相关文章