Apache需编译时启用--enable-lua并指定--with-lua路径,安装后通过LoadModule加载mod_lua.so,配置LuaHandler指向handle函数方可运行Lua脚本。

Apache 本身不内置 Lua 支持,要让它运行 Lua 脚本,必须在编译时显式集成 mod_lua 模块。这不同于 Nginx 的 ngx_lua(需搭配 OpenResty),Apache 的 Lua 支持是通过官方模块 mod_lua 实现的,属于 Apache 2.4+ 的标准可选模块,但默认不启用。
确认系统环境与依赖
编译前确保已安装:
- Lua 解释器开发包(如
liblua5.4-dev或lua-devel,具体名称依发行版而定) - Apache 源码(推荐 2.4.59 或更高稳定版)
- 编译工具链:
gcc、make、autoconf、libtool - Perl(用于构建脚本,部分版本必需)
下载并解压 Apache 源码
从 httpd.apache.org 获取源码包(如 httpd-2.4.59.tar.gz),解压后进入目录:
tar -xzf httpd-2.4.59.tar.gz<br>cd httpd-2.4.59
配置编译选项启用 mod_lua
关键是在 ./configure 中指定 --enable-lua,并确保指向正确的 Lua 安装路径(若 Lua 不在标准位置):
./configure \<br> --prefix=/usr/local/apache2 \<br> --enable-so \<br> --enable-lua \<br> --with-lua=/usr \<br> --enable-rewrite \<br> --enable-ssl
说明:
-
--enable-lua:启用mod_lua模块编译(必须) -
--with-lua=/usr:指定 Lua 安装根路径(根据lua-config --prefix输出调整) -
--enable-so:必须开启,否则无法加载动态模块
编译与安装
执行标准流程:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
make -j$(nproc)<br>sudo make install
安装完成后,检查模块是否就位:
/usr/local/apache2/bin/httpd -M | grep lua
应看到类似 lua_module (shared) 输出,表示模块已成功编译为动态库。
启用并验证 Lua 支持
编辑 /usr/local/apache2/conf/httpd.conf,确保包含:
LoadModule lua_module modules/mod_lua.so<br><br><IfModule lua_module><br> LuaRoot /usr/local/apache2/lua/<br></IfModule>
创建测试脚本 /usr/local/apache2/lua/hello.lua:
function handle(r)<br> r:puts("Hello from mod_lua!")<br> r.status = 200<br>end
在虚拟主机或主配置中添加:
<Location "/hello"><br> SetHandler lua-script<br> LuaHandler hello<br></Location>
重启 Apache 并访问 http://localhost/hello,返回文本即表示 Lua 运行正常。

















