在 Linux 上通过源码编译安装 Openresty

内容纲要

查看【Linux】专题可浏览更多内容

简介

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 等都进行一致的高性能响应。

准备

在开始之前先解决一些依赖,为什么要安装这些依赖及未安装时会遇到的问题我在上一篇 如何在 Linux 上安装 NGINX 很详细的提到了,本篇就不再一步步来「遭遇」问题了。

安装及准备依赖

本文以 Debian 为例,安装 build-essential 以解决编译需要的依赖

sudo apt install build-essential

然后安装 PCRE、zlib 和 OpenSSL 这三个 OpenResty 所依赖的库,同样的可以选择使用 APT 或编译安装,使用 APT 安装 PCRE、zlib 和 OpenSSL:

sudo apt install libpcre3-dev zlib1g-dev libssl-dev

如果是想要通过编译安装 PCRE、zlib 和 OpenSSL 可按照以下方法下载相关源码包。

⚠️ 如无必要更建议以上方法使用包管理系统安装 PCRE、zlib 和 OpenSSL。

⚠️ 请注意请不要照搬所给出的示例,而是按照注释中的官方网站获取最新版本的下载链接:

# 进入通常用于用户存放编译源码的目录
cd /usr/local/src

# 下载 PCRE https://pcre.org/
sudo wget https://versaweb.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
sudo tar -xaf pcre-8.45.tar.gz

# 下载 zlib https://zlib.net/
sudo wget https://zlib.net/zlib-1.2.12.tar.gz
sudo tar -xaf zlib-1.2.12.tar.gz

# 下载 OpenSSL https://www.openssl.org/source/
sudo wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
sudo tar -xaf openssl-1.1.1n.tar.gz

下载 OpenResty

和 NGINX 一样,从需要定制模块的角度所以选择源码构建的方式安装 OpenResty。

OpenResty - 下载 获取最新的源码包。

cd /usr/local/src

# 下载 OpenResty
sudo wget https://openresty.org/download/openresty-1.19.9.1.tar.gz

# 解压
sudo tar -xaf openresty-1.19.9.1.tar.gz
cd openresty-1.19.9.1/
/usr/local/src/openresty-1.19.9.1
├── bundle
├── configure
├── COPYRIGHT
├── patches
├── README.markdown
├── README-windows.txt
└── util

3 directories, 4 files

构建

# /usr/local/src/openresty-1.19.9.1/
./configure --help | more

在编译前可以先看看支持哪些选项,如查看选择需要的模块等等

新建一个用于 OpenResty 的用户如 www

sudo useradd -s /sbin/nologin www

如果是使用 APT 安装 PCRE、zlib 和 OpenSSL,则使用以下命令,下列多行命令为一条命令:

sudo ./configure \
    --prefix=/usr/local/openresty \
    --user=www \
    --group=www \
    --with-http_ssl_module

如果是想要通过编译安装 PCRE、zlib 和 OpenSSL,已经通过前文步骤下载并解压了相关源码包,那么需要加上相关源码包的解压路径:

sudo ./configure \
    --prefix=/usr/local/openresty \
    --user=www \
    --group=www \
    --with-pcre=/usr/local/src/pcre-8.45 \
    --with-zlib=/usr/local/src/zlib-1.2.12 \
    --with-openssl=/usr/local/src/openssl-1.1.1n \
    --with-http_ssl_module
# 编译
sudo gmake
# 安装
sudo gmake install

如果没有使用 --prefix 选项将默认安装至 /usr/local/openresty

查看 OpenResty 版本号以确认是否成功安装。

/usr/local/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.19.9.1

成功。

其他

解决直接运行 openresty 时提示:openresty: command not found

sudo ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/local/bin/openresty