本文主要对openresty做入门简介以及初始化的安装配置介绍。
1、OpenResty简介
了解过web服务器的同学肯定对nginx不陌生,nginx作为目前占有率第一的web服务器,本身作为静态web服务器、反向代理服务和四层、七层负载均衡器都有着非常优秀的表现。但是对于web服务器而言,nginx的很多功能都偏向于静态web应用,也就是说它的动态处理能力是有一定的缺失的。举个最简单的例子,nginx无法在配置中直接进行一个条件以上的逻辑判断,这对于一些架构设计来说有着较大的不便。OpenResty的诞生就是为了解决这个问题。
官方对于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 等都进行一致的高性能响应。
个人简单的理解就是OpenResty=nginx+lua+第三方库,事实上nginx本身也可以通过编译的方式添加lua的支持,同时nginx也可以通过编译的方式添加第三方库的支持,OpenResty则是直接将其全部打包在一起。且不讨论OpenResty作为全能型web服务器是否能够满足所有的业务需求,就其突出的动态处理能力就能给我们的系统架构带来很大的灵活性和额外的多样化处理能力。
2、yum安装
2.1 配置yum源
openresty官网有提供各种主流Linux发行版的预编译包,如果没有特殊需求,一般可以直接使用官方提供的安装包进行安装。
下面我们以centos
为例进行示范:
# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/
# update the yum index:
sudo yum check-update
2.2 rpm包介绍
openresty的yum源中除了openresty本身之外,还有一些其他的工具包和依赖包,我们可以这样查看所有可用的rpm包,对于这些rpm包的详细内容解说可以查看官网的文档。
sudo yum --disablerepo="*" --enablerepo="openresty" list available
下面简单介绍几个重点的rpm包。
2.2.1 openresty
这是用于核心 OpenResty 服务的生产版本。也就是整个openresty中提供主要服务的核心功能文件。在使用rpm包安装的情况下,系统中的openresty指令会链接到/usr/bin/openresty
,而/usr/bin/openresty
实际上是/usr/local/openresty/nginx/sbin/nginx
的软链接
实际上/usr/local/openresty/nginx/sbin/nginx
才是整个openresty的nginx可执行文件的本体,我们加上-V参数即可查看它包括编译模块在内的详细情况。之所以要将其软链接到/usr/bin/openresty
,官方解释是为了避免和机器上已有的nginx发生冲突。
从上面的编译参数中我们可以看到openresty使用了它们自己维护的openssl库、zlib库、pcre库和LuaJIT库,这样一来能够较好地控制各个库之间的版本以及功能更新和同步协调。
2.2.2 openresty-resty
这个包里面有 resty
命令行程序,这个工具包主要依赖于 resty-cli 这个项目,这个包依赖标准 的perl
包以及上面提到的