28 OpenResty 的作用及环境搭建
更新时间:2020-03-19 11:05:45
当你做成功一件事,千万不要等待着享受荣誉,应该再做那些需要的事。 —— 巴斯德

前言

我们在前面的章节中介绍了Nginx的许多内容,从Nginx的安装到配置以及优化等等,大家可以从中体会到Nginx的出色性能。基于优秀的事件通知机制,Nginx服务可以稳定的提供高并发服务。
大多数时候通过合理的参数配置以及内核优化等方案就可以满足我们的业务场景,但是有些时候我们可能要扩展Nginx的某些功能,或者更大限度的榨取``Nginx的性能,这时候我们可以通过编写Nginx扩展Module来实现。Nginx扩展可以充分的利用Nginx异步事件机制,拥有非常高的性能。但是要用C语言实现的,并且要透彻的理解Nginx的各个处理过程,难度比较高。
OpenResty给我们提供了另外一种方式,我们可以通过Lua代码来实现我们的功能。

OR简介

OpenResty又称Ngx_Openresty,简称OR,由国人章亦春(江湖人称春哥)开发和维护。这是一个基于NginxLua的高性能web平台。它的内部集成了大量优秀的Lua库,第三方模块等。这样开发人员就可以使用Lua脚本调用Nginx支持的各种C以及Lua模块。快速构造出足以胜任 C10K 乃至 C1000K 以上单机并发连接的高性能 Web 应用系统。

OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQLPostgreSQLMemcached 以及 Redis 等都进行一致的高性能响应。
OR官网

我们可以从官网上找到OpenResty支持的第三方模块:
图片描述
这里面几乎包含了我们平时常用的所有模块,我们可以充分的利用这些模块完成我们的应用开发。

在实际的工作中,我接触的使用到OpenResty最多的场景就是网关的开发。Lua的脚本特性,加上Nginx的高效性,二者有效的融合在了一起,极大的加速了网关的开发。

安装

工欲善其事必先利其器

在深入了解OpenResty之前,我们必须先让安装框架,让它run起来才行。

打开OpenResty的安装页面,老规矩,作为一个程序员,我们推荐使用自己编译的方式,这样可以最大程度的个性化定制功能。

逐步编译

打开download页面,下载最新版本。
图片描述

我们下载的最新的 1.15.8.2 版本,所以按步骤执行如下命令:

tar -xvf openresty-1.15.8.2.tar.gz
cd openresty-1.15.8.2
./configure -j2
make -j2
sudo make install

这样我们就完成了安装工作。

测试

是骡子是马,拉出来溜溜
安装成功之后,我们简单的体验与喜爱OpenResty的功能。

我们先创建几个目录,用于保存OpenResty的配置目录和日志目录:

mkdir ~/work
cd ~/work
mkdir logs/ conf/
配置文件

我们在上面的~/work/conf目录下面创建一个nginx.conf配置文件,内容如下;

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

大家可能注意到了,这里的配置文件和我们在前面学习的Nginx的配置文件非常的相似。因为OpenResty本质上是Nginx的一个扩展模块,在这个模块中增加了一些自定义的指令,比如上面的content_by_lua_block等,所以我们的配置文件,包括OpenResty的各种操作都和Nginx是相同的。大家一定要注意这一点。

启动服务器

我们启动OpenResty服务器。

/usr/local/openresty/bin/openresty -c ~/work/conf/nginx.conf

查看进程状况:
图片描述

请求服务

图片描述
如上可以知道,OpenResty已经可以成功的接收我们的请求了。

总结

我们在这篇文章中简单的介绍了OpenResty的概念以及用途,以及安装的内容。大家要仔细看看这个相应的文档,更多的了解OpenResty,这是非常有必要的。、

}