[转帖]OpenResty编译安装

openresty,编译,安装 · 浏览次数 : 0

小编点评

排版指令: 1. 使用 `tab`键进行排版。 2. 使用 ``键进行排版。 3. 使用 ``键进行排版。 4. 使用 ``键进行排版。 5. 使用 ``键进行排版。

正文

https://www.cnblogs.com/lizexiong/p/15012869.html

 

  OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

  OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

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

 

1.OpenResty源码获取

  OpenResty 使用源码版本是 1.15.8.2,集成的 Nginx 版本是 Nginx 1.15.8 版本。其源码可通过官网直接获取,获取命令如下:

mkdir -p /opt/data/source
cd /opt/data/source
wget https://openresty.org/download/openresty-1.15.8.2.tar.gz
tar zxmf openresty-1.15.8.2.tar.gz

 

2.编译配置参数

  OpenResty 是 Nginx 的扩展版,其在编译配置参数上也进行了清晰的区分,分为 Nginx 原有编译配置参数和扩展编译配置参数两部分,扩展编译配置参数如下表所示。

 编译参数  参数说明
 --with-debug 启用调试日志
 --with-dtrace-probes 启用 DTrace USDT 探针
 --without-http_echo_module

不编译可以在 Nginx 的 URL 访问中通过 echo 命令输出字符到用户的浏览器,

一般用来调试输出信息,检测 Nginx 的可访问性、配置正确性

 --without-http_xss_module 不编译跨站点脚本支持
 --without-http_coolkit_module 不编译 Nginx 插件模块集合
 --without-http_set_misc_module 不编译 rewrite 指令的扩展
 --without-http_form_input_module 不编译 HTTP 请求扩展
 --without-http_encrypted_session_module 不编译加密解密 Nginx 变量值的模块
 --without-http_srcache_module 不编译缓存增强模块
 --without-http_lua_module 不编译 Lua 脚本支持模块
 --without-http_lua_upstream_module 不编译提供操作 upstream 服务器 Lua API 功能的模块
 --without-http_headers_more_module 不编译 header 返回信息编辑模块
 --without-http_array_var_module 不编译数组类型的 Nginx 变量模块
 --without-http_memc_module 不编译 Memcache 扩展模块
 --without-http_redis2_module 不编译 Redis 2.0 协议支持模块
 --without-http_redis_module 不编译 Redis 缓存的模块
 --without-http_rds_ison_module 不编译 DBD-Stream 格式转 JSON 格式模块
 --without-http_rds_csv_module 不编译 DBD-Stream 格式转 cvs 格式模块
 --without-stream_lua_module 不编译 TCP/UDP 负载 Lua 脚本支持模块
 --without-ngx_devel_kit_module 不编译模块开发库
 --with-http_iconv_module 编译编码字符转换模块
 --without-http_ssl_module 不编译 HTTP SSL 支持模块
 --without-stream_ssl_module 不编译 Stream SSL 支持模块
 --with-http_drizzle_module 编译 MySQL 或 Drizzle 数据库访问模块
 --with-http_postgres_module 编译 PostgreSQL 数据库访问模块
 --without-lua_cjson 不编译快速解析 JSON 的一个 Lua C 模块
 --without-lua_tablepool 不编译基于 LuaJIT 的 Lua 表格资源回收池支持库
 --without-lua_redis_parser 不编译 Redis 数据解析为 Lua 数据结构模块
 --without-lua_rds_parser 不编译 DBD-Stream 格式的数据解析为 Lua 数据结构模块
 --without-lua_resty_dns 不编译 DNS(域名系统)解析器的 Lua 模块
 --without-lua_resty_memcached 不编译 Memcached 客户端模块
 --without-lua_resty_redis 不编译 Redis 客户端模块
 --without-lua_resty_mysql 不编译 MySQL 客户端模块
 --without-lua_resty_upload 不编译上传文件支持模块
 --without-lua_resty_upstream_healthcheck 不编译基于 Lua 的服务器组健康监测模块
 --without-lua_resty_string 不编译字符串实用程序和通用哈希函数的 Lua 库
 --without-lua_resty_websocket 不编译基于 Lua 的非阻塞 WebSocket 服务/客户端
 --without-lua_resty_limit_traffic 不编译 lua-resty-limit-traffic 支持库
 --without-lua_resty_lock 不编译基于 Lua Nginx 模块的共享内存字典的简单非阻塞互斥锁 API 
 --without-lua_resty_lrucache 不编译 Lua-land LRU 缓存
 --without-lua_resty_signal 不编译 lua-resty-signal 支持库,该支持库用于向 UNIX 进程发送信号
 --without-lua_resty_shell 不编译 lua-resty-shell 支持库,该支持库可以实现通过 Lua 调用 shell 脚本的支持
 --without-lua_resty_core 不编译使用 LuaJIT FFI 实现 Lua Nginx 模块提供的 Lua API
 --with-luajit 编译 LuaJIT 2.1 解释器
 --without-luajit-lua52 不编译基于 Lua 5.2 的 LuaJIT 扩展解释器

  对于下表,有以下几点说明。

    • 扩展的功能模块都是被默认编译的,可以通过参数设置选择不编译;
    • DTrace 是基于系统底层的性能监控技术,可监测函数级别的内存、CPU 性能数据;
    • Nginx 原有编译配置参数参见《Nginx编译安装》一节。

 

3.代码编译

  OpenResty 代码编译如下所示:

复制代码
yum -y install gcc pcre-devel make zlib-devel openssl-devel libxml2-devel \
    libxslt-devel gd-devel GeoIP-devel libatomic_ops-devel luajit \
    luajit-devel perl-devel perl-ExtUtils-Embed

./configure \
    --with-threads \
    --with-file-aio \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_xslt_module=dynamic \
    --with-http_image_filter_module=dynamic \
    --with-http_geoip_module=dynamic \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_auth_request_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_degradation_module \
    --with-http_slice_module \
    --with-http_stub_status_module \
    --with-stream=dynamic \
    --with-stream_ssl_module \
    --with-stream_realip_module \
    --with-stream_geoip_module=dynamic \
    --with-stream_ssl_preread_module

gmake && gmake install
复制代码

  编译完成后,默认安装目录为 /usr/local/openresty。Nginx 安装在 /usr/local/openresty/nginx 目录下。

 

4.OpenResty集成的模块

  在 OpenResty 中使用 Lua 是非常方便的,既可以在配置文件中通过 OpenResty 定义的指令区域直接编写 Lua 语法命令,也可以通过引用方式调用外部 Lua 脚本文件。

  OpenResty 提供了很多非常实用的 Nginx 模块和 Lua 支持库,模块说明如下表所示。

模块文件夹名 模块说明
array-var-nginx-module 一个 Nginx 模块,向 Nginx 配置文件添加对数组类型变量的支持
drizzle-nginx-module 实现与 MySQL 或 Drizzle 数据库的代理连接支持
echo-nginx-module 该模块封装了大量 Nginx 内部 API,用于流式输入和输出、并行/顺序子请求、定时器和休眠,以及各种元数据访问
encrypted-session-nginx-module 该模块为基于 Mac 系统的 AES-256,为 Nginx 变量提供加密和解密支持
form-input-nginx-module 该模块读取编码为 application/x-www-form-urlencoded 的 HTTP POST 和 PUT 请求体,并将请求体中的参数解析为 Nginx 变量
headers-more-nginx-module 该模块允许用户添加、设置或清除指定响应或请求头
iconv-nginx-module 该模块使用 libiconv 转换不同编码的字符,它既可以处理 Nginx 变量,也可以作为输出过滤器处理响应体
lua-cjson 可为 Lua 提供快速的 JSON 解析和编码支持
lua-rds-parser 该 Lua 库可以用于将由 Drizzle Nginx 模块和 Postgres Nginx 模块生成的 Resty-DBD-Stream 流格式的数据解析为 Lua 数据结构
lua-redis-parser 该 Lua 库实现了一个精简而快速的将 Redis Raw 格式解析为 Lua 数据结构的解析器,同时还构造了一个 Redis Raw 格式请求函数
lua-resty-core 使用 LuaJIT FFI 实现的 Lua Nginx 模块 Lua API
lua-resty-dns 基于 Lua Nginx 模块 cosocket API 的非阻塞域名解析支持库
lua-resty-limit-traffic 用于限制和控制流量的 Lua 支持库
lua-resty-lock 该 Lua 库基于 Lua Nginx 模块的共享内存字典实现了一个简单的非阻塞互斥锁 API,主要用于消除 dog-pile effects
lua-resty-lrucache Lua-land LRU 缓存支持库
lua-resty-memcached 基于 Lua Nginx 模块 cosocket API 的 Lua Memcached 客户端驱动支持库
lua-resty-mysql 基于 Lua Nginx 模块 cosocket API 的 Lua MySQL 客户端驱动支持库
lua-resty-redis 基于 Lua Nginx 模块 cosocket API 的 Lua Redis 客户端驱动支持库
lua-resty-shell 该支持库可以实现通过 Lua 调用 shell 脚本的支持
lua-resty-signal 该支持库用于向 UNIX 进程发送信号
lua-resty-string 为 Lua Nginx 模块提供字符串实用程序和公共哈希函数的 Lua 库
lua-resty-upload 基于 Lua Nginx 模块 cosocket API 的 HTTP 文件上传流式阅读器和解析器支持库
lua-resty-upstream-healthcheck Nginx 上游服务器运行状况的主动检查支持库
lua-resty-websocket 基于 Lua Nginx 模块 cosocket API 的非阻塞 WebSocket 服务器和非阻塞 WebSocket 客户端支持库
lua-tablepool 基于 LuaJIT 的 Lua 表格资源回收池支持库
memc-nginx-module 该模块扩展了标准的 Memcached 模块,几乎支持全部 Memcached ASCII 协议,它允许用户为 Memcached 服务器定义一个 Rest 接口,
通过子请求或独立的伪请求在 Nginx 服务器中以非常高效的方式访问 Memcached 服务器
ngx_coolkit 该模块是一些小的、有用的 Nginx 附加组件集合
ngx_devel_kit 该模块旨在以其为基础为其他模块提供扩展 Nginx Web 服务器的核心功能支持
ngx_lua_upstream 该模块向 Lua Nginx 模块公开了一个 Lua API,用于 Nginx 上游服务器的操作
ngx_stream_lua Nginx Stream 代理的 Lua 脚本支持模块
opm OpenResty 的包管理工具
rds-csv-nginx-module 该 Lua 库可以用于将由 Drizzle Nginx 模块和 Postgres Nginx 模块生成的 Resty-DBD-Stream 流格式的数据解析为 CSV 数据结构
rds-json-nginx-module 该 Lua 库可以用于将由 Drizzle Nginx 模块生成的 Resty-DBD-Stream 流格式的数据解析为 JSON 数据结构
redis2-nginx-module 该模块使 Nginx 以非阻塞的方式与 Redis 2.x 服务器通信,已经完整地实现 Redis 2.0 协议支持,包括 Redis pipelining 支持
redis-nginx-module 该模块使 Nginx 以非阻塞的方式与 Redis 2.x 服务器通信,且与标准的 ngx_memcached 模块有相似的接口,但是只支持 Redis 的 GET 和 SELECT 命令
resty-cli OpenResty 的命令行实用程序的集合
set-misc-nginx-module 该模块是 Nginx 的 rewrite 模块的功能增强模块,提供了更多的指令
srcache-nginx-module 该模块为 Nginx 提供了一个透明的缓存层,可以用在 Nginx 的任意位置
xss-nginx-module 该模块提供了跨站点 AJAX 支持,目前只支持跨站点的 GET 方法

  各模块的详细功能和使用方法请参见官方网站的相关介绍。

该模块可以提供 Nginx/Tengine 共享内存的状态信息

与[转帖]OpenResty编译安装相似的内容:

[转帖]OpenResty编译安装

https://www.cnblogs.com/lizexiong/p/15012869.html OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 We

[转帖]从抄书到开源之巅:章亦春的程序人生

https://www.huoban.com/news/post/326.html 春哥的编程之旅起于抄书,就算如今已是罕见的编程高手,春哥依然逢人大力推荐他的抄书学编程之法。春哥先后在中国雅虎、淘宝、Cloudflare 就职,但开源世界是他如一的眷念。如今,春哥已全身心投入 OpenResty

[转帖]优化超大 Nginx 配置导致的内存碎片

https://blog.openresty.com.cn/cn/ngx-cycle-pool-frag/?src=org_news 章亦春发布于 Feb 14, 2023更新于 Mar 2, 2023 预计阅读 6 分钟 阅读次数 我们最近使用 OpenResty XRay 帮助一个销售 CDN

[转帖]动态追踪技术漫谈

https://blog.openresty.com.cn/cn/dynamic-tracing/ 本文最初成稿于 2016 年 5 月初,后于 2020 年 2 月中进行了较大的更新和修订,后续会持续保持更新。 什么是动态追踪 动态追踪的优点 DTrace 与 SystemTap SystemTa

[转帖]使用SkyWalking监控nginx (以openresty为例)

https://www.cnblogs.com/hahaha111122222/p/15829737.html 安装使用SkyWalking先看这篇文章,地址:https://www.cnblogs.com/sanduzxcvbnm/p/15829781.html 使用SkyWalking监控ngi

[转帖]Ngx_lua

http://me.52fhy.com/lua-book/chapter12.html 简介 ngx_lua 指的是 lua-nginx-module模块:通过将 LuaJIT 的虚拟机嵌入到 Nginx 的 worker 中,这样既保持高性能,又能不失去lua开发的简单特性。 OpenResty 

[转帖]Nginx的Docker容器化配置

https://www.cnblogs.com/lizexiong/p/15032552.html 这里只是做一个简单的演示,基础镜像选用 CentOS 7,Nginx 选用 Nginx 的扩展版本 OpenResty 1.15.8.2。 Nginx 镜像 Dockerfile 脚本如下: FROM

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、