Nginx编译安装Lua

lua-nginx-module 模块可以将Lua的强大功能嵌入NGINX服务器。

下载Nginx源码

如果已安装Nginx,需要查看当前安装版本的编译参数:

$ /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.12.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=http://www.likecs.com/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-pcre

其中configure arguments这个参数是非常重要的,我们在后面安装Lua模块的时候,需要以这个为基础,增加新的参数。

如果还没有安装Nginx,上面可以忽略。

Nginx下载页面:

这里我们以 nginx/1.12.2 为例。需要获取源码:

$ cd /opt/ $ wget $ tar -zxvf nginx-1.12.2.tar.gz 安装lua-nginx-module

需要先安装LuaJIT,并依赖ngx_devel_kit。

安装LuaJIT

LuaJIT官网: 。

我们安装最新稳定版(截止到2018-12-23):

$ wget $ tar -zxvf LuaJIT-2.0.5.tar.gz $ cd LuaJIT-2.0.5 $ make install PREFIX=http://www.likecs.com/usr/local/LuaJIT

安装成功最后一行输出会提示:

==== Successfully installed LuaJIT 2.0.5 to /usr/local/LuaJIT ====

/etc/profile 文件末尾加入环境变量:

export LUAJIT_LIB=http://www.likecs.com/usr/local/LuaJIT/lib export LUAJIT_INC=http://www.likecs.com/usr/local/LuaJIT/include/luajit-2.0

然后:

$ source /etc/profile 安装ngx_devel_kit

项目地址:https://github.com/simplresty/ngx_devel_kit

下载并解压,不需要安装:

$ cd /opt/ $ wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.0.tar.gz $ tar zxvf v0.3.0.tar.gz $ ls | grep ngx_devel_kit ngx_devel_kit-0.3.0 安装lua-nginx-module

项目地址:https://github.com/openresty/lua-nginx-module

下载并解压,不需要安装:

$ cd /opt/ $ wget https://github.com/openresty/lua-nginx-module/archive/v0.10.13.tar.gz $ tar zxvf v0.10.13.tar.gz $ ls | grep lua-nginx lua-nginx-module-0.10.13 编译Nginx

需要安装pcre依赖库

$ yum install readline-devel pcre-devel openssl-devel

Nginx编译参数配置:

$ cd /opt/nginx-1.12.2/ $ ./configure --prefix=http://www.likecs.com/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-pcre --with-ld-opt=-Wl,-rpath,/usr/local/LuaJIT/lib --add-module=http://www.likecs.com/opt/ngx_devel_kit-0.3.0 --add-module=http://www.likecs.com/opt/lua-nginx-module-0.10.13

这里因为已经安装了Nginx,所以这里的参数是从Nginx -V的输出里获取的,并追加了新的参数:

--with-ld-opt=-Wl,-rpath,/usr/local/LuaJIT/lib --add-module=http://www.likecs.com/opt/ngx_devel_kit-0.3.0 --add-module=http://www.likecs.com/opt/lua-nginx-module-0.10.13

运行上面的./configure后进行编译安装:

$ make -j2 $ make install

make install后,会覆盖之前安装的Nginx。

测试lua-nginx-module

在/usr/local/nginx/conf/nginx.conf中server代码块里加入如下代码:

location /hello { default_type 'text/plain'; return 200 'hello echo!'; } location /hello_lua { default_type 'text/plain'; content_by_lua 'ngx.say("hello, lua!")'; }

注意:重新编译 Nginx 二进制,Nginx 需要停止重启。而普通配置更新则 reload 即可:

$ kill -QUIT `cat /usr/local/nginx/logs/nginx.pid` && /usr/local/nginx/sbin/nginx

如果支持service nginx restart,则可以这样重新启动:

$ service nginx restart && /usr/local/nginx/sbin/nginx -s reload

然后curl测试:

$ curl hello echo! $ curl hello, lua!

防盗版声明:本文系原创文章,发布于公众号飞鸿影的博客(fhyblog)及博客园,转载需作者同意。

编译动态模块

lua-nginx-module 支持以动态模块方式加载,详见: 。Nginx版本需要 >=1.9.11 。

$ cd /opt/nginx-1.12.2/ $ ./configure --prefix=http://www.likecs.com/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-pcre --with-ld-opt=-Wl,-rpath,/usr/local/LuaJIT/lib --add-dynamic-module=http://www.likecs.com/opt/ngx_devel_kit-0.3.0 --add-dynamic-module=http://www.likecs.com/opt/lua-nginx-module-0.10.13 $ make -j2 $ make install

相比静态编译,参数--add-module改成了--add-dynamic-module。

编译成功后,会把模块安装在nginx/modules/目录。查看:

$ ls /usr/local/nginx/modules/ ndk_http_module.so ngx_http_lua_module.so

接下来我们需要在nginx.conf配置中加入以下两行,实现动态调用模块:

load_module /usr/local/nginx/modules/ndk_http_module.so; load_module /usr/local/nginx/modules/ngx_http_lua_module.so;

注意:load_module指令不能放在 http{} 里面:

worker_processes 1; load_module xxx; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywwpp.html