OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
介绍两个学习nginx+lua的教程:
agentzh 的 Nginx 教程
OpenResty 最佳实践
官方建议直接安装openresty,而对于已经安装nginx的用户,这里总结一下如何基于nginx基础之上增加lua模块。
下载luajit:
http://luajit.org/download.html
root@localhost [~] tar -zxvf LuaJIT-2.0.5.tar.gz
root@localhost [~] cd LuaJIT-2.0.5
root@localhost [~] make
root@localhost [~] make install
==== Successfully installed LuaJIT 2.0.5 to /usr/local ====
[root@iZ28w0fjfxvZ LuaJIT-2.0.5]# lua -v
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
下载NDK,NDK是一个Nginx模块,旨在扩展优秀Nginx网络服务器的核心功能,可以作为其他Nginx模块的基础。
它具有处理不原始的通用任务的功能和宏,具有通用代码作为核心分发的一部分。 NDK本身添加了从用户的角度来看的几个功能 - 它只是旨在帮助减少Nginx模块开发人员需要编写的代码
希望使用NDK中的任何功能的Nginx模块开发人员应该指定NDK是它们的模块的依赖,并且那些用户在编译自己的模块时也需要编译它。 他们还需要在自己的模块中声明他们希望使用的NDK的哪些功能(如下所述)。
地址:
https://github.com/simpl/ngx_devel_kit/tags
https://github.com/openresty/lua-nginx-module/releases
将文件放到src目录,确保安装nginx时,可以找到。
root@localhost [~] tar -zxvf v0.3.0.tar.gz
root@localhost [~] wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc8.tar.gz
root@localhost [~] tar -zxvf v0.10.9rc8.tar.gz
root@localhost [~] cp ngx_devel_kit-0.3.0 /usr/local/src/ngx_devel_kit-0.3.0 -R
root@localhost [~] cp lua-nginx-module-0.10.9rc8 /usr/local/src/lua-nginx-module-0.10.9rc8 -R
设置变量指向,不同操作系统可能目录有所差异,确认目录是否正确。
export LUAJIT_INC=/usr/local/include/luajit-2.0/
备份nginx conf目录。
进入nginx安装目录:
--prefix=/opt/app/nginx \
--sbin-path=/opt/app/nginx/sbin/nginx \
--conf-path=/opt/app/nginx/conf/nginx.conf \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-pcre \
--lock-path=/var/run/nginx.lock \
--pid-path=/var/run/nginx.pid \
--add-module=/usr/local/src/ngx_devel_kit-0.3.0 \
--add-module=/usr/local/src/lua-nginx-module-0.10.9rc8
root@localhost [~] make
root@localhost [~] make install
在nginx.conf中新增如下代码,并重启nginx服务,进行测试。
listen 8080;
location /lua {
set $test "hello, world.";
content_by_lua '
ngx.header.content_type = "text/plain";
ngx.say(ngx.var.test);
';
}
}
安装后执行./sbin/nginx -t确认是否成功。
如果出现错误:
error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
解决方案:
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
Leave a Reply