nginx 添加 lua 支持

nginx上面一共需要安装3个东西:luajit,ngx_devel_kit,lua-nginx-module

1.下载安装LuaJIT-2.0.4.tar.gz,需配置环境变量

lua是一种解释语言,通过luajit可以即时编译lua代码到机器代码,得到很好的性能;

cd /data/soft/nginx

wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz

tar xzvf LuaJIT-2.0.4.tar.gz

cd LuaJIT-2.0.4

make install PREFIX=/usr/local/luajit

 
#添加环境变量!

export LUAJIT_LIB=/usr/local/luajit/lib

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

添加环境变量也可以这样:

vim /etc/profile

export LUAJIT_LIB=/home/soft/luajit/lib
export LUAJIT_INC=/home/soft/luajit/include/luajit-2.1

//实时生效
source /etc/profile

2.下载解压ngx_devel_kit,不需要安装

cd /data/soft/nginx

wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz

tar -xzvf v0.3.0.tar.gz

3.下载解压lua-nginx-module,不需要安装

cd /data/soft/nginx

wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz

tar -xzvf v0.10.9rc7.tar.gz

4.下载nginx,编译安装

nginx下载地址:http://nginx.org/download/

cd /data/soft/nginx

wget http://nginx.org/download/nginx-1.17.5.tar.gz

tar -xzvf nginx-1.17.5.tar.gz

然后

cd /data/soft/nginx/nginx-1.17.5

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-pcre --add-module=/data/soft/nginx/lua-nginx-module-0.10.9rc7 --add-module=/data/soft/nginx/ngx_devel_kit-0.3.0 --with-stream

make

make install

如果是在原有nginx上面加lua模块的话,记得只执行make就够了哦,不要执行make install,不然会覆盖原有的东西。

nginx -V 可查看已经编译的配置,安装过的模块。

再写一个验证lua模块的代码吧。

5.验证lua模块

vim /usr/local/nginx/conf/nginx.conf

###在server模块里面,随便找个地方添加下面的代码
location /lua {
            default_type 'text/plain';

            content_by_lua 'ngx.say("hello, lua")';
        }
        

curl 127.0.0.1:5580/lua

返回 hello,lua表示安装成功!

6.安装中可能出现的问题

1、error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

方法1:
执行下面的代码(注意前面的路径是你自己安装的luajit路径,正常安装跟我这个路径不一样哦)

ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

方法2:
执行下面的代码(同样还是注意前面的路径)

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

2、说resty.core模块找不到

这个问题到git上面看了 ,差不多是这个地方吧:https://github.com/openresty/lua-nginx-module/issues/1509
就是在nginx.conf 中的 http{}模块中加入下面这行代码:

lua_load_resty_core off;

3、让我不要用这个luajit版本,可以用openresty提供的luajit优化版本,或者干脆直接用openresty

nginx: [alert] detected a LuaJIT version which is not OpenResty's; many optimizations will be disabled and performance will be compromised (see https://github.com/openresty/luajit2 for OpenResty's LuaJIT or, even better, consider using the OpenResty releases from https://openresty.org/en/download.html)

先卸载原有luagit

cd /data/soft/nginx/LuaJIT-2.0.4
make uninstall

然后从https://github.com/openresty/luajit2下载安装

git clone https://github.com/openresty/luajit2
cd luajit2
make && make install

剩下的步骤跟一开始装luajit是一样的。具体的看自己的目录写。

然后重新编译nginx。

 

注意:

安装lua支持之后的nginx 和 openresty 还是有差别的,openresty 做了优化并支持更多功能,建议直接使用openresty !

转自:

https://blog.csdn.net/qq_27156945/article/details/104019069?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

posted on 2021-09-10 09:47  TrustNature  阅读(1476)  评论(0编辑  收藏  举报