Nginx 安装 ngx_lua_module 笔记


##这篇文章有点水

需要下载以下组件的源码。#Stable版的话当然是越新越好啰。
官方文档

  • Nginx
  • ngx_devel_kit
  • lua-nginx-module
  • LuaJIT

首先编译安装LuaJIT

照着文档

export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0

重要的一步

./configure --user=www --group=www --prefix=/usr/local/nginx \ --with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-ipv6 \
--with-http_sub_module \
--add-module=.../ngx_devel_kit \
--add-module=.../lua-nginx-module

重新编译Nginx

在nginx的配置上补充
// 没有用到其它扩展的话加不加也无所谓,真的?

# set search paths for pure Lua external libraries (';;' is the default path):
lua_package_path '/foo/bar/?.lua;/blah/?.lua;;';
 
# set search paths for Lua external libraries written in C (can also use ';;'):
lua_package_cpath '/bar/baz/?.so;/blah/blah/?.so;;';

我加上之后变成了 注意是加在了nginx.conf的http段

# set search paths for pure Lua external libraries (';;' is the default path):
lua_package_path '/foo/bar/?.lua;/blah/?.lua;/usr/local/share/lua/5.1/?.lua;;';

# set search paths for Lua external libraries written in C (can also use ';;'):
lua_package_cpath '/bar/baz/?.so;/blah/blah/?.so;/usr/local/share/lua/5.1/?.so;;';

加上测试

location /hello {
        default_type 'text/plain';
        content_by_lua 'ngx.say("LuaLuaLua!")';
}

如果有输出的话,说明Nginx已经得到Lua的助攻了。

不过在成功前我遇到一个问题,按照Nginx与Lua的说明成功解决。要是一开始就找到这篇博文的话就不会有这篇了。不过安装个啥的官方文档才是圣经,菊苣们的博客是新说,圣经新说两个都不能互相代替吧。

场景: 加上测试小程序后重启Nginx遇到

error while loading shared libraries: libluajit-5.1.so.2: cannot open shared

于是。

ldd /usr/local/nginx/sbin/ngxin

发现错误提示的 libluajit-5.1.so.2 ==> not found
解决方法

echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf

把所缺少的libluajit-5.1.so.2的路径告知ld,然后

ldconfig

Nginx启动时,就能根据ld的文件找到库的所在。

如果在content阶段通过content_by_lua_file
指定lua文件进行解析(这才是正解的做法)需要在server段加入,

lua_code_cache off

这样就不用每次都重启nginx。
重启nginx时会提示影响性能,在生产环境时注释掉这一行开启缓存。
如果安装的是openresty可以忽略本文。Nginx + ngx_lua_moudle + ... = openresty

标签: lnmp, ngx_lua_module, lua, luajit

已有 5 条评论

  1. 棒。刚好需要。

    1. 噫,本来给国赛弄的。

  2. 不错,路过看看。

  3. 大帝 大帝

    不建议手工lua_nginx_module和官方的插到一起去用,麻烦,而且总是缺这缺那。建议直接使用
    http://openresty.org/cn/download.html 作者自己定期发布手工打包的版本编译,各种常用和好用的模块都有了

  4. 嫌疑人X 嫌疑人X

    出题人你好啊

添加新评论