了解 OpenResty XRay 是如何做到帮助企业定位应用程序存在的问题以及优化其效率的。

了解更多

OpenResty 是一个基于 nginx 和 LuaJIT 构建的完整 Web 平台。它让你能完全使用 Lua 来构建高性能 Web 应用、API 网关和 WAF——而不会牺牲 nginx 的吞吐量。无论你是在部署新的边缘节点,还是从原版 nginx 迁移,都需要一种可靠的方式在你的操作系统上安装 OpenResty。

有两条路径。包管理器安装(推荐用于生产环境)可以通过 apt、dnf 或 apk 获得经过签名、测试的二进制包以及自动更新。源码编译适合需要自定义 nginx 模块、非标准安装路径或没有预编译包的平台的高级用户。

本页面是这两种方式的汇总——一份涵盖所有主要 Linux 发行版、ARM64、Alpine 和 macOS 的 OpenResty 安装指南。选择下方你的平台,或者如果你使用 Ubuntu 或 Debian,可以直接跳到快速开始。OpenResty 运行起来之后,推荐的下一步是 OpenResty 教程 →——一个从 Hello World 到生产环境 Lua 应用的七步实战系列。

支持的平台

OpenResty 为以下平台提供官方预编译包。所有列出的 Linux 发行版同时支持 ARM64 / Aarch64——使用各指南中注明的架构专用仓库 URL。

平台版本状态详细指南
Ubuntu18.04, 20.04, 22.04, 24.04✅ 支持在 Ubuntu 上安装 OpenResty →
Debian11, 12✅ 支持在 Debian 上安装 OpenResty →
CentOS / RHEL / Rocky / Alma / OracleCentOS/RHEL 7–9;Rocky/Alma 8–9;Oracle 7–8✅ 支持下方 RHEL 系列章节
ARM64 / Aarch64跨发行版✅ 支持下方 ARM64 章节
Alpine Linux3.10 – 3.18✅ 支持下方 Alpine 章节
macOS (Homebrew)最新版✅ 支持下方 macOS 章节
源码编译任何 Linux / Unix✅ 支持下方源码编译章节

完整的支持发行版列表——包括 Fedora、Amazon Linux、Rocky Linux 和 SUSE——请参阅官方 Linux 包页面。

快速开始

在 Ubuntu 或 Debian(amd64)上安装 OpenResty 最快只需五条命令。以下步骤适用于 Ubuntu 22.04+。Debian 12 的步骤相同,只是第 2、3 步的命令不同(见下文)。Ubuntu 18.04/20.04 和 Debian 11 改用 apt-key 导入 GPG 密钥,具体命令请参阅完整的 Ubuntu 指南和 Debian 指南。

如果系统中已经安装并正在运行 nginx,请先禁用并停止它,否则安装可能会失败:

sudo systemctl disable nginx
sudo systemctl stop nginx

第 1 步 — 安装前置依赖:

sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates lsb-release

第 2 步 — 导入 OpenResty GPG 密钥:

wget -O - https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/openresty.gpg

第 3 步 — 添加官方 APT 仓库:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/openresty.gpg] https://openresty.org/package/ubuntu $(lsb_release -sc) main" \
    | sudo tee /etc/apt/sources.list.d/openresty.list > /dev/null

Debian 12 的第 2、3 步请改用以下命令:

wget -O - https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty.gpg

codename=`grep -Po 'VERSION="[0-9]+ \(\K[^)]+' /etc/os-release`
echo "deb https://openresty.org/package/debian $codename openresty" \
    | sudo tee /etc/apt/sources.list.d/openresty.list

ARM64 系统请把仓库 URL 换成 arm64/ubuntu 或 arm64/debian——参见 ARM64 章节。

第 4 步 — 更新包索引并安装:

sudo apt-get update
sudo apt-get -y install --no-install-recommends openresty

第 5 步 — 启动服务并验证:

sudo systemctl start openresty
curl 127.0.0.1/

你应该能看到默认的 OpenResty 欢迎页面。如需包含截图和可选包的完整演练,请参阅完整的 Ubuntu 安装指南 →。

各平台安装指南

Ubuntu (20.04 / 22.04 / 24.04)

OpenResty 为所有当前的 Ubuntu LTS 版本提供官方 APT 仓库,支持 amd64 和 arm64 架构。安装过程涵盖 GPG 密钥设置、仓库配置、软件包安装以及 resty、restydoc 和 OPM 等可选工具。

在 Ubuntu 上安装 OpenResty — 完整分步指南 →

Debian (11 / 12)

Debian 使用与 Ubuntu 独立的专用 APT 仓库。该仓库支持 Bullseye (11) 和 Bookworm (12),涵盖 x86_64 和 aarch64 两种架构。目前暂不支持 Debian 13。

在 Debian 上安装 OpenResty — 完整分步指南 →

CentOS / RHEL / Rocky / Alma / Oracle

RHEL 系列发行版使用相同的 YUM/DNF 仓库模型:把对应发行版的 .repo 文件放进 /etc/yum.repos.d/,然后用 dnf install openresty 安装(7 版本用 yum)。不同版本之间唯一的区别是 repo 文件名:9 及以上版本使用 openresty2.repo,8 及更早版本使用 openresty.repo。以 CentOS 9 为例:

wget https://openresty.org/package/centos/openresty2.repo
sudo mv openresty2.repo /etc/yum.repos.d/openresty.repo
sudo dnf check-update
sudo dnf install -y openresty

RHEL 和 Rocky Linux 把 URL 中的 centos 换成 rhel 或 rocky 即可。AlmaLinux 可以直接使用 Rocky 的仓库。Oracle Linux 使用 oracle/openresty.repo。

查看官方 RPM 包说明 →

如需 CentOS 8 的详细演练(含截图),请参阅我们的旧版 CentOS 8 安装指南。

ARM64 / Aarch64

OpenResty 为 Ubuntu、Debian 以及 CentOS、RHEL、Rocky、Fedora 等 RPM 系发行版提供 ARM64 包。Ubuntu 和 Debian 需要换用 ARM64 专用的仓库 URL;RPM 系发行版的配置命令与 amd64 相同。

Ubuntu (ARM64)

导入 GPG 密钥(与 amd64 相同)后,使用 ARM64 仓库:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/openresty.gpg] https://openresty.org/package/arm64/ubuntu $(lsb_release -sc) main" \
    | sudo tee /etc/apt/sources.list.d/openresty.list > /dev/null
sudo apt-get update
sudo apt-get -y install openresty

Debian (ARM64)

codename=$(grep -Po 'VERSION="[0-9]+ \(\K[^)]+' /etc/os-release)

echo "deb https://openresty.org/package/arm64/debian $codename openresty" \
    | sudo tee /etc/apt/sources.list.d/openresty.list
sudo apt-get update
sudo apt-get -y install openresty

CentOS / RHEL / Rocky / Fedora (ARM64)

官方给出的 RPM 仓库配置命令不区分架构,没有为 aarch64 单独提供仓库地址。按照上方 RHEL 系列章节操作,照常运行 dnf install openresty 即可。

对于 Fedora(官方仓库支持 Fedora 32 至 36):

sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://openresty.org/package/fedora/openresty.repo
sudo dnf install -y openresty

完整的 ARM64 支持发行版列表请参阅官方 Linux 包页面。

Alpine Linux

Alpine 使用 apk 而非 apt 或 dnf。首先,取消注释 /etc/apk/repositories 中的 community 行以启用 Alpine 的社区仓库:

https://mirror.leaseweb.com/alpine/v3.18/community

你的镜像 URL 和版本号可能不同。然后添加 OpenResty 仓库:

# 添加用于签署仓库的公钥
wget 'https://openresty.org/package/admin@openresty.com-5ea678a6.rsa.pub'
sudo mv 'admin@openresty.com-5ea678a6.rsa.pub' /etc/apk/keys/

# 添加仓库(将 MAJOR_VER 调整为你的 Alpine 版本)
. /etc/os-release
MAJOR_VER=$(echo $VERSION_ID | sed 's/\.[0-9]\+$//')

echo "https://openresty.org/package/alpine/v$MAJOR_VER/main" \
    | sudo tee -a /etc/apk/repositories

sudo apk update
sudo apk add openresty

可选包:openresty-resty(CLI REPL)、openresty-opm(Lua 模块管理器)和 openresty-restydoc(文档浏览器)。详情请参阅 Linux 包:Alpine。

macOS (Homebrew)

在 macOS 上,推荐通过 Homebrew 安装 OpenResty:

brew install openresty/brew/openresty

如果你之前从 homebrew/nginx 安装过 nginx,请先运行 brew untap homebrew/nginx。完整的 macOS 安装和源码编译说明请参阅官方安装页面。

源码编译

源码编译让你可以完全控制编译选项——自定义 nginx 模块、非默认安装前缀以及没有预编译包的平台。基本步骤如下:

tar -xvf openresty-VERSION.tar.gz
cd openresty-VERSION/
./configure -j2 --with-pcre-jit --with-ipv6
make -j2
sudo make install
export PATH=/usr/local/openresty/bin:$PATH

将 VERSION 替换为下载页面上的最新版本号。使用 ./configure --help 查看所有可用选项,包括用于第三方 nginx 模块的 --add-module=PATH。

请先安装编译依赖:

  • Debian / Ubuntu: sudo apt-get install libpcre3-dev libssl-dev perl make build-essential curl
  • RHEL / Fedora: sudo dnf install pcre-devel openssl-devel gcc curl zlib-devel

完整的源码编译指南——包括依赖管理、configure 选项和故障排除——请参阅官方安装文档。

验证安装

在任何平台上安装 OpenResty 后,运行以下检查以确认一切正常。本节适用于所有发行版——子指南会链接回此处,而不是重复相同的步骤。

检查版本

openresty -V

该命令会打印 OpenResty 版本、nginx 版本和已启用的模块。你应该看到以 nginx version: openresty/ 加已安装版本号开头的输出。

启动默认服务器

sudo systemctl start openresty    # 基于 systemd 的发行版
sudo openresty                    # Alpine 或手动安装

确认 nginx 工作进程正在运行:

ps aux | grep nginx

测试默认首页

curl 127.0.0.1/

成功的响应会显示 OpenResty 欢迎页面的 HTML。

安装可选工具

resty 命令行工具不在 openresty 包里,需要单独安装。在 Debian/Ubuntu 上,openresty 会把 openresty-opm 和 openresty-restydoc 作为推荐包一起装上,除非你像快速开始那样加了 --no-install-recommends。缺少的工具可以从同一仓库安装:

包名命令用途
openresty-restyresty -e 'print("Hello")'用于快速脚本编写的 Lua REPL
openresty-restydocrestydoc -s content_by_lua_file在终端中浏览 nginx/OpenResty 文档
openresty-opmopm get pintsized/lua-resty-http安装社区 Lua 模块

Debian/Ubuntu 示例:

sudo apt-get -y install openresty-resty openresty-restydoc openresty-opm
resty -e 'print("Hello Resty")'

RHEL 系列系统使用 dnf install,注意那里的 restydoc 在 openresty-doc 包中:sudo dnf install -y openresty-resty openresty-doc openresty-opm。Alpine 使用 apk add openresty-resty openresty-opm openresty-restydoc。

设置开机自启

sudo systemctl enable openresty

升级 OpenResty

将所有已安装的 OpenResty 包升级到最新版本:

Debian / Ubuntu:

sudo apt-get update
sudo apt-get --only-upgrade -y install 'openresty*'

RHEL / Rocky / Alma / CentOS:

sudo dnf check-update
sudo dnf upgrade 'openresty*'

Alpine:

sudo apk update
sudo apk upgrade openresty

常见问题

OpenResty 有什么用途?

OpenResty 将 nginx 变成一个可编程的应用服务器。开发者用它来构建高性能 Web API、反向代理、负载均衡器、WAF 和 CDN 边缘节点——所有这些都使用 Lua 脚本编写,并借助 LuaJIT 的接近原生的执行速度。Cloudflare 和淘宝等大型公司都在大规模使用 OpenResty。

OpenResty 和 Nginx 一样吗?

不一样。OpenResty 将经过补丁的 nginx 核心与 LuaJIT 以及数十个 Lua 库(lua-nginx-module、ngx_lua、lua-resty-*)打包在一起。你得到了 nginx 的事件驱动架构加上一个完整的脚本运行时。openresty 命令替代了 nginx,并且与标准 nginx 配置在 API 层面兼容。

OpenResty 支持哪些 Linux 发行版?

OpenResty 为 Ubuntu、Debian、CentOS、RHEL、Rocky Linux、AlmaLinux(使用 Rocky 仓库)、Fedora、Amazon Linux、Alpine、OpenSUSE、SUSE Linux Enterprise、Oracle Linux、CBL-Mariner 以及若干国产发行版(阿里云 Linux、TencentOS)提供官方预编译包。以上大多数发行版同时支持 x86_64 和 ARM64/aarch64 架构。完整的支持矩阵请参阅 Linux 包页面。Windows 的预编译包可以在下载页面获取。

安装后运行 OpenResty 报 “Illegal instruction” 怎么办?

x86_64 的官方二进制包要求 CPU 支持 SSE 4.2 指令集。在不支持 SSE 4.2 的老 CPU 上,运行时会报 Illegal instruction 错误。这种情况下,请在这台机器上从源码包编译 OpenResty——参见源码编译。

如何将 OpenResty 升级到最新版本?

运行包管理器的更新命令,范围限定到 OpenResty 相关的包。Debian/Ubuntu:sudo apt-get update && sudo apt-get --only-upgrade -y install 'openresty*'。RHEL 系列:sudo dnf upgrade 'openresty*'。Alpine:sudo apk upgrade openresty。源码编译的情况下,下载最新的 tarball 并重新执行 ./configure && make && sudo make install。

如果你觉得本指南有用,欢迎订阅本博客和我们的 YouTube 频道,获取更多 OpenResty 教程。

相关指南

关于作者

章亦春(GitHub handle: agentzh),是 OpenResty® 开源项目的创始人,也是 OpenResty Inc. 公司的 CEO。

章亦春是"开源技术"最早期的倡导者和领袖之一。他曾就职于多家国际知名科技公司,如 Cloudflare、Yahoo! 等。他是"边缘计算"、“动态追踪"和"机器编码"的先驱,拥有超过 22 年的编程经验和 16 年的开源经验。章亦春在开源领域以 OpenResty® 项目的领导者而闻名,该项目已被全球超过 4000 万个网站域名所采用。

OpenResty Inc. 是章亦春于 2017 年创立的企业软件初创公司,其客户包括世界上最大的一些公司。其旗舰产品 OpenResty XRay 是一款非侵入式的性能分析和故障排查工具,充分利用了动态追踪技术。而其 OpenResty Edge 产品是一款强大的分布式流量管理和私有 CDN 软件产品。

作为一名热心的开源贡献者,章亦春已为众多开源项目贡献了超过百万行代码,包括 Linux 内核、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等。他还编写了 60 多个开源软件库。