OpenResty 使用介绍

OpenResty(又称:ngx_openresty)  是一个基于 Nginx 与 Lua 的高性能可伸缩的 Web 平台,由中国人章亦春发起,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。他基于其 OpenResty® 开源项目打造的高科技企业 OpenResty Inc. 位于美国硅谷中心。其主打的两个产品 OpenResty XRay(利用动态追踪技术的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最适合微服务和分布式流量的全能型网关软件),广受全球众多上市及大型企业青睐。

通过揉和众多设计良好的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程,构建出可以处理一万以上并发请求的极端高性能的 Web 应用。

OpenResty 致力于将你的服务器端应用完全运行于 Nginx 服务器中,充分利用 Nginx 的事件模型来进行非阻塞 I/O 通信。不仅仅是和 HTTP 客户端间的网络通信是非阻塞的,与MySQL、PostgreSQL、Memcached 以及 Redis 等众多远方后端之间的网络通信也是非阻塞的。

360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是 OpenResty 的深度用户。

这是第二代的 OpenResty,一般称之为 ngx_openresty,以便和第一代基于 Perl 和 Haskell 实现的 OpenResty 加以区别。章亦春和他的同事王晓哲一起设计了第二代的 OpenResty。在王晓哲的提议下,选择基于 nginx 和 lua 进行开发。

为什么要取 OpenResty 这个名字呢?OpenResty 最早是顺应 OpenAPI 的潮流做的,所以 Open 取自“开放”之意,而Resty便是 REST 风格的意思。虽然后来也可以基于 ngx_openresty 实现任何形式的 web service 或者传统的 web 应用。

也就是说 Nginx 不再是一个简单的静态网页服务器,也不再是一个简单的反向代理了。第二代的 openresty 致力于通过一系列 nginx 模块,把nginx扩展为全功能的 web 应用服务器。

ngx_openresty 是用户驱动的项目,后来也有不少国内用户的参与,从 openresty.org 的点击量分布上看,国内和国外的点击量基本持平。

ngx_openresty 目前有两大应用目标:

  1. 通用目的的 web 应用服务器。在这个目标下,现有的 web 应用技术都可以算是和 OpenResty 或多或少有些类似,比如 Nodejs, PHP 等等。ngx_openresty 的性能(包括内存使用和 CPU 效率)算是最大的卖点之一。
  2. Nginx 的脚本扩展编程,用于构建灵活的 Web 应用网关和 Web 应用防火墙。有些类似的是 NetScaler。其优势在于 Lua 编程带来的巨大灵活性。

这里是OpenResty的官网,包括OpenResty的安装包下载,不同操作系统的安装说明等供查阅。

OpenResty - Getting Started

1,安装

OpenResty 依赖库有: perl 5.6.1+, libreadline, libpcre, libssl。

所以我们需要先安装好这些依赖库,也非常简单:

apt-get install libreadline-dev libpcre3-dev libssl-dev perl

如果你的系统是 Centos 或 RedHat 可以使用以下命令:

yum install readline-devel pcre-devel openssl-devel

接下来下载安装包并解压安装

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

默认, --prefix=/usr/local/openresty 程序会被安装到/usr/local/openresty目录,

您可以指定各种选项,比如:

./configure --prefix=/opt/openresty \
            --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module \
            --with-http_postgres_module

试着使用 ./configure --help 查看更多的选项。

配置文件(./configure script)运行出错可以到 build/nginx-VERSION/objs/autoconf.err 找到。 VERSION 的地方必须与OpenResty版本号相对应, 比如 1.9.7.1

您也可以选择通过rpm包安装,官网安装链接如下

OpenResty安装文档

本次演示通过yum安装,安装步骤如下:

CentOS 8 或者更老版本

# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/openresty.repo

# update the yum index:
sudo yum check-update

然后就可以像下面这样安装软件包,比如 openresty

sudo yum install -y openresty

如果你想安装命令行工具 resty,那么可以像下面这样安装 openresty-resty 包:

sudo yum install -y openresty-resty

命令行工具 opm 在 openresty-opm 包里,而 restydoc 工具在 openresty-doc 包里头。

列出所有 openresty 仓库里头的软件包:

sudo yum --disablerepo="*" --enablerepo="openresty" list available

2,配置

默认OpenResty安装在  /usr/local/openresty/ 熟悉Nginx大家都知道与Nginx的文件目录类似。

2.1 创建配置文件和日志存放的目录

mkdir -p /opt/local/logs /opt/local/conf

2.2 在conf目录下创建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>")
            }
        }
    }
}

2.3 导入环境变量

vim ~/.bashrc
PATH=/usr/local/openresty/nginx/sbin:$PATH
export PATH
source ~/.bashrc

3,启动服务

cd /opt/local/
nginx -p `pwd`/ -c conf/nginx.conf

4,测试

curl http://localhost:8080/

  输出结果如下,也可以通过浏览器访问

  <p>hello, world</p>

  说明OpenResty启动成功!

5,补充

OpenResty公司提供了可以快速排查基于Lua程序CPU、内存、磁盘高IO的排查工具OpenResty XRay,可以线上进行程序性能分析。

这里是一个官网的示例:
线上快速定位 CPU 最热的 Lua 代码路径(使用 OpenResty XRay)

OpenResty Edge™ 用户手册

OpenResty XRay™ 用户手册

OpenResty XRay支持High CPU , High Disk IO, High Latency, High Memory, Low CPU等在线实时分析。

Screenshot

OpenResty基于Lua语言扩展,参考资料如下

OpenResty官网

Lua入门

lua-nginx-module

Nginx与OpenResty module对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NettyBoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值