OpenResty安装与使用

Posted 海风就很大众

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenResty安装与使用相关的知识,希望对你有一定的参考价值。

海风,一个专注于研究技术的大众人

目录

OpenResty简介

OpenResty安装

OpenResty工作原理

Nginx和lua的简介


OpenResty简介

OpenResty是一个基于Linux的可伸缩的web平台,提供了很多高质量的第三模块。

OpenResty是一个强大的Web应用服务器,Web开发人员可以使用Lua脚本语言调动nginx支持的各种C以及Lua模块,更主要的是在性能方面,OpenResty可以快速构造出足以胜任10K以上并发连接响应的超高性能Web应用系统。

OpenResty安装

OpenResty依赖库有:Perl5.6.1+,libreadline,libpcre,libssl

先安装好这些依赖库(基于Centos系统):

yum install readline-devel pcre-devel openssl-devel

接下我们可以在官方下载最新的 OpenResty 源码包并解压编译安装:

wget https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz   # 下载
tar xzvf ngx_openresty-1.9.7.1.tar.gz       # 解压
cd ngx_openresty-1.9.7.1/ 
./configure
make 
make install

默认情况下程序被安装到/usr/local/openresty目录,可以使用./configure –help查看更多的配置选项。

安装完写一个实例

首先创建一个工作目录:

mkdir /home/www
cd /home/www/
mkdir logs/  conf/

其中logs用于存放日志,conf用于存放配置文件

接着我们在conf目录下创建一个nginx.conf文件。如下:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 9000;
        location / {
            default_type text/html;
            content_by_lua '
                ngx.say("<p>Hello, World!</p>")
            ';
        }
    }
}

启动openresty

默认情况下 openresty 安装在 /usr/local/openresty 目录中,启动命令为:

cd /home/www
/usr/local/openresty/nginx/sbin/nginx -p `pwd`/ -c conf/nginx.conf

实例:

如果没有任何输出,说明启动成功,-p 指定我们的项目目录,-c 指定配置文件。

接下来我们可以使用 curl 来测试是否能够正常运行:

curl http://localhost:9000/

输出结果:

<p>Hello,world<p>

 

然后运行完再通过浏览器进行访问一下:

如果浏览器访问不了,可能是防火墙问题

发现centos的防火墙改成了firewall,不再叫iptables,开放端口方法如下:

firewall-cmd --zone=public --add-port=80/tcp permanent

然后再进行重启防火墙:

systemctl stop firewalld.service

systemctl start firewalld.service

再次刷新访问就可以了

若后续进程端口被占用可参考此文档进行解决:

https://blog.csdn.net/yufeng_lai/article/details/88819981

OpenResty工作原理

OpenResty又被称为ngx_openresty,是基于Nginx的核心Web应用程序服务器

OpenResty是基于NginxLua的高性能Web平台,OpenResty通过汇聚各种设计精良的Nginx模块,从而将Nginx有效地变成一个强大的通用Web应用平台

OpenResty的目标是让Web服务直接运行在Nginx服务内部,充分利用Nginx的非堵塞I/O模型,不仅对HTTP客户端请求,甚至对远程后端DB都进行一系列的高性能响应。

OpenResty借助于Nginx的事件驱动模型和非堵塞IO,以实现高性能的Web应用程序

OpenResty使我们可以借助于Nginx的异步非阻塞达到使用Lua异步并发访问后端DB等服务

OpenResty使用ngx.location.capture_multi极大地减少浏览器的HTTP连接数量,可以异步并发的访问后台接口

OpenResty运行原理

Nginx采用的是master-worker模型,也就是一个master进程管理多个worker进程,基本的时间处理都放在worker进程中,master进程负责全局初始化以及对worker进行的管理。

OpenResty中,每个worker进程使用一个LuaVM,当请求被分配到worker时,将在这个LuaVM中创建一个coroutine协程,协程之间数据隔离,每个协程都具有独立的全局变量。

OpenResty工作原理

OpenResty处理请求流程

Nginx会把一个请求分成不同阶段,第三方模块可以根据自己的行为,挂在到不同阶段中以达到自身目的。OpenResty采用了同样的特性,不同阶段有着不同的处理行为。

Nginxlua的简介

  1. Nginx:
  • Nginx的优点:

比apache占用更少的内存及资源

抗并发nginx处理请求异步非阻塞而apache则阻塞型高并发下nginx能保持低资源低消耗高性能

高度模块化设计编写模块相对简单

  • Nginx性能高,占用内存少

对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master进程则很快启动新的worker进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以降低风险。

Nginx是采用异步非阻塞的方式去处理请求的,什么是异步非阻塞呢?其实就是当一个线程调用出现等待的io之类的情况时,而不是阻塞在这里,而是去处理别的事情,等io准备好了,然后再去执行,具体的我就不在这里和大家描述了

        2.lua

  • Lua是一个小巧的脚本语言。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能
  • Lua的特点:

Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。

Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

以上是关于OpenResty安装与使用的主要内容,如果未能解决你的问题,请参考以下文章

Openresty使用Thrift安装步骤

OpenResty实践

openresty编写代码怎么用命令启动和执行

安装指定版本openresty-nginx

验证 Openresty+Lua+GraphicsMagick

安装openresty1.9