OpenResty -- Powered By Nginx & Lua

OpenResty是一个基于Nginx的高性能应用开发平台,通过集成Lua动态胶合语言和丰富的第三方模块,显著提升了应用性能和开发效率。它在阿里巴巴数据魔法项目中展现出了其强大能力,适合追求高性能和灵活性的小白鼠级开发者尝试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenResty是个有意思的项目,和Tengine有着很深的血缘关系。

Nginx的兴起引起无数关注,较简单的接口造就了大量第三方modules,以至于利用这些modules可以直接开发应用。OpenResty就是在Nginx上做了一些优化,并加入了许多的第三方modules的一个项目,由大牛agentzh维护着。

项目目的实际上是借助Nginx卓越的性能提升应用的性能,又由于使用Lua这类动态胶合语言,又使开发效率得到大大提升,可谓是鱼和熊掌可兼得之。

成熟度上taobao的数据魔法使用这类技术实现的。

如果你是个在浪潮之巅的小白鼠,建议尝试。

来两个links:

Nginx与Lua

由Lua 粘合的Nginx生态环境

转载于:https://www.cnblogs.com/eshizhan/archive/2013/01/17/2865424.html

cd /mnt/openresty-1.27.1.1/build/LuaJIT-2.1-20240815 && make TARGET_STRIP=@: CCDEBUG=-g XCFLAGS='-DLUAJIT_ENABLE_LUA52COMPAT' CC=cc PREFIX=/data/apps/or/luajit make[1]: 进入目录“/mnt/openresty-1.27.1.1/build/LuaJIT-2.1-20240815” ==== Building LuaJIT 2.1 ==== make -C src make[2]: 进入目录“/mnt/openresty-1.27.1.1/build/LuaJIT-2.1-20240815/src” make[2]: 对“default”无需做任何事。 make[2]: 离开目录“/mnt/openresty-1.27.1.1/build/LuaJIT-2.1-20240815/src” ==== Successfully built LuaJIT 2.1 ==== make[1]: 离开目录“/mnt/openresty-1.27.1.1/build/LuaJIT-2.1-20240815” cd /mnt/openresty-1.27.1.1/build/lua-cjson-2.1.0.14 && make DESTDIR= LUA_INCLUDE_DIR=/mnt/openresty-1.27.1.1/build/luajit-root/data/apps/or/luajit/include/luajit-2.1 LUA_CMODULE_DIR=/data/apps/or/lualib LUA_MODULE_DIR=/data/apps/or/lualib CJSON_CFLAGS="-g -fpic" CC=cc make[1]: 进入目录“/mnt/openresty-1.27.1.1/build/lua-cjson-2.1.0.14” make[1]: 对“all”无需做任何事。 make[1]: 离开目录“/mnt/openresty-1.27.1.1/build/lua-cjson-2.1.0.14” cd /mnt/openresty-1.27.1.1/build/lua-resty-signal-0.04 && make DESTDIR= LUA_INCLUDE_DIR=/mnt/openresty-1.27.1.1/build/luajit-root/data/apps/or/luajit/include/luajit-2.1 LUA_LIB_DIR=/data/apps/or/lualib CC=cc make[1]: 进入目录“/mnt/openresty-1.27.1.1/build/lua-resty-signal-0.04” make[1]: 对“all”无需做任何事。 make[1]: 离开目录“/mnt/openresty-1.27.1.1/build/lua-resty-signal-0.04” cd /mnt/openresty-1.27.1.1/build/lua-redis-parser-0.13 && make DESTDIR= LUA_INCLUDE_DIR=/mnt/openresty-1.27.1.1/build/luajit-root/data/apps/or/luajit/include/luajit-2.1 LUA_LIB_DIR=/data/apps/or/lualib CC=cc make[1]: 进入目录“/mnt/openresty-1.27.1.1/build/lua-redis-parser-0.13” make[1]: 对“all”无需做任何事。 make[1]: 离开目录“/mnt/openresty-1.27.1.1/build/lua-redis-parser-0.13” cd /mnt/openresty-1.27.1.1/build/lua-rds-parser-0.06 && make DESTDIR= LUA_INCLUDE_DIR=/mnt/openresty-1.27.1.1/build/luajit-root/data/apps/or/luajit/include/luajit-2.1 LUA_LIB_DIR=/data/apps/or/lualib CC=cc make[1]: 进入目录“/mnt/openresty-1.27.1.1/build/lua-rds-parser-0.06” make[1]: 对“all”无需做任何事。 make[1]: 离开目录“/mnt/openresty-1.27.1.1/build/lua-rds-parser-0.06” cd /mnt/openresty-1.27.1.1/build/nginx-1.27.1 && make make[1]: 进入目录“/mnt/openresty-1.27.1.1/build/nginx-1.27.1” make[1]: *** 没有指明目标并且找不到 makefile。 停止。 make[1]: 离开目录“/mnt/openresty-1.27.1.1/build/nginx-1.27.1” make: *** [all] 错误 2
04-09
<think>嗯,用户提供了一段编译OpenResty时的错误日志,看起来最后在编译nginx的时候失败了,提示“没有指明目标并且找不到 makefile”。我需要先理解整个过程发生了什么,然后找出问题所在。 首先,用户执行了一系列的make命令,首先是构建LuaJIT,然后是几个Lua库,比如lua-cjson、lua-resty-signal等,这些步骤都显示“无需做任何事”,说明之前可能已经成功编译过,或者依赖已经满足。问题出在最后进入nginx目录执行make时,提示找不到makefile,导致编译失败。 为什么会没有makefile呢?通常,在编译nginx之前,需要先运行configure脚本来生成Makefile。而OpenResty的构建流程应该是自动处理这些步骤的,但可能用户是手动执行了某些命令,或者构建过程中某个环节出错了。 查看用户的命令,他们可能是在尝试从源代码编译OpenResty。标准的OpenResty编译步骤通常是运行./configure然后make。但用户似乎是在分别进入各个子目录执行make,这可能导致nginx目录没有正确配置,因为nginx的configure步骤没有被执行。 另外,错误信息显示在nginx目录下执行make时,没有找到Makefile,这说明configure脚本没有被运行,或者运行失败。可能的原因包括: 1. 用户没有在nginx目录下运行configure脚本,导致Makefile不存在。 2. configure脚本运行失败,可能是依赖项缺失,比如PCRE、OpenSSL等库没有安装。 3. 权限问题,导致无法生成Makefile。 4. 源代码不完整或损坏,nginx目录中的文件缺失。 可能的解决方案是回到OpenResty的根目录,执行正确的构建流程,即先运行./configure,再执行make。如果用户是手动进入各个子目录编译,可能需要检查是否遗漏了nginx的配置步骤。 此外,用户提供的命令中,编译LuaJIT和其他库时指定了一些参数,比如PREFIX、LUA_INCLUDE_DIR等,这些可能在整体配置时也需要传递给OpenResty的configure脚本,以确保路径一致性。 总结来说,问题在于nginx的Makefile不存在,需要确保在编译nginx之前正确运行了configure脚本,并且所有依赖项都已安装。建议用户按照OpenResty的官方文档进行编译安装,而不是手动进入各个子目录执行make。</think>这段输出是OpenResty编译过程中出现的错误日志,以下分步骤说明问题原因及解决方案: ==== 错误分析 ==== 1. **LuaJIT编译成功**(关键日志): ``` ==== Successfully built LuaJIT 2.1 ==== ``` 表示LuaJIT基础组件已正确编译。 2. **Lua库跳过编译**: ``` make[1]: 对“all”无需做任何事。 ``` 说明lua-cjson/lua-resty-signal等组件之前已成功编译,本次未修改代码故跳过。 3. **Nginx编译失败**(核心问题): ``` make: *** 没有指明目标并且找不到 makefile。 停止。 ``` 直接原因是nginx-1.27.1目录下缺少Makefile文件。 ==== 根本原因 ==== $$ \text{未执行} \ ./configure \ \Rightarrow \ \text{未生成Makefile} $$ 需满足: $$ \exists \text{Makefile} \in \text{nginx源码目录} \ \land \ \text{configure参数正确} $$ ==== 解决方案 ==== 1. **清理构建环境**: ```bash cd /mnt/openresty-1.27.1.1 make clean ``` 2. **配置编译参数**(关键步骤): ```bash ./configure \ --prefix=/data/apps/or \ --with-luajit=/data/apps/or/luajit \ --add-module=../build/lua-resty-signal-0.04 \ # 补充其他必要模块参数 ``` 需确保包含所有第三方模块路径 3. **完整编译安装**: ```bash make && make install ``` ==== 注意事项 ==== 1. **依赖检查**: - 确认已安装pcre/zlib/openssl开发包 - 验证gcc版本兼容性 2. **环境变量**: ```bash export LD_LIBRARY_PATH=/data/apps/or/luajit/lib:$LD_LIBRARY_PATH ``` 3. **路径一致性**: 所有`--with-*`路径需与`PREFIX=/data/apps/or/luajit`保持一致 建议优先使用OpenResty官方标准编译流程,避免手动分段执行make命令导致环境不一致。若需定制编译参数,应通过顶层configure脚本统一配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值