安装OpenResty相关模块
OpenResty是基于Lua即时编译器(LuaJIT)对Nginx进行扩展的模块——最核心的就是lua-nginx-module
这个模块。其他的都是OpenResty基于lua开发的相关模块,当然也可以基于lua开发自己的第三方模块。
所以要想使用OpenResty首先必须安装lua-nginx-module
。
下载并安装LuaJIT。可以使用源码方式安装,这个可以参考官方文档非常详细。这里为了方便直接用apt安装了
1
sudo apt install luajit libluajit-5.1-dev
下载
ngx_devel_kit
模块1
2
3
4
5
6# 在nginx目录下创建一个modules目录
mkdir modules
# 从github克隆模块代码
git clone https://github.com/vision5/ngx_devel_kit/ modules/ngx_devel_kit
# 切换到v0.3.1版本
git checkout tags/v0.3.1 -b v0.3.1下载
lua-nginx-module
模块1
2git clone https://github.com/openresty/lua-nginx-module modules/ngx_http_lua_module
git checkout tags/v0.10.20 -b v0.10.20如果是使用alibaba/tengine,这个模块已经被包含在tengine的
modules/ngx_http_lua_module
目录下了。另外注意lua-nginx-module与nginx的兼容性,nginx1.6.0之前的版本是不支持的。
编译nginx源码
如果需要对nginx进行debug的话,需要修改 /auto/cc/conf 文件,将
ngx_compile_opt="-c"
修改为ngx_compile_opt="-c -g"
-g
用来生成调试信息:详见gcc文档设置luajit的头文件和静态库的路径,ubuntu下可以用dpkg看看libluajit被安装到哪个目录了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22$ dpkg -L libluajit-5.1-dev
/.
/usr
/usr/include
/usr/include/luajit-2.1
/usr/include/luajit-2.1/lauxlib.h
/usr/include/luajit-2.1/lua.h
/usr/include/luajit-2.1/lua.hpp
/usr/include/luajit-2.1/luaconf.h
/usr/include/luajit-2.1/luajit.h
/usr/include/luajit-2.1/lualib.h
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libluajit-5.1.a
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/luajit.pc
/usr/share
/usr/share/doc
/usr/share/doc/libluajit-5.1-dev
/usr/share/doc/libluajit-5.1-dev/copyright
/usr/lib/x86_64-linux-gnu/libluajit-5.1.so
/usr/share/doc/libluajit-5.1-dev/changelog.Debian.gz然后设置两个环境变量
1
2export LUAJIT_LIB=/usr/lib/x86_64-linux-gnu/
export LUAJIT_INC=/usr/include/luajit-2.1/执行
auto/configure
1
2
3
4auto/configure --prefix=nginx \
--with-ld-opt="-Wl,-rpath,/usr/lib/x86_64-linux-gnu/" \
--add-module=./modules/ngx_devel_kit \
--add-module=./modules/ngx_http_lua_module执行
make install
编译过程可能会比较慢,可以执行
make -j2 && make install
调大编译任务的个数
调试OpenResty中的lua代码
这里以一个第三方的lua模板引擎为例——lua-resty-template
安装lua模块
1 | # 在nginx下创建一个放lua脚本的目录 |
在nginx.conf
中对lua模块进行配置
1 | http { |
在html/templates
目录下添加模板文件
1 |
|
访问localhost/templates/view.html
,能看到下面的结果
Read More:
https://www.lua.org/pil/23.html
http://lua-users.org/wiki/DebuggingLuaCode
http://notebook.kulchenko.com/zerobrane/debugging-openresty-nginx-lua-scripts-with-zerobrane-studio