• OpenResty编译安装


      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 共享内存的状态信息

    作者:小家电维修

    相见有时,后会无期。

  • 相关阅读:
    fiddler应用之Composer(发送接口请求)
    fiddler应用之AutoResponder(fiddler的重定向页面功能)
    fiddler应用之设置断点(fiddler篡改request和response数据)
    fiddler应用之过滤器(用fiddler筛选特定网络请求)
    fiddler配置之对移动设备进行抓包证书安装
    fiddler配置之设置手机代理
    外部排序的基本概念
    80天考研核心短语
    地址访问冲突问题(四体交叉存取)
    制约函数法
  • 原文地址:https://www.cnblogs.com/lizexiong/p/15012869.html
Copyright © 2020-2023  润新知