OpenResty 1.27.1.2 源码编译安装指南
本文档详细介绍 OpenResty 1.27.1.2 的源码编译安装流程,包含依赖安装、编译步骤、验证方法及常见问题解决方案,适用于 Debian/Ubuntu(含 WSL)、CentOS/RHEL 等主流 Linux 发行版。
一、环境说明
| 环境类型 | 兼容版本 | 核心依赖要求 |
|---|---|---|
| 操作系统 | Ubuntu 20.04+/CentOS 7+ | 内核版本 ≥ 3.10 |
| 编译工具 | GCC ≥ 4.8.5、Make ≥ 3.81 | 必须安装基础编译链 |
| 依赖库 | zlib、PCRE、OpenSSL | 需安装开发版(-dev/-devel) |
二、编译前准备
2.1 系统更新(可选但推荐)
Debian/Ubuntu 系列(含 WSL)
sudo apt update && sudo apt upgrade -y
CentOS/RHEL 系列
sudo yum update -y
2.2 安装编译依赖
Debian/Ubuntu 系列
# 基础编译工具 + 核心依赖(解决 zlib/PCRE/OpenSSL 缺失问题)
sudo apt install -y \
gcc make git wget \
zlib1g zlib1g-dev \
libpcre3 libpcre3-dev \
libssl-dev
CentOS/RHEL 系列
# 基础编译工具 + 核心依赖
sudo yum install -y \
gcc make git wget \
zlib zlib-devel \
pcre pcre-devel \
openssl openssl-devel
依赖说明:
zlib/zlib1g-dev:支持 Nginx 的 HTTP gzip 模块(核心依赖,缺失会直接编译失败);libpcre3-dev/pcre-devel:支持正则表达式(Nginx 核心功能依赖);libssl-dev/openssl-devel:支持 HTTPS/SSL 模块;git:解决 LuaJIT 编译时的版本检测警告;gcc/make:基础编译工具链。
三、下载并解压源码包
3.1 下载源码
# 创建临时目录(可选,方便管理)
mkdir -p /opt/tmp && cd /opt/tmp
# 下载 OpenResty 1.27.1.2 源码(官方镜像)
wget https://openresty.org/download/openresty-1.27.1.2.tar.gz
# (可选)校验源码包完整性(避免文件损坏)
wget https://openresty.org/download/openresty-1.27.1.2.tar.gz.asc
gpg --verify openresty-1.27.1.2.tar.gz.asc openresty-1.27.1.2.tar.gz
3.2 解压源码
tar -zxvf openresty-1.27.1.2.tar.gz
cd openresty-1.27.1.2
四、编译安装步骤
4.1 配置编译参数(configure)
# 基础配置(指定安装目录,使用系统依赖)
./configure \
--prefix=/opt/openresty-1.27.1.2 \ # 安装根目录(可自定义)
--with-http_ssl_module \ # 启用 SSL 模块(默认启用,显式指定更稳妥)
--with-http_gzip_static_module \ # 启用 gzip 静态压缩模块
--with-stream \ # 启用 TCP/UDP 流模块
--with-stream_ssl_module # 启用流模块的 SSL 支持
# 如需更多自定义参数,可执行 ./configure --help 查看所有可选参数
关键参数说明:
--prefix:指定安装目录,建议自定义(避免覆盖系统默认);--without-http_gzip_module:若不想安装 zlib,可禁用 gzip 模块(不推荐);--with-zlib=<path>:若需使用自定义编译的 zlib,指定其源码路径。
4.2 编译源码
# -j 后接 CPU 核心数(如 -j4),加速编译(推荐使用 nproc 自动识别核心数)
make -j$(nproc)
4.3 安装编译结果
sudo make install
五、安装验证
5.1 检查版本
# 查看 OpenResty 版本
/opt/openresty-1.27.1.2/nginx/sbin/nginx -v
# 预期输出:nginx version: openresty/1.27.1.2
5.2 启动/停止 OpenResty
# 启动
/opt/openresty-1.27.1.2/nginx/sbin/nginx
# 检查进程
ps aux | grep nginx
# 停止
/opt/openresty-1.27.1.2/nginx/sbin/nginx -s stop
# 重启
/opt/openresty-1.27.1.2/nginx/sbin/nginx -s reload
5.3 访问测试
# 测试默认页面(OpenResty 默认监听 80 端口)
curl http://127.0.0.1
# 预期输出:OpenResty 的默认欢迎页面内容(或 403,需确认配置)
六、常见编译问题及解决方案
问题 1:zlib 库缺失(最常见)
报错信息
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system...
解决方案
安装 zlib 开发包:
- Debian/Ubuntu:
sudo apt install -y zlib1g zlib1g-dev - CentOS/RHEL:
sudo yum install -y zlib zlib-devel
问题 2:PCRE 库缺失
报错信息
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system...
解决方案
安装 PCRE 开发包:
- Debian/Ubuntu:
sudo apt install -y libpcre3 libpcre3-dev - CentOS/RHEL:
sudo yum install -y pcre pcre-devel
问题 3:OpenSSL 库缺失
报错信息
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source...
解决方案
安装 OpenSSL 开发包:
- Debian/Ubuntu:
sudo apt install -y libssl-dev - CentOS/RHEL:
sudo yum install -y openssl openssl-devel
问题 4:LuaJIT 编译警告(非致命但建议解决)
警告信息
**** WARNING Cannot determine rolling release version from git log.
**** WARNING The 'git' command must be available during the build.
解决方案
安装 git 工具:
- Debian/Ubuntu:
sudo apt install -y git - CentOS/RHEL:
sudo yum install -y git
问题 5:权限不足
报错信息
make: *** [install] Error 1
Permission denied: cannot create directory '/opt/openresty-1.27.1.2'
解决方案
使用 sudo 执行安装命令:sudo make install,或确保安装目录有写入权限。
问题 6:GCC 版本过低
报错信息
error: #error "GCC version >= 4.8.5 required"
解决方案
升级 GCC:
- CentOS 7:
sudo yum install -y centos-release-scl && sudo yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ && scl enable devtoolset-8 bash - Ubuntu:
sudo apt install -y gcc-8 g++-8 && sudo update-alternatives --config gcc
问题 7:编译时内存不足
报错信息
cc1: out of memory allocating XXX bytes
make: *** [objs/ngx_http_lua_module.o] Error 1
解决方案
- 减少编译并发数(如
make -j1代替make -j$(nproc)); - 临时增加交换分区(适用于云服务器/WSL):
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
七、总结
- 核心依赖:编译 OpenResty 必须安装
zlib、PCRE、OpenSSL的开发包,否则会导致核心模块编译失败; - 编译流程:
系统更新 → 安装依赖 → 下载源码 → configure → make → make install是标准且稳定的编译路径; - 常见问题:90% 的编译失败源于依赖缺失,优先检查 zlib/PCRE/OpenSSL 是否安装,其次检查权限和编译工具版本。
通过以上步骤,可稳定完成 OpenResty 1.27.1.2 的源码编译安装,若遇到其他问题,可优先查看 configure 或 make 输出的报错日志,定位缺失的依赖或配置问题。