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) 编辑 收藏 举报