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 等都进行一致的高性能响应。
系统环境:Debian 12 ,内核版本6.1.0-9-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.27-1 (2023-05-08) x86_64 GNU/Linux
安装必要依赖的包: 1 apt install -y autoconf automake libtool libmaxminddb-dev libxslt1-dev libgd-dev libgeoip-dev libgoogle-perftools-dev libunwind-dev
下载解压:openssl-1.1.1u 从 openssl 官方站点 下载源码包到 /usr/local/src/ 并解压到下载目录 /usr/local/src/
1 2 3 4 5 6 7 8 9 10 11 wget -O /usr/local/src/openssl-1.1.1u.tar.gz https://www.openssl.org/source/openssl-1.1.1u.tar.gz tar -zxf /usr/local/src/openssl-1.1.1u.tar.gz -C /usr/local/src/
下载解压:pcre(非 pcre2) 从 pcre 官方站点 下载源码包到 /usr/local/src/ 并解压到下载目录 /usr/local/src/
1 2 3 4 5 wget -O /usr/local/src/pcre-8.45.tar.gz https://udomain.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz tar -zxf /usr/local/src/pcre-8.45.tar.gz -C /usr/local/src/
下载解压:zlib 从 zlib 官方站点 下载源码包到 /usr/local/src/ 并解压到下载目录 /usr/local/src/
1 2 3 4 5 wget -O /usr/local/src/zlib-1.2.13.tar.gz https://zlib.net/zlib-1.2.13.tar.gz tar -zxf /usr/local/src/zlib-1.2.13.tar.gz -C /usr/local/src/
安装 luajit2 及其它 lua 组件 **这里的 luajit2、lua-resty-core 以及 lua-resty-lrucache 都安装到同一个目录
下载安装:luajit2 1 2 3 4 5 6 7 8 git clone https://github.com/openresty/luajit2.git /usr/local/src/luajit2 cd /usr/local/src/luajit2make install PREFIX=/usr/local/LuaJIT2
下载安装: 1 2 3 4 5 6 7 8 git clone https://github.com/openresty/lua-resty-core.git /usr/local/src/lua-resty-core cd /usr/local/src/lua-resty-coremake install PREFIX=/usr/local/LuaJIT2
下载安装: 1 2 3 4 5 6 7 8 git clone https://github.com/openresty/lua-resty-lrucache.git /usr/local/src/lua-resty-lrucache cd /usr/local/src/lua-resty-lrucachemake install PREFIX=/usr/local/LuaJIT2
最后,将 luajit2 模块软链接到 /usr/lib/ 及 /usr/lib64/ 目录:
1 2 ln -s /usr/local/LuaJIT2/lib/libluajit-5.1.so.2.1.0 /usr/lib/libluajit-5.1.so.2ln -s /usr/local/LuaJIT2/lib/libluajit-5.1.so.2.1.0 /usr/lib64/libluajit-5.1.so.2
下载安装:jemalloc 从 github 上同步 jemalloc 源码到 /usr/local/src/ 目录下并执行 ./autogen.sh 生成 configure 文件
1 2 3 4 5 6 7 8 git clone https://github.com/jemalloc/jemalloc.git /usr/local/src/jemalloc cd !$./autogen.sh
下载安装:libatomic: 从 github 上同步 libatomic_ops 源码到 /usr/local/src/ 目录下并执行 ./autogen.sh 生成 configure 文件
1 2 3 4 5 6 7 8 9 10 11 git clone https://github.com/ivmai/libatomic_ops.git /usr/local/src/libatomic_ops cd /usr/local/src/libatomic_ops./autogen.sh ln -s /usr/local/src/libatomic_ops/src/.libs/libatomic_ops.a /usr/local/src/libatomic_ops/src/
下载目录索引模块:ngx-fancyindex 从 github 上同步 ngx-fancyindex 源码到 /usr/local/src/ 目录下
1 git clone https://github.com/aperezdc/ngx-fancyindex.git /usr/local/src/ngx-fancyindex
下载IP定位模块:ngx_http_geoip2_module 从 github 上同步 ngx_http_geoip2_module 源码到 /usr/local/src/ 目录下
1 git clone https://github.com/leev/ngx_http_geoip2_module.git /usr/local/src/ngx_http_geoip2_module
下载安装:openresty-1.21.4.2 从 openresty 官方站点 下载源码包到 /usr/local/src/ 并安装到 /usr/local/openresty 目录下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 wget -O /usr/local/src/openresty-1.21.4.2.tar.gz https://openresty.org/download/openresty-1.21.4.2.tar.gz tar -zxf /usr/local/src/openresty-1.21.4.2.tar.gz -C /usr/local/src/ cd /usr/local/src/openresty-1.21.4.2useradd -s /sbin/nologin nginx ./configure --prefix=/usr/local/openresty \ --user=nginx \ --group=nginx \ --with-luajit=/usr/local/LuaJIT2 \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module \ --with-http_image_filter_module \ --with-http_geoip_module \ --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 \ --http-log-path=/usr/local/openresty/logs/access.log \ --http-client-body-temp-path=/usr/local/openresty/tmp_client_body \ --http-proxy-temp-path=/usr/local/openresty/temp_proxy \ --with-mail \ --with-mail_ssl_module \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module \ --with-stream_ssl_preread_module \ --with-google_perftools_module \ --with-compat \ --with-pcre=/usr/local/src/pcre-8.45 \ --with-zlib=/usr/local/src/zlib-1.2.13 \ --with-libatomic=/usr/local/src/libatomic_ops \ --with-openssl=/usr/local/src/openssl-1.1.1u \ --add-module=/usr/local/src/ngx-fancyindex \ --add-module=/usr/local/src/ngx_http_geoip2_module gmake gmake install [Unit] Description=openresty After=syslog.target network.target [Service] Type=forking ExecStart=/usr/local/openresty/nginx/sbin/nginx ExecReload=/usr/local/openresty/nginx/sbin/nginx -s reload ExecStop=/usr/local/openresty/nginx/sbin/nginx -s quit LimitNOFILE=65536 [Install] WantedBy=multi-user.target ln -s /usr/local/openresty/nginx/sbin/nginx /usr/sbin/root@vultr:/usr/local/src/openresty-1.21.4.2 nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful root@vultr:/usr/local/src/openresty-1.21.4.2 root@vultr:/usr/local/src/openresty-1.21.4.2 LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users :(("nginx",pid=29473 ,fd=8 ),("nginx",pid=29472 ,fd=8 ))