最稳妥的安装方式是直接用 yum 或 apt 安装 openresty 官方仓库包,可避免依赖冲突、路径混乱和权限错乱;centos 上需先装 yum-utils,再添加阿里云镜像仓库并执行 sudo yum install -y openresty,验证命令为 /usr/local/openresty/nginx/sbin/nginx -v。

直接用 yum 或 apt 安装 OpenResty 是最稳妥的选择,源码编译只在需要自定义模块或调试底层时才值得投入时间。
CentOS/RHEL 上用 yum 安装 OpenResty
官方仓库安装省去依赖冲突、路径混乱、权限错乱三类高频问题。关键不是“能不能装”,而是“装完能不能立刻跑起来”。
- 先装
yum-utils(如果没装):sudo yum install -y yum-utils - 加仓库(国内建议用阿里云镜像):
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/openresty/yum/openresty.repo - 执行安装:
sudo yum install -y openresty—— 这一步会自动拉取pcre-devel、openssl-devel等运行时必需的库,不用单独装 - 验证是否装对:
/usr/local/openresty/nginx/sbin/nginx -v,输出应含openresty字样,而非纯nginx
注意:不要手动 ./configure && make && make install,除非你明确要关掉 http_ssl_module 或启用非标准 LuaJIT 版本。默认 yum 包已开启所有常用模块,包括 resty.http、resty.redis。
Ubuntu/Debian 上 apt 安装要点
APT 安装和 CentOS 逻辑一致,但 GPG 密钥和仓库地址写法不同,错一个字符就报 NO_PUBKEY 或 404 Not Found。
- 导入密钥必须用
gpg --dearmor转换格式:wget -O - https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/openresty.gpg - 仓库地址中
$(lsb_release -sc)必须能正确展开,比如 Ubuntu 22.04 返回jammy;若命令失效,可手动替换成对应代号 - 安装后检查二进制路径:
/usr/bin/openresty是软链,实际指向/usr/local/openresty/nginx/sbin/nginx,别误以为没装上
如果你看到 command not found: openresty,大概率是 PATH 没生效,而不是安装失败 —— 直接调用全路径更可靠。
Python Linux版 为 Python.org 官方提供的 Python 3.14.6 Linux/Unix 源码包,适合在Linux/Unix环境中安装、运行 Python 代码并学习函数、模块和脚本开发。
启动前必须改的配置项
OpenResty 默认不监听 80 端口,也不加载任何 Lua 逻辑,开箱即用 ≠ 开箱即跑。最常卡住的地方是配置文件位置和用户权限。
- 主配置文件默认在
/usr/local/openresty/nginx/conf/nginx.conf,不是/etc/nginx/nginx.conf(那是系统 nginx 的) - 启动时若报
bind() to 0.0.0.0:80 failed (13: Permission denied),说明没加user root;—— OpenResty 默认以 nobody 启动,而 nobody 无法绑定 80 - 想让 Lua 脚本生效,必须在
location块里显式声明处理器,例如:content_by_lua_block { ngx.say("OK") },光写lua_code_cache off;不会触发执行
别急着写复杂逻辑,先用 curl http://localhost 能返回 “Welcome to OpenResty!” 就说明服务起来了 —— 这个页面由 /usr/local/openresty/nginx/html/index.html 提供,和 Lua 无关。
OPM 和 resty 命令不是必需品
openresty-opm 和 openresty-resty 是锦上添花工具,90% 的日常开发用不到。强行装反而容易引发版本错配。
-
opm只管理lualib/resty/下的第三方模块,内置模块如resty.core、resty.lrucache不走 OPM -
resty命令本质是带预设参数的luajit,用于快速测试 Lua 片段,但不能替代真实 Nginx 请求上下文(比如没有ngx.var、ngx.req) - 真正要调试 Lua 行为,应该用
error_log /path/to/log debug;+ngx.log(ngx.DEBUG, ...),而不是依赖resty的模拟环境
初学者最容易陷入“先配好 OPM 再写代码”的误区,结果花两小时解决 GPG 错误,却连第一行 ngx.say 都没跑通。把 nginx -t && nginx 跑通,比任何包管理都重要。










